请教一个一直不明白的问题:为什么 tracert 的时候会有两个 192.168.1.1

2015-08-06 15:59:51 +08:00
 publicid999

双层NAT,外层是192.168.1.0/24,内层是172.16.0.0/16,tracert的时候会出来两个192.168.1.1,不明白为什么第一个也是192.168.1.1:

C:\Users\user>tracert 8.8.8.8

Tracing route to google-public-dns-a.google.com [8.8.8.8]
over a maximum of 30 hops:

1 1 ms 1 ms 1 ms 192.168.1.1
2 1 ms 1 ms 2 ms 192.168.1.1
3 15 ms 4 ms 7 ms (我的公网IP)

试图tracert两个路由器的结果:
C:\Users\user>tracert 172.16.1.1
Tracing route to 172.16.1.1 over a maximum of 30 hops
1 1 ms 1 ms 1 ms 172.16.1.1
Trace complete.

C:\Users\user>tracert 192.168.1.1
Tracing route to 192.168.1.1 over a maximum of 30 hops
1 1 ms 1 ms 1 ms 192.168.1.1
Trace complete.

2397 次点击
所在节点    问与答
1 条回复
qybei
2015-08-07 01:13:46 +08:00
因为TTL=0或者TTL=1的时候都会回复ICMP不可达消息。出现两次192.168.1.1说明你跟192.168.1.1之间有一台路由器,他收到TTL=1的报文,理论上他应该丢弃并给你回个消息,但实际上他把TTL改成了0并继续转发出去,到了192.168.1.1才给你回的消息;第二次PC发出TTL=2的ICMP时,到192.168.1.1时TTL=1,所以他又给你回了一个消息。

要确认是不是这样,可以抓个包,看看第一个ICMP回复中的原始报文的TTL是否为0。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/211272

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX