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から。