问题就在这里。我在同一个网络后面有两台不同的计算机。两台计算机都具有相同的网关、IP 地址前缀等。
计算机1:Windows XP IP 192.168.0.15
这台电脑可以 ping和tracert离开网络到我试图连接的另一台计算机
计算机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。因此,这不是通用的。