(Kopiert von Unix Stack Exchange)
Sie haben die Symptome einer MTU Problem:Einige TCP-Verbindungen frieren mehr oder weniger reproduzierbar für einen bestimmten Befehl oder eine URL ein, jedoch ohne leicht erkennbares Gesamtmuster. Ein verräterisches Symptom ist, dass interaktive SSH-Sitzungen gut funktionieren, aber Dateiübertragungen fast immer fehlschlagen. Außerdem ist pppoe der MTU-Problembringer Nummer eins für Heimanwender. Also verschreibe ich einen MTU-Check.
Was ist das? Das m maximal t Ransmission u nit ist die maximale Größe eines Pakets über eine Netzwerkverbindung. Die MTU variiert von Transportmedium zu Transportmedium, z.B. kabelgebundenes Ethernet und WLAN (802.11) haben unterschiedliche MTUs, und ATM-Verbindungen (die den größten Teil der Langstreckeninfrastruktur ausmachen) haben jeweils ihre eigene MTU. PPPOE ist ein gekapseltes Protokoll, was bedeutet, dass jedes Paket aus einigen Header-Bytes besteht gefolgt vom zugrunde liegenden Paket – so wird die maximale Paketgröße um die Größe des Headers verringert. IP ermöglicht es Routern, Pakete zu fragmentieren, wenn sie feststellen, dass sie für den nächsten Hop zu groß sind, aber das funktioniert nicht immer. Theoretisch sollte die richtige MTU automatisch erkannt werden, aber auch das funktioniert nicht immer. Insbesondere Googeln deutet darauf hin, dass Network Manager nicht immer richtig auf MTU-Informationen reagiert, die aus der MTU-Erkennung stammen, aber ich weiß nicht, welche Versionen betroffen sind oder welche problematischen Anwendungsfälle es gibt.
Wie man es misst. Versuchen Sie, Ping-Pakete einer bestimmten Größe an einen externen Host zu senden, der darauf antwortet, z. ping -c 1 -s 42 8.8.8.8
(unter Linux; auf anderen Systemen schlagen Sie in der Dokumentation Ihres ping
nach Befehl). Ihre Pakete sollten bei ausreichend kleinen Werten von 42 durchkommen (wenn 42 nicht funktioniert, blockiert etwas Pings). Bei größeren Werten kommt das Paket nicht durch. 1464 ist ein typischer Maximalwert, wenn die begrenzende Infrastruktur Ihr lokales Ethernet-Netzwerk ist. Wenn Sie Glück haben, sehen Sie beim Senden eines zu großen Pakets eine Nachricht wie Frag needed and DF set (mtu = 1492)
. Wenn Sie kein Glück haben, experimentieren Sie einfach weiter mit dem Wert, bis Sie das Maximum gefunden haben, und addieren Sie dann 28 (-s
gibt die Payload-Größe an, und es gibt zusätzlich 28 Byte Header).Siehe auch How to Optimize your Internet Connection using MTU and RWIN in den Ubuntu-Foren.
Einstellen (Ersetzen Sie 1454 durch die von Ihnen ermittelte MTU und eth0
nach dem Namen Ihrer Netzwerkschnittstelle)
- Einmalig (Linux):Führen Sie
ifconfig eth0 mtu 1454
aus - Permanent (Debian und Derivate wie Ubuntu, wenn Network Manager nicht verwendet wird):Bearbeiten Sie
/etc/network/interfaces
. Direkt nach dem Eintrag für Ihre Netzwerkschnittstelle (nach demiface eth0 …
Direktive), fügen Sie eine Zeile mitpre-up ifconfig $IFACE mtu 1454
hinzu . Wenn Ihre IP-Adresse statisch ist, können Sie alternativ denmtu 1454
hinzufügen Parameter aufiface eth0 inet static
Richtlinie. -
Dauerhaft (Debian und Derivate wie Ubuntu, mit oder ohne Network Manager):Erstellen Sie ein Skript mit dem Namen
/etc/network/if-pre-up.d/mtu
mit folgendem Inhalt und weltlauffähig machen (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454