
これを実行するために、iptables を備えた Linux サーバーを構成することは可能ですか?
PC (192.168.1.11) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.12) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
PC (192.168.1.13) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router1 (192.168.0.1)
...
PC (192.168.1.21) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.22) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
PC (192.168.1.23) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router2 (192.168.0.2)
...
PC (192.168.1.31) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.32) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
PC (192.168.1.33) ===> (192.168.1.1) Linux Server (192.168.0.100) ===> Router3 (192.168.0.3)
...
答え1
iptablesルーティング用のツールではありません。パケットをマークすることでルーティング構成を補完するために使用されることもありますが、ここでは必要ありません。
必要なのはポリシーベースルーティング: 宛先アドレス以外のもの、つまり送信元アドレスを使用してルートを選択します。
以下を前提とするか、または述べます:
- Linuxサーバーはサーバ
- 9台のPCすべてサーバ3台のルータはすでにOPの回路図に従って設定されている
- 特にPCには特別な設定は必要ありません。サーバデフォルトゲートウェイとして。
- OPの回路図のすべてのアドレスは/24を使用していますCIDR/ネットマスク。
- サーバ用途:
- eth0アドレス 192.168.1.1/24
- eth1アドレス 192.168.0.100/24
- サーバデフォルト ゲートウェイが存在するかどうかは問題ではありません。ポリシー ルーティングでは、転送されるトラフィックに対して独自の個別の設定が使用されるため、メイン ルーティング テーブルのデフォルト ゲートウェイに依存しません。
まだ行われていない場合は、3つのルータが192.168.1.0/24に到達するための追加のルートが必要になります。サーバゲートウェイとして。LAN 192.168.0.0/24 にアクセスするシステムでも同じことが必要になります。Linux を実行している場合は、3 台のルーターまたは他のシステムで次のように実行します。
ip route add 192.168.1.0/24 via 192.168.0.100
編集: として後で尋ねられた192.168.0.0/24 LAN内の他のシステムを再構成することが許可されていない場合、サーバサーバーで NAT を使用すると、3 つのルーターを含むシステムに対して 192.168.1.0/24 の存在を隠すことができます。これはルーティング フェーズの外部で実行されるため、以下のルーティング構成の残りの部分とは独立しています。
したがって、ルータ(または他のシステム)で上記の操作を行う代わりに、iptables MASQUERADE
ターゲットオンサーバ:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE
今サーバ3 つの追加ルーティング テーブルに到達するための 3 つの代替ルール グループが作成されます。選択されたルータごとに 1 つずつ、このルータがデフォルト ゲートウェイになります。デフォルト ゲートウェイは 1 つしか存在できないというのは正しいのですが、ルーティング テーブルごとに 1 つしかありません。
PC の IP アドレスはブロック順に並べられていないため、3x3 ルールが使用されます (IP ブロックが正しく整列されている場合、適切な CIDR/ネットマスクがあれば 3 つのルールで十分です)。
説明ip rule(8)
:
状況によっては、宛先アドレスだけでなく、送信元アドレス、IP プロトコル、トランスポート プロトコル ポート、パケット ペイロードなどの他のパケット フィールドに応じてパケットを異なる方法でルーティングする必要があります。このタスクは「ポリシー ルーティング」と呼ばれます。
[...]
各ポリシー ルーティング ルールは、セレクターとアクション述語で構成されます。
この場合、セレクタはPCの送信元アドレスを選択し、追加のルーティングテーブルを検索して、通常の検索を上書きします。主要専用ゲートウェイを選択するための表。
ルーティング ルール (PC の IP アドレスが適切なブロックに揃えば、最大 3 つのルールまで簡素化できます)。
ip rule add from 192.168.1.11 lookup 10
ip rule add from 192.168.1.12 lookup 10
ip rule add from 192.168.1.13 lookup 10
ip rule add from 192.168.1.21 lookup 20
ip rule add from 192.168.1.22 lookup 20
ip rule add from 192.168.1.23 lookup 20
ip rule add from 192.168.1.31 lookup 30
ip rule add from 192.168.1.32 lookup 30
ip rule add from 192.168.1.33 lookup 30
説明ip route(8)
:
ルートテーブル: Linux-2.x は、1 から 2^32-1 までの範囲の番号またはファイル /etc/iproute2/rt_tables の名前で識別される複数のルーティング テーブルにルートをパックできます。デフォルトでは、すべての通常のルートはメイン テーブル (ID 254) に挿入され、カーネルはルートを計算するときにのみこのテーブルを使用します。[...]
追加のルーティング テーブルに任意の値 10、20、30 を入力します。各ルーティング テーブルは、解決する問題に適したルーティングの部分的なビューを 1 つ処理します。ここでは、異なるゲートウェイを選択します。
ip route add default via 192.168.0.1 dev eth1 table 10
ip route add default via 192.168.0.2 dev eth1 table 20
ip route add default via 192.168.0.3 dev eth1 table 30
PC が 192.168.0.0/24 内の他のシステムにアクセスする必要がある場合は、次の LAN ルートを追加する必要があります (ルーターを介した部分的なヘアピンを回避するため、これは決して良い考えではありません)。
ip route add 192.168.0.0/24 dev eth1 table 10
ip route add 192.168.0.0/24 dev eth1 table 20
ip route add 192.168.0.0/24 dev eth1 table 30
結果を確認するサーバとip route get
:
root@server:~# ip route get from 192.168.1.11 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.11 via 192.168.0.1 dev eth1 table 10
cache iif eth0
root@server:~# ip route get from 192.168.1.21 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.21 via 192.168.0.2 dev eth1 table 20
cache iif eth0
root@server:~# ip route get from 192.168.1.31 iif eth0 to 8.8.8.8
8.8.8.8 from 192.168.1.31 via 192.168.0.3 dev eth1 table 30
cache iif eth0
192.168.1.0/24 LAN内の他のシステムは、主要ポリシーベースルーティングのないルーティングテーブル。例えば、サーバデフォルトルートがない主要テーブルに 2 つの LAN ルートのみが含まれている場合、192.168.0.0/24 LAN を超えてルーティングされるものは他にはありません。
root@server:~# ip route get from 192.168.1.41 iif eth0 to 8.8.8.8
RTNETLINK answers: Network is unreachable
ノート
たとえば、3 台のルーターは、NAT を実行し、それぞれ 1 つの異なるパブリック IP アドレス (おそらく異なる ISP を使用) を使用して安価なセットアップでインターネットにアクセスするインターネット ゲートウェイである可能性があり、インターネット上で 3 つの異なるパブリック IP アドレスを持つ 3 つの PC グループが表示されます。
上記の設定は、ネットワークを構成するツールと統合する必要があります。サーバディストリビューションに応じて、このようなツールは多数あります。アップダウン、ネットワーク管理者、システムdネットワーク、ネットプランおそらく他にも、それぞれ固有の設定方法を持つものがたくさんあります。代わりに、上記のコマンドを使用してスクリプトを使用することももちろん可能です。