网络数据包双向流动但仍无法通信

网络数据包双向流动但仍无法通信

我有一个带有两个 NICS 的 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,我实际上可以看到 traceroute 数据包在每种情况下都到达了各自的目的地。这告诉我,传出路径和返回路径都已正确路由。但我无论如何也想不出为什么 ping 和 traceroute 都失败了。

我相当确定这不是交换机的问题,因为如果我将 eth1 设为 Linux 机器上的默认网关,那么它就可以正常工作(但我遇到 eth0 的相同问题)。

我对此束手无策——任何帮助都将不胜感激。

答案1

供将来参考,底层问题已由@kasperd 在另一篇 SF 中解决问题

相关内容