用tracert命令追踪路由,出现了相同的IP地址,怎么解释?

用tracert命令追踪路由,出现了相同的IP地址,怎么解释?

第一种可能:NAT

当TTL= 3 时,ICMP到达第三跳,这时TTL通过三次减1操作,TTL变为0,需要报错,但这个第三跳路由器使用私有IP,恰好还有缺省路由(指向第二跳)、或有明细路由(也指向第二跳),于是回包到达第二跳,第二跳需要把第三跳的私有IP替换成自己的,于是就发生了题主看到的一幕。

这种可能性比较小,一般缺省路由会指向上游(第四跳),而不会指向下游(第二跳);拥有源主机公网明细路由的可能性也比较小(比缺省路由的可能性大)。

第二种可能:MPLS + NAT

第三跳为MPLS/P路由器,虽然没有源主机的路由,但知道第二跳、或第四跳PE路由器会有源主机的路由,于是使用原有的ICMP Echo 包的Label来发ICMP TTL Expired消息,到达第四跳PE,第四跳再调转方向发回到第二跳PE,第二跳做NAT操作,于是就发生了题主看到的一幕。

这种可能性更大。

第三种可能:第二跳TTL-2 操作

无论是TTL = 1,TTL=2,最后减2的结果都是0(TTL 为1时,减2也是0,不会为-1),好像包经过了两跳路由器。

这种可能性比较小,这个算BUG了。