可以 ping 通,但无法从 Linux 跟踪路由。可以从 Windows 执行这两项操作。这是怎么回事?

可以 ping 通,但无法从 Linux 跟踪路由。可以从 Windows 执行这两项操作。这是怎么回事?

问题就在这里。我在同一个网络后面有两台不同的计算机。两台计算机都具有相同的网关、IP 地址前缀等。

计算机1:Windows XP IP 192.168.0.15

这台电脑可以 pingtracert离开网络到我试图连接的另一台计算机

计算机2:Linux(debian)IP 192.168.0.54

这台电脑可以 ping那台不在网络内的计算机,但是无法跟踪路由對它來說。

这使我相信这与防火墙无关,而与操作系统配置有关。

路由命令的输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

对于可能存在什么问题,您有什么想法吗?

答案1

这是因为 Windows 和 Linux 实现 traceroute 的方式不同。

在 Windows 上,它使用具有不同生存时间设置的 ICMP Echo 数据包来确定中间跳数。

在 Linux 上,它使用具有不同生存时间设置的 UDP 数据包来确定中间跳数。

有些网络允许其中一个或两个,或者一个都不允许。允许 ICMP 但不允许 UDP 的网络将表现不同。Linux 上的 Ping 使用与 Windows 相同的 ICMP Echo 数据包,这解释了为什么它可以工作但 Traceroute 却不行。

此外,不同的 traceroute 程序的行为也不同。并非所有 Linux 都使用 UDP。因此,这不是通用的。

相关内容