Когда я проверяю связь с удаленным сайтом с установленным битом DF и размером пакета, который слишком велик для моего маршрутизатора, с маршрутизатора отправляется первое сообщение ICMP «требуется фрагментация». После этого сообщение приходит от моего localhost.
Netstat -rC (в Linux) позволяет мне просматривать кеш таблицы маршрутизации, но
1) Кажется, чтобы показать MTU под столбцом, названным MSS (который я ожидал бы быть более низким MSS TCP ссылки)
2) Всегда показывает значение как 1500
Мой локальный хост должен где-то кэшировать PMTU, чтобы он мог генерировать сообщение о необходимости фрагментации. Но как я это вижу?
Вот пример на моей машине (-n на netstat запрещает обратный поиск 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 всего на 40 меньше, чем mtu, который является интерфейсом mtu, а не PMTU.
источник
netstat -rCn
ничего не возвращает, ноwatch ip route get to $HOST
показывает, в чем дело, включая кеш TTL.ip route show cached
показывает, вероятно, также выводить что-то, но не делает.Ответы:
Может быть
источник
В Windows используйте команду netsh для просмотра «кэша назначения», в котором хранится эта информация. Например (при условии IPv4):
источник
MSS должен быть на 40 байтов меньше, чем ваш MTU (он не включает заголовки байтов IPv4 (20 байтов) и tcp (20)). Так что это правильно.
Сообщение о необходимости фрагментации ICMP отправляется маршрутизатором, а не вашим сервером.
источник