2つのネットワークカードルーティング

2つのネットワークカードルーティング

パブリック IP を持つネットワーク カードが 2 枚あります。2 つのサービスを実行しています。接続をルーティングするにはどうすればよいでしょうか。

現時点では、インターネットからは両方とも ping 可能ですが、機能しているのは 1 つのインターフェース IP のみです。

私のルーティング テーブルは現在次のようになっています:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.128.1    0.0.0.0         UG    0      0        0 eth1
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.31.128.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.31.129.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

それで、それが機能するためには何を追加すればよいのでしょうか?

今のところ、eth1 は問題なく動作しています。

答え1

インターフェース名と「iproute2」のタグから、Linux であると想定しています。


これは機能しません。デフォルト ルートを指定するだけでは、他のインターフェイスから送信された要求に対する応答であっても、すべての送信トラフィックがそのインターフェイスを通過することになるからです。

あなたの場合、パブリック IP があると言っていますが、直接接続された 2 つのインターフェイスはプライベート IP アドレスであるため、NAT が動作していると考えられます。NAT を使用する場合は、受信パケットと送信パケットが異なるパスを取るこのタイプの三角形ルーティングは使用できません。これは、パケットが NAT ボックスによって受信時に変更されており、送信時にも同様に変更する必要があるためです。要求元のクライアントは、予期しない IP アドレスからパケットを受信することになり、応答を認識しません。

必要なのは、172.31.128.0/24 のインターフェースから発信され、インターネットに向かう IP アドレスを持つすべてのパケットが、172.31.128.1 のゲートウェイに到達する必要があり、同様に 172.31.129.0/24 サブネットにも到達する必要があることをオペレーティング システムに指示することです。

これは次のように実現できます。

ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1
ip route add default via 172.31.129.1 table T1
ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2
ip route add default via 172.31.128.1 table T2
ip rule add from 172.31.129.XXX table T1
ip rule add from 172.31.128.XXX table T2

XXX を、ローカル サブネット上のサーバーの IP アドレスに置き換える必要があります。

これで準備は完了です。このトピックの詳細については、Linux Advanced Routing & Traffic Control HOWTO のセクション 4.2

関連情報