traceroute 不显示默认网关和家庭路由器 IP 地址

traceroute 不显示默认网关和家庭路由器 IP 地址

我很困惑为什么 mac os 上的 traceroute 不显示我家路由器的 IP 地址。

我到 www.google.com 的跟踪路由如下所示

1  182.55.226.3 (182.55.226.3)  11.116 ms  13.576 ms  14.185 ms
2  183.90.44.217 (183.90.44.217)  8.347 ms  5.254 ms  7.229 ms
3  183.90.44.201 (183.90.44.201)  7.215 ms  5.495 ms  7.216 ms
4  203.117.35.193 (203.117.35.193)  7.693 ms
   203.117.35.105 (203.117.35.105)  9.191 ms
   203.117.35.221 (203.117.35.221)  7.427 ms
5  203.117.34.81 (203.117.34.81)  7.399 ms  7.444 ms
   203.117.34.85 (203.117.34.85)  9.939 ms
6  203.117.37.22 (203.117.37.22)  14.190 ms
   203.117.36.38 (203.117.36.38)  7.944 ms
   203.117.37.22 (203.117.37.22)  12.577 ms
7  72.14.198.156 (72.14.198.156)  9.226 ms
   72.14.196.189 (72.14.196.189)  12.200 ms  7.388 ms
8  108.170.240.242 (108.170.240.242)  5.872 ms * *
9  216.239.57.50 (216.239.57.50)  14.198 ms
   72.14.234.96 (72.14.234.96)  8.626 ms
   216.239.57.50 (216.239.57.50)  10.731 ms
10 72.14.239.65 (72.14.239.65)  10.027 ms
   64.233.175.215 (64.233.175.215)  12.213 ms
   72.14.233.43 (72.14.233.43)  28.103 ms
11  * * 216.239.35.168 (216.239.35.168)  16.768 ms
12  64.233.175.215 (64.233.175.215)  11.001 ms *

既然 traceroute 显示数据包访问 google.com 服务器时经过的路由器,为什么我的第一个路由器不是接收数据包的家庭路由器 ( 192.168.0.1 )。相反,182.55.226.3 似乎来自我所在国家/地区的路由器之一。traceroute 应该显示我家路由器的私有 IP 地址还是公共 IP 地址。第一跳的 IP 地址也与我的路由器的外部 IP 地址不匹配。

跟踪路由到我的路由器的 WAN IP 地址只给出一个跳数。但是,当我尝试跟踪路由到 182.55.226.3 时,结果如下。

traceroute to 182.55.226.3 (182.55.226.3), 64 hops max, 52 byte packets
1  * * *
2  * * *
3  * * *
4  * * *
5  * * *
6  * * *
7  * * *
8  * * *
9  * * *
10  * * *
11  * * *
12  * * *

答案1

为什么我的第一个路由器不是接收数据包的家庭路由器(192.168.0.1)。

traceroute 是如何工作的?它发送具有不同 TTL(生存时间)属性值的 ping 数据包。通常情况下,每个路由器都会减少 TTL,并将此数据包路由到下一跳,如果其值大于 0,或者如果它变为零,它会放弃 ping 并向后发送“TTL 已过期”数据包。因此 traceroute 发送 TTL=1 的数据包并从跟踪中的最近节点接收“TTL 已过期”(并提取其 IP),然后它发送 TTL=2 的数据包并从跟踪中的第二个节点接收“TTL 已过期”......依此类推,直到 pong 返回。

通常任何路由器都会将 TTL 减少 1。但它可以将其减少 2、3 或更多(意味着这种跟踪非常昂贵),或者不改变它(自我隐藏),或者增加它(允许长距离跟踪)。

看来您的路由器不会更改 TTL。因此,当 TRACEROUTE 发送 TTL=1 的数据包时,路由器只会路由它而不更改 TTL。下一跳会将其递减,结果为 0,它会发送“TTL 已过期”... 并且跟踪中的第一个节点是 182.55.226.3(它是您的路由器 WAN 接口的默认网关吗?),而不是您的路由器(192.168.0.1)。

答案2

您的路由器有多个网络接口。192.168.0.1 是内部接口上的地址,而(很可能)182.55.226.3 是您的 ISP 分配给路由器的外部接口上的地址。

一些路由器使用内部接口地址响应跟踪路由,一些路由器使用外部接口地址响应。

如果您的路由器有一个可以在其中查看其外部地址的 Web 界面,请检查它是否与最近的匹配traceroute

相关内容