为什么tracepath
总是显示第一跳两次:
$ tracepath -n X.Y.Z.T
1?: [LOCALHOST] pmtu 1500
1: 172.16.5.2 0.586ms
1: 172.16.5.2 0.420ms
2: no reply
3: X.Y.Z.T 6.199ms reached
Resume: pmtu 1500 hops 3 back 3
而traceroute
没有:
$ traceroute -n X.Y.Z.T
traceroute to X.Y.Z.T (X.Y.Z.T), 30 hops max, 60 byte packets
1 172.16.5.2 0.672 ms 0.705 ms 0.723 ms
2 * * *
3 X.Y.Z.T 1.192 ms 1.220 ms 1.218 ms
顺便说一下,172.16.5.2
是网关组中的两个物理路由器之一,逻辑网关路由器是172.16.5.1
:
$ ip route get X.Y.Z.T
X.Y.Z.T via 172.16.5.1 dev ens160 src 172.16.5.X uid 1000
cache
EDIT0 :使用MTU=1500:
$ tracepath -n X.Y.Z.T -l 1500
1: 172.16.5.2 0.598ms
2: no reply
3: X.Y.Z.T 6.368ms reached
Resume: pmtu 1500 hops 3 back 3
使用MTU=1501:
$ tracepath -n X.Y.Z.T -l 1501
1?: [LOCALHOST] pmtu 1500
1: 172.16.5.2 0.600ms
1: 172.16.5.2 0.394ms
2: no reply
3: X.Y.Z.T 6.139ms reached
Resume: pmtu 1500 hops 3 back 3
使用MTU=3*1500+1:
$ tracepath -n X.Y.Z.T -l $((3*1500+1))
1?: [LOCALHOST] pmtu 1500
1: 172.16.5.2 0.653ms
1: 172.16.5.2 1.239ms
2: no reply
3: X.Y.Z.T 6.098ms reached
Resume: pmtu 1500 hops 3 back 3
发布于 2022-07-26 10:33:28
这是因为初始数据包长度太大。尝试使用选项-l
将数据包大小设置为最大。你的mtu。如果mtu是1500,-l 1500
就可以了,而-l 1501
则会带来双位数。
编辑: tracepath与检测pmtu不一致。有时这里是1460,有时是1500。在每种情况下,较低的值都是有效的,事实上,它的大小应该是100。
发布于 2022-07-26 08:13:36
根据man tracepath
,输出部分
第一列显示探针的TTL,后面是冒号。通常TTL的值是从网络中得到的,但有时回复并不包含必要的信息,我们不得不猜测它。在这种情况下,数字后面跟着?
https://unix.stackexchange.com/questions/711299
复制相似问题