为什么 traceroute 不起作用

为什么 traceroute 不起作用

我对为什么 traceroute 在某些情况下不起作用有一些疑问。虽然我了解它的工作原理,但我无法弄清楚一些问题。例如,

$traceroute www.google.com
 1  * * *
 2  * * *
......

有“*”。当我使用 ICMP 代替 UDP 时,我得到了以下信息:

$traceroute www.google.com -I
 1  * * *
 2  * * *
 3  222.42.254.130 (222.42.254.130)  7.980 ms  10.785 ms  4.920 ms
 4  222.42.254.129 (222.42.254.129)  4.363 ms  8.141 ms  5.849 ms
 5  bogon (10.2.1.1)  7.957 ms  7.787 ms  8.321 ms
 6  61.237.121.97 (61.237.121.97)  25.341 ms  24.895 ms  28.725 ms
 7  61.237.123.66 (61.237.123.66)  23.738 ms  24.172 ms  23.916 ms
 8  221.4.120.173 (221.4.120.173)  23.096 ms  24.539 ms  20.827 ms
 9  221.4.6.61 (221.4.6.61)  58.516 ms  60.035 ms  63.200 ms
10  120.80.0.73 (120.80.0.73)  60.991 ms  59.520 ms  59.853 ms
11  219.158.19.69 (219.158.19.69)  59.771 ms  59.192 ms  59.072 ms
12  219.158.22.249 (219.158.22.249)  89.185 ms  87.928 ms  89.582 ms
13  219.158.22.158 (219.158.22.158)  102.195 ms  103.409 ms  106.153 ms
14  219.158.35.114 (219.158.35.114)  218.816 ms  224.845 ms  218.470 ms
15  203.208.62.15 (203.208.62.15)  212.560 ms  208.640 ms *
16  chrome.google.com (203.208.46.1)  210.655 ms *  216.369 ms

我想知道为什么第一跳和第二跳仍然未知。我尝试用 -z 500 设置 icmp 速率,但没用。所以我的问题如下:

  1. 为什么我使用 ICMP 时会出现一些跳数?
  2. 我怎样才能获得前两跳?

我搜索过,但一无所获。我通过没有任何防火墙的路由连接到互联网。谢谢你的帮助。

答案1

由于 Traceroute 基于 ICMP Echo 请求,因此您路径上的前两条路由(可能是您自己的防火墙)似乎配置为丢弃/阻止 ICMP Echo 请求。这就是为什么 Traceroute 无法看到前两条路由的实际响应,但可以看到除此以外的正确响应。

答案2

第一跳是您通向互联网的网关,您可以通过 来查看netstat -rn

第二跳是您的提供商的网关,如果您碰巧有像 Fritzbox 之类的东西,您可以在那里看到 IP 地址。

答案3

为了完成下一跳发现,您可以使用另一个工具:hping。正如 Franck 之前的回复所解释的那样,可能存在丢弃此类 ICMP 消息的防火墙或路由器。

例如,您可以对第一个下一跳使用此命令:

hping www.google.com -p 86 -S -t 1

另请参见第二张:

hping www.google.com -p 86 -S -t 2

相关内容