私は 2 つの NIC を備えた Linux ボックスを持っています:
eth0 192.168.11.14
eth1 192.168.12.14
私のルーティングテーブルは次のとおりです。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.11.1 0.0.0.0 UG 100 0 0 eth0
192.168.11.0 * 255.255.255.0 U 0 0 0 eth0
192.168.12.0 * 255.255.255.0 U 0 0 0 eth1
デフォルト ルート (eth0 経由) は正常に動作しますが、eth1 インターフェイスに問題があります。eth1 のデフォルト ゲートウェイを次のように設定しました。
#ip rule list
0: from all lookup local
32765: from 192.168.12.14 iif eth1 lookup tbl_eth1
32766: from all lookup main
32767: from all lookup default
#ip route show table tbl_eth1
default via 192.168.12.1 dev eth1
Linux ボックスは、3 つのサブネットをルーティングするレイヤー 3 スイッチに接続されています。
192.168.1.0 interface ip 192.168.1.1
192.168.11.0 interface ip 192.168.11.1
192.168.12.0 interface ip 192.168.12.1
最初のサブネット上のアドレスから、すべてのインターフェースに ping を実行できます。
問題は、192.168.1.0 サブネットから 192.168.12.14 にアクセスしようとしたとき、またはその逆のときに発生します。
トレースルートの結果は次のとおりです。
#traceroute 192.168.12.14
traceroute to 192.168.12.14 (192.168.12.14), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.532 ms 0.911 ms 1.074 ms
2 * * *
3 * * *
4 * * *
etc..
# traceroute -i eth1 -s 192.168.12.14 192.168.1.51
traceroute to 192.168.1.51 (192.168.1.51), 30 hops max, 60 byte packets
1 192.168.12.1 (192.168.12.1) 1.196 ms 1.559 ms 1.739 ms
2 * * *
3 * * *
4 * * *
etc..
ここで本当に奇妙なことが起こります。tshark を使用すると、各ケースで traceroute パケットがそれぞれの宛先に到着するのを実際に確認できます。これは、発信パスと戻りパスの両方が正しくルーティングされていることを示しています。しかし、ping と traceroute の両方が失敗する理由がどうしてもわかりません。
Linux ボックスで eth1 をデフォルト ゲートウェイにすると正常に動作するので、これはスイッチの問題ではないと確信しています (ただし、eth0 でも同じ問題が発生します)。
この件についてはもう途方に暮れています。どなたか助けていただければ幸いです。
答え1
今後の参考までに、根本的な問題は@kasperdによって別のSFで解決されました。質問