Wie kann ich zwischengespeicherte PMTU unter Linux (und allen anderen Betriebssystemen) anzeigen?

13

Wenn ich eine Gegenstelle mit gesetztem DF-Bit und einer für meinen Router zu großen Paketgröße anpinge, wird die erste ICMP-Nachricht "Fragmentierung erforderlich" vom Router gesendet. Danach kommt die Nachricht von meinem Localhost.

Mit Netstat -rC (unter Linux) kann ich den Routing-Tabellen-Cache anzeigen, aber

1) Scheint MTUs unter einer Spalte mit dem Namen MSS anzuzeigen (was ich als das niedrigere TCP-MSS der Verbindung erwarten würde)

2) Zeigt den Wert immer als 1500 an

Mein localhost muss die PMTU irgendwo zwischenspeichern, damit die für die Fragmentierung erforderliche Nachricht generiert werden kann. Aber wie sehe ich das?

Hier ist ein Beispiel für meinen Computer (-n unter netstat verhindert die umgekehrte DNS-Suche):

[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 ~]#

EDIT: Gemäß Vorschlag:

ip route get to 212.58.244.69

gibt

212.58.244.69 via 217.155.134.6 dev eth1  src 217.155.134.4
    cache  mtu 1500 advmss 1460 hoplimit 64

Das scheint auch falsch zu sein, da die MSS nur 40 weniger als die MTU ist, die die MTU-Schnittstelle und nicht die PMTU

Neik
quelle
1
Auf Fedora 22 wird netstat -rCnnichts zurückgegeben, es wird jedoch watch ip route get to $HOSTangezeigt, was läuft, einschließlich der Cache-TTL. ip route show cachedzeigt wohl auch etwas aus, tut es aber nicht.
David Tonhofer

Antworten:

7

Könnte sein

ip route get to 212.58.244.69
Sciurus
quelle
Bearbeitete Frage, um dies hinzuzufügen.
Neik
1

Verwenden Sie unter Windows den Befehl netsh, um den "Zielcache" anzuzeigen, der diese Informationen enthält. Zum Beispiel (unter der Annahme von IPv4):

netsh interface ipv4 show destinationcache
dbr
quelle
1

MSS sollte 40 Byte weniger als Ihre MTU sein (IPv4 (20 Byte) und TCP (20) Byte-Header sind nicht enthalten). Das ist also richtig.

Die für die ICMP-Fragmentierung erforderliche Nachricht wird vom Router und nicht von Ihrem Server gesendet.

Gabe
quelle