当我用DF位置1并且数据包大小对于我的路由器来说太大时,对远程站点执行ping操作时,将从路由器发送第一个ICMP“需要分段”消息。之后,消息来自我的本地主机。
Netstat -rC(在Linux上)允许我查看路由表缓存,但是
1)似乎在名为MSS的列下显示MTU(我希望它是链接的较低TCP MSS)
2)始终显示值为1500
我的本地主机必须将PMTU缓存在某个位置,以便它可以生成所需的碎片消息。但是我怎么看呢?
这是我的计算机上的一个示例(netstat上的-n禁止反向DNS查找):
[root@vbcentos ~]# ping -c 4 -M do -s 1431 212.58.244.69
PING 212.58.244.69 (212.58.244.69) 1431(1459) bytes of data.
From 217.155.134.6 icmp_seq=1 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
--- 212.58.244.69 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 1002ms
[root@vbcentos ~]# netstat -rCn
Kernel IP routing cache
Source Destination Gateway Flags MSS Window irtt Iface
217.155.134.3 217.155.134.4 217.155.134.4 il 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.4 217.155.134.4 217.155.134.4 l 16436 0 0 lo
217.155.134.3 217.155.134.255 217.155.134.255 ibl 0 0 0 lo
217.155.134.4 212.58.244.69 217.155.134.6 1500 0 0 eth0
217.155.134.6 217.155.134.4 217.155.134.4 il 0 0 0 lo
212.58.244.69 217.155.134.4 217.155.134.4 l 0 0 0 lo
[root@vbcentos ~]#
编辑:根据建议:
ip route get to 212.58.244.69
给
212.58.244.69 via 217.155.134.6 dev eth1 src 217.155.134.4
cache mtu 1500 advmss 1460 hoplimit 64
这也似乎是错误的,因为MSS仅比mtu(接口mtu而不是PMTU)少40
netstat -rCn
什么也不返回,但是watch ip route get to $HOST
显示最新信息,包括缓存TTL。ip route show cached
显示可能也输出一些东西,但没有。