关于Traceroute未经过公网IP所属网段的疑问咨询
关于Traceroute未经过公网IP所属网段的疑问咨询
我的操作与疑问
首先,我通过以下命令获取公网IP并执行whois查询:
whois $(wget -qO- ipinfo.io | grep -w ip | sed 's/"//g;s/://g;s/,//g;s/ip//g;s/^.*[ \t]//g')
得到的公网IP为:79.116.123.39
whois结果显示该IP所属网段为:79.116.123.0 - 79.116.123.255,路由段为79.116.0.0/16
随后我执行traceroute google.com,得到的路径如下:
1 _gateway (192.168.0.1) 6.002 ms 5.973 ms 5.958 ms 2 172.19.217.49 (172.19.217.49) 49.053 ms 49.043 ms 52.209 ms 3 172.24.1.161 (172.24.1.161) 55.486 ms 70.018 ms 69.978 ms 4 81.196.118.208 (81.196.118.208) 73.225 ms 73.213 ms 73.244 ms 5 91.232.81.211 (91.232.81.211) 73.189 ms 74.125.119.226 (74.125.119.226) 73.177 ms 73.162 ms 6 108.170.253.241 (108.170.253.241) 73.150 ms 108.170.253.225 (108.170.253.225) 62.935 ms 108.170.253.241 (108.170.253.241) 62.905 ms 7 142.251.51.143 (142.251.51.143) 69.595 ms 142.251.51.141 (142.251.51.141) 44.583 ms 52.464 ms 8 mad41s14-in-f14.1e100.net (142.250.200.142) 39.579 ms 52.352 ms 58.850 ms
我发现所有数据包经过的节点里,没有任何属于我的公网IP所在网段的路由器/节点。明明数据包是在我的公网IP所属的网络里传输,为什么会这样?难道不应该至少有一个该网段内的节点吗?
解答
嘿,这个问题问得很到位!其实核心原因是你的公网IP是运营商分配给你的“终端标识IP”,而非网段内的转发路由器IP,咱们具体说:
- 你的设备通过家庭网关(192.168.0.1)接入运营商网络,网关之后的第一跳(172.19.217.49)已经是运营商骨干网的路由器了。
- 你拿到的
79.116.123.39是运营商给你的动态公网IP,这个IP直接绑定在你的网关或者设备上,用来标识你的网络会话身份,并不是某个中间转发路由器的IP。 - 运营商网段(79.116.0.0/16)内的路由器,属于骨干转发层面的设备,它们不会出现在你的traceroute路径里——因为数据包从网关出去后,直接进入了运营商的骨干转发网络,你的公网IP只是用来标记“这个数据包是来自/去往你”,而不是转发路径上的节点。
简单总结:你的公网IP是“会话的终点标识”,不是“转发路径上的节点”,所以traceroute自然不会显示该网段内的路由器啦。
备注:内容来源于stack exchange,提问作者achille
相关产品推荐
相关产品推荐

