同じIPアドレスで2つのゲートウェイを使用するには?

同じIPアドレスで2つのゲートウェイを使用するには?

NATを設定し、Linuxシステムに接続されている2つのゲートウェイ間でインターネットトラフィックを手動で分割する必要がありました。

各ゲートウェイに特定のIPアドレスがある場合は問題ありません。次の方法でこれを行うことができますiproute2

ip route add default via 192.168.1.1 dev eth1
ip route add 2.3.4.5 via 192.168.0.1 dev eth0
ip route add 8.9.4.5 via 192.168.0.1 dev eth0

しかし、私の問題はとても簡単です!ゲートウェイアドレスとネットワークIDを変更する権限がありません。カーネルバージョン3.2.0以降がインストールされているLinuxシステムでは、同じアドレスを持つ2つのインターネットゲートウェイを使用する必要があります。

                                                        +-----------+
                                                        | Gateway A |
                          +-----------------------+     |192.168.0.1|
                          |                   eth0+---->+-----------+
           +--------------+eth2   Linux Box       |
           |              |                   eth1+---->+-----------+
           |              +-----------------------+     | Gateway A |
           |                                            |192.168.0.1|
           |                                            +-----------+
  +--------+-----------+
  |  Private Network   |--------> Workstation A
  |                    |
  |    10.0.0.0/24     |--------> Workstation B
  +--------------------+

Linuxの素晴らしいネットワーキングツール(または他のツール)を使用してこのmangling問題をどのように解決できますかsnat

答え1

ついに私はそれを得た。数回試した後、この場合、Linuxカーネルに問題がないことがわかりました。それがうまくいく方法は魅力的です!このiproute2ルールとルーティングを介して:

eth0: 192.168.0.231/24 --> ゲートウェイ A: dwl2100ap

eth1: 192.168.0.230/24 --> ゲートウェイ B: dwlg132

構成インターフェース:

ip addr add 192.168.0.231/24 dev eth0
ip addr add 192.168.0.230/24 dev eth1

2つのルーティングテーブルを追加します。

echo "1       dwl2100ap" >> /etc/iproute2/rt_tables
echo "2       dwlg132" >> /etc/iproute2/rt_tables

テーブルにパスを追加します。

ip route add 192.168.0.0/24 dev eth0 src 192.168.0.231 table dwl2100ap
ip route add default via 192.168.0.1 dev eth0 table dwl2100ap

ip route add 192.168.0.0/24 dev eth1 src 192.168.0.230 table dwlg132
ip route add default via 192.168.0.1 dev eth1 table dwlg132

次に、ルーティングルールを設定します。これは実際にルーティングに使用するルーティングテーブルを選択します。そのソースアドレスがすでに存在する場合は、指定されたインターフェイスからルーティングされていることを確認する必要があります。

ip rule add from 192.168.0.231 table dwl2100ap
ip rule add from 192.168.0.230 table dwlg132

発信するすべてのパケットを偽装します。

iptables -tnat -APOSTROUTING -s10.0.0.0/24 -j MASQUERADE

カーネルが帯域幅を分割できるように、次のパスを実行できます。

ip route add default scope global nexthop via 192.168.0.1 dev eth0 weight 2 nexthop via 192.168.0.1 dev eth1 weight 1

手動ルーティング:

ip route add default via 192.168.0.1 dev eth0
ip route add 8.8.8.8 via 192.168.0.1 dev eth0
ip route add 8.8.4.4 via 192.168.0.1 dev eth1

編集1:

また、iptablesを介していくつかのパケットを表示することができます。

iptables -tmangle -APREROUTING -i eth2 -s 10.0.0.4 -jMARK --set-mark 4

次に、ルーティングポリシーを介してルーティングします。

ip rule add fwmark 4 table dwl2100ap

同じIPアドレスを持つ2つのゲートウェイで動作するかどうかを知りたいです。カーネル3.2.0-53から。

関連情報