インターフェイス2、アドレス2、ゲートウェイ2?

インターフェイス2、アドレス2、ゲートウェイ2?

パブリックアドレスの範囲にあり(最初のインターフェイスはNATを介して行われますが)、異なるIPアドレスを持つ2つのネットワークインターフェイスを持つシステムがあり、どちらも異なるゲートウェイを持っています。 (長い物語、単にテスト用)

問題は、2番目のインターフェイスでアドレスをpingしようとすると、デフォルトパスが最初のインターフェイスを介して指定され、正しく到着しないことです。

応答が常に着信するのと同じネットワークインタフェースを通過することを保証できますか(そして同じ送信元IPを持っています)?それでは、どうすればいいですか?

答え1

あなたは質問を誤解しました。すべてのパケットが応答ではなく、すべてのパケットが「入ってくる同じネットワークインタフェース」などの他のパケットと一致するわけではありません。あなたがすることは、ソースIPアドレスに基づいてパケットのゲートウェイを選択することです。

これをソースベースのルーティングまたはポリシールーティングと呼びます。あなたはそれを使用することができます簡単なiptablesルールしかし、最善の方法は、各パブリックソースアドレスに対して1つずつ2つのルーティングテーブルを設定することです。

まず、2つのテーブルを作成します(<NAME1>と<NAME2>をIP1、DEV1などの2つのプロバイダの適切な名前に置き換えます)。

echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables

各ルーティングテーブルにゲートウェイを追加します(必要な場合)。

ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>

その後、デフォルトパスは次のようになります。

ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>

次に、ソースアドレスに基づいてルーティングテーブルのルールを選択します。

ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>

バラより複数のアップリンク/サプライヤーへのルーティング詳細については。

答え2

David Schwartzの答えは非常に優れていますが、追加のテーブルを使用して他のテーブルへのデフォルトパスを使用すると、ルーティングルールを少し簡素化できます。 2 つの NAT ゲートウェイの背後にサーバーがあり、最近、複数の仮想マシン間でこのシナリオを再現するプロセスが行われました。私の/etc/network/interfaces外観は次のとおりです。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.13.13
    netmask 255.255.255.0
    up ip route add table optus default via 192.168.13.10
    up ip rule add from 192.168.13.213 table optus
    up ip route add default via 192.168.13.11

auto eth0:0
iface eth0:0 inet static
    address 192.168.13.213
    netmask 255.255.255.0

(これはOptusとiiNetという2つのISPの設定なので、テーブル名は「optus」です。)

/etc/iproute2/rt_tablesここにテーブルを作成する行を追加するだけです。 2つのIPアドレスがあります。 192.168.13.13 のトラフィックは 192.168.13.11 を通過し、192.168.13.213 のトラフィックは 192.168.13.10 を通過します。両方のゲートウェイはポート転送を適切に設定し(192.168.13.11はコンテンツを192.168.13.13に転送し、192.168.13.10はコンテンツを192.168.13.213に転送し、残りは独自に処理する必要があります)。

正規のIPを直接使用するため、状況によっては若干の調整が必要になる場合がありますが、これはまだ機能します。さらに/etc/network/interfaces、2年後にシステムを再起動する必要があるときにどのように設定されたかを覚えておくよりも、そこでこれらのタスクを実行してからgitからファイルを管理する方がはるかに簡単です!

答え3

デュアルネットワークの例

eth1この例では、接続されたデバイスにバインドされたサービスの10.130.0.2ネットマスク255.255.255.255とゲートウェイを提供する方法を示します。10.130.0.1ping -I eth1 8.8.8.8

技術的に私達は:

  • より大きな指標でゲートウェイを追加
  • 表 100 追加/使用および設定
  • eth1 経由で eth1 からトラフィックをルーティングするルールを追加します。
ip addr add 10.130.0.2/32 broadcast 10.130.0.2 dev eth1
ip link set eth1 up
ip route add 10.130.0.1 src 10.130.0.2 dev eth1
ip route add 10.130.0.1 src 10.130.0.2 dev eth1 table 100
ip route add default via 10.130.0.1 dev eth1 metric 10
ip route add default via 10.130.0.1 dev eth1 table 100
ip rule add from 10.130.0.2/32 table 100
ip rule add to 10.130.0.2/32 table 100
curl --interface eth1 ifconfig.co
curl --interface eth0 ifconfig.co
ping -I eth1 8.8.8.8

関連情報