Linux

可以 ping 但不能從 Linux 跟踪路由。可以從 Windows 中進行這兩種操作。是什麼賦予了?

  • July 9, 2015

所以這就是問題所在。我在同一網路後面有兩台不同的電腦。兩者俱有相同的網關、IP 地址前綴等。

電腦 1:Windows XP IP 192.168.0.15

這台電腦可以從網路 ping跟踪到我嘗試訪問的另一台電腦

電腦 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

關於問題可能是什麼的任何想法?

那是因為 Windows 和 Linux 實現 traceroute 的方式不同。

在 Windows 上,它使用具有不同生存時間設置的 ICMP Echo 數據包來計算中間躍點。

在 Linux 上,它使用具有不同生存時間設置的 UDP 數據包來計算中間躍點。

一些網路允許一個或兩個,或者沒有。允許 ICMP 但不允許 UDP 的網路會有不同的行為。linux 上的 Ping 使用與 Windows 相同的 ICMP Echo 數據包,這解釋了為什麼它有效,但 Traceroute 無效。

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

引用自:https://serverfault.com/questions/164931