首页 新闻 会员 周边 捐助

设TTL为1 Ping路由器的WAN口会怎么样?

0
悬赏园豆:10 [已解决问题] 解决于 2020-03-12 10:11

路由器LAN口IP为: 192.168.0.1
WAN口假设为: a.b.c.d

主机上设置默认网关为: 192.168.0.1

假设执行:

ping a.b.c.d -t 1

(发送TTL为1的报文) 会收TTL exceeded的ICMP报文吗? 如果会 是a.b.c.d 发来的还是192.168.0.1发来的?

谢谢大家

另外

配置

主机的IP: 192.168.0.103

路由:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp4s0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0

Problem

traceroute 外网的时候 一切正常, 前两跳都是一样的, 比如 traceroute 8.8.8.8 -n,

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.0.1  5.202 ms  5.166 ms  5.144 ms
 2  172.23.0.1  17.751 ms  18.034 ms  18.047 ms

traceroute -n 172.23.0.1 也一切正常

traceroute to 172.23.0.1 (172.23.0.1), 30 hops max, 60 byte packets
 1  192.168.0.1  1.927 ms  1.886 ms  1.858 ms
 2  172.23.0.1  16.365 ms  16.348 ms  16.330 ms

但是当 traceroute -n 172.23.18.237, 发生了很奇怪的事..

traceroute to 172.23.18.237 (172.23.18.237), 30 hops max, 60 byte packets
 1  172.23.18.237  2.990 ms  2.971 ms  2.968 ms
 2  172.23.18.237  2.395 ms  2.418 ms  2.418 ms

发现 172.23.18.237 出现了两遍

然后我就想, 为什么第一跳不是网关192.168.0.1回复我TTL超时而是172.23.18.237, 而且既然到了172.23.18.237 为什么还要回个TTL exceeded

然后我就尝试设TTL为1来ping 一下 ping 172.23.18.237 -t 1

PING 172.23.18.237 (172.23.18.237) 56(84) bytes of data.
From 172.23.18.237 icmp_seq=1 Time to live exceeded
From 172.23.18.237 icmp_seq=2 Time to live exceeded
From 172.23.18.237 icmp_seq=3 Time to live exceeded
^C
--- 172.23.18.237 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2002ms

没想到竟然真是172.23.18.237给我回的ICMP (明明TTL是1, 为什么不是192.168.0.1 ?!)

TTL为2 ping 172.23.18.237 -t 2 可以正常ping通

PING 172.23.18.237 (172.23.18.237) 56(84) bytes of data.
64 bytes from 172.23.18.237: icmp_seq=1 ttl=64 time=13.1 ms
64 bytes from 172.23.18.237: icmp_seq=2 ttl=64 time=10.9 ms

我有两个疑惑..

  1. 为什么第一跳不是 192.168.0.1, 而是 172.23.18.237 ?
  2. 而且就算第一跳直接是172.23.18.237, TTL为1时, 为什么 172.23.18.237 还要给我返回 TTL exceeded (不是已经到了目的IP了吗)
KimBing_Ng的主页 KimBing_Ng | 菜鸟二级 | 园豆:352
提问于:2020-03-09 09:09
< >
分享
最佳答案
0

你的ping包处理顺序:

  1. 以TTL=1到达192.168.0.1,它会把TTL-1,然后发给172.23.18.237。
  2. 以TTL=0到达172.23.18.237,它发现TTL=0,然后就丢弃这个包,并且返回TTL exceeded。
收获园豆:10
Timetombs | 老鸟四级 |园豆:3959 | 2020-03-09 15:53

感谢解答 我开始也怀疑过,

可是在TTL 为1 时Ping 公网的时候(例如百度) 他会在192.168.0.1发送ICMP报文, 因为192.168.0.1转发的时候将TTL - 1, 然后发现是0 于是发送ICMP

PING baidu.com (183.232.231.172) 56(84) bytes of data.
From 192.168.0.1 icmp_seq=1 Time to live exceeded
From 192.168.0.1 icmp_seq=2 Time to live exceeded
From 192.168.0.1 icmp_seq=3 Time to live exceeded

这个也应该类似的是 192.168.0.1来发送吧 好奇怪...

KimBing_Ng | 园豆:352 (菜鸟二级) | 2020-03-09 16:12

@KimBing_Ng:

  1. 我上面说的可能不对,在192.168.0.1对TTL-1后,如果是0,192.168.0.1应该就不会再转发下一跳了。

  2. ping 172.23.18.237 -t 1的问题,你查一下你电脑是不是多个网卡,ping 172.23.18.237 -t 1 的时候走的应该不是192.168.0.1这个网关吧? tcpdump或者wireshark确认一下ping 172.23.18.237 -t 1走的是那个网关。

Timetombs | 园豆:3959 (老鸟四级) | 2020-03-09 16:20

@blackheart: wireshark 抓包, 从MAC地址来看, 确实是走向192.168.0.1

这是我主机的转发表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    600    0        0 wlp4s0
192.168.0.0     0.0.0.0         255.255.255.0   U     600    0        0 wlp4s0

太奇怪了 不知道是怎么回事

另外 172.23.18.237 应该是我路由器的另一个口的IP (这个IP我是从TPLink的管理页面找到的)

猜测一下可能是什么原因导致这个现象的呢... 实在想不明白了

KimBing_Ng | 园豆:352 (菜鸟二级) | 2020-03-09 17:04

@KimBing_Ng:

首先,是先-1,然后再判断是转发还是返回https://en.wikipedia.org/wiki/ICMP_Time_Exceeded

For example, every device (such as an intermediate router) forwarding an IP datagram first decrements the time to live (TTL) field in the IP header by one. If the resulting TTL is 0, the packet is discarded and an ICMP time exceeded in transit message is sent to the datagram's source address.

你图中给的示例确实看起来很奇怪(我用ttl=1来ping我自己的路由器的外部ip是可以的)。

  1. 你的ttl=1时,exceeded说明中间有一个节点。
  2. 你的ttl=2时,返回的包的ttl=64,说明回复的时候没有中间节点。
    这就表示在发出的路线和返回的不一样。。。着实奇怪
Timetombs | 园豆:3959 (老鸟四级) | 2020-03-09 17:56

@blackheart: 感谢测试! 我也搞不懂 算了

KimBing_Ng | 园豆:352 (菜鸟二级) | 2020-03-12 10:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册