2つのネットワークと3つのゲートウェイに2つのインターフェースを持つホストのためのエレガントなiproute2ソリューションを探しています。

2つのネットワークと3つのゲートウェイに2つのインターフェースを持つホストのためのエレガントなiproute2ソリューションを探しています。

eth0に192.168.0.2/24が割り当てられ、eth1に172.16.0.2/24が割り当てられたLinux Webサーバーがあります。私がそれを変える方法はありません。これまでのパスは次のとおりです。

172.16.0.0/24 dev eth1 proto kernel scope link src 172.16.0.2
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.2
172.16.0.0/16 via 172.16.0.1 dev eth1
default via 192.168.0.1 dev eth0

デフォルトのパスは、コンピュータがコンテンツをダウンロードするためにアクセスする必要があるインターネットに接続されます。 172.16.0.254を介してインターネットからの着信パケット(要求)もあります。これらの要求に応答するには、ルーティングテーブルとルールをどのように設定する必要がありますか?iptablesここでは不可能です。

更新:これはうまくいくようですが、私にとってはエレガントには見えません。

ip r a 172.16.0.0/24 dev eth1 table 10
ip r a 172.16.0.0/16 via 10.16.0.1 t 10
ip r a default via 172.16.0.254 t 10
ip rule add from 172.16.0.2 t 10

ベストアンサー1

これは単純なソースベースのルーティングと呼ばれ、LARTC HOWTOで説明されています。

http://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.simple.html

元のルーティングテーブル(デフォルトゲートウェイなし)の内容をコピーして貼り付けるのが適切でないと思われる場合は、これを行う必要はなく、次の簡単なスクリプトを使用できます。

ip route flush table 10
ip route show table main | grep -v ^default | while read ROUTE; do ip route add table 10 $ROUTE; done
ip route add table 10 default via 172.16.0.254
ip rule add from 172.16.0.2 table 10
ip route flush cache

おすすめ記事