如何在 Linux(和所有其他操作系统)下查看缓存的 PMTU

Nei*_*eik 19 networking mtu

当我在设置了 DF 位并且数据包大小对于我的路由器来说太大的情况下 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 ~]#
Run Code Online (Sandbox Code Playgroud)

编辑:根据建议:

ip route get to 212.58.244.69
Run Code Online (Sandbox Code Playgroud)

212.58.244.69 via 217.155.134.6 dev eth1  src 217.155.134.4
    cache  mtu 1500 advmss 1460 hoplimit 64
Run Code Online (Sandbox Code Playgroud)

这似乎也是错误的,因为 MSS 仅比 mtu 少 40,这是接口 mtu 而不是 PMTU

sci*_*rus 12

也许

ip route get to 212.58.244.69
Run Code Online (Sandbox Code Playgroud)