我有一個帶有兩個網卡的 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 層交換器:
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 我實際上可以看到在每種情況下到達各自目的地的追蹤路由資料包。這告訴我傳出路徑和返迴路徑都已正確路由。但我一生都無法弄清楚為什麼 ping 和 Traceroute 都失敗了。
我相當確定這不是交換器的問題,因為如果我將 eth1 設定為 linux 機器上的預設網關,那麼它就可以正常工作(但我對 eth0 也有同樣的問題)。
我對此一籌莫展——任何幫助將不勝感激。
答案1
為了將來參考,@kasperd 在另一個 SF 中解決了根本問題問題