可以 ping 但不能从 Linux 跟踪路由。可以从 Windows 执行这两项操作。是什么赋予了?

Sag*_*gar 3 networking linux ping

所以问题来了。我在同一个网络后面有两台不同的计算机。两者都具有相同的网关、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
Run Code Online (Sandbox Code Playgroud)

关于问题可能是什么的任何想法?

sys*_*138 13

这是因为 Windows 和 Linux 实现的跟踪路由不同。

在 Windows 上,它使用具有不同生存时间设置的 ICMP Echo 数据包来计算中间跃点。

在 Linux 上,它使用具有不同生存时间设置的 UDP 数据包来计算中间跃点。

一些网络允许一个或两个,或不允许。允许 ICMP 但不允许 UDP 的网络的行为会有所不同。linux 上的 Ping 使用与 Windows 相同的 ICMP Echo 数据包,这解释了为什么它有效但 Traceroute 无效。

此外,不同的 traceroute 程序的行为也不同。并非所有 linux 都为此使用 UDP。所以这不是普遍的。

  • 仅供参考,在 linux 上,您可以抛出 `-I` 选项,它将使用 ICMP 而不是 UDP。 (4认同)