Quando eseguo il ping di un sito remoto con il set di bit DF e una dimensione del pacchetto troppo grande per il mio router, il primo messaggio ICMP "frammentazione richiesta" viene inviato dal router. Successivamente il messaggio proviene dal mio localhost.
Netstat -rC (su Linux) mi permette di visualizzare la cache della tabella di routing, ma
1) Sembra mostrare gli MTU sotto una colonna chiamata MSS (che mi aspetterei fosse il MSS TCP inferiore del link)
2) Mostra sempre il valore come 1500
Il mio localhost deve memorizzare nella cache PMTU da qualche parte in modo che possa generare il messaggio di frammentazione richiesto. Ma come lo vedo?
Ecco un esempio sulla mia macchina (-n su netstat inibisce le ricerche DNS inverse):
[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 ~]#
MODIFICA: Come da suggerimento:
ip route get to 212.58.244.69
dà
212.58.244.69 via 217.155.134.6 dev eth1 src 217.155.134.4
cache mtu 1500 advmss 1460 hoplimit 64
Il che sembra anche sbagliato poiché l'MSS è solo 40 in meno rispetto al mtu, che è l'interfaccia mtu anziché il PMTU
netstat -rCn
non restituisce nulla, mawatch ip route get to $HOST
mostra che succede, inclusa la cache TTL.ip route show cached
mostra probabilmente anche l'output di qualcosa ma non lo fa.