MTU auf dem Server versehentlich auf 0 gesetzt, kann ssh nicht hinein?

7

Mein Server hatte ein Problem mit dem SSH und ich konnte keine Dateien mit einer Größe von> 10 KB hochladen, da SCP während des Kopierens hängen bleiben würde. Ich habe hier eine Lösung für dieses Problem gefunden und die MTU geändert, als ich es versehentlich tat sudo ip link set eth0 mtu 0.

Niemand kann jetzt in den Server ssh. Was sollte ich tun?

Bharadwaj Srigiriraju
quelle
1
Wenn Sie IPv6 aktiviert haben, versuchen Sie, ssh damit zu verwenden.
Agares
1
@Agares Das ist ein nützlicher Vorschlag für viele Netzwerkfehlkonfigurationen. MTU-Änderungen gelten jedoch sowohl für IPv4 als auch für IPv6. Wenn die MTU unter das vom Protokoll geforderte Minimum gesenkt wird, sind sowohl IPv4 als auch IPv6 deaktiviert. Das erneute Erhöhen der MTU reicht nicht aus, um das deaktivierte Protokoll wieder zu aktivieren.
Kasperd
Nun, dann entschuldigen Sie die Irreführung.
Agares

Antworten:

22

Stellen Sie eine Verbindung zur Konsole her und wechseln Sie die MTU zurück. Wenn Sie keinen Konsolenzugriff haben, starten Sie den Server neu.

Mike Scott
quelle
1
Verbindung zur Konsole konnte nicht hergestellt werden. Ein Neustart hat das Problem behoben ... Danke!
Bharadwaj Srigiriraju
7

Es ist nicht klar, welches Betriebssystem Sie verwenden. Ich habe Ihren spezifischen Befehl auf zwei verschiedenen Linux-Versionen getestet und jede hat mir eine Fehlermeldung gegeben:

RTNETLINK answers: Invalid argument

Wenn Sie ein System gefunden haben, mit dem Sie die MTU tatsächlich auf 0 setzen können, würde ich dies als Kernel-Fehler betrachten. Es ist jedoch plausibel, dass Systeme existieren, bei denen das Setzen der MTU auf 0 eine andere Bedeutung hat, z. B. die automatische Erkennung der MTU.

IPv4 erfordert, dass alle Knoten eine MTU von mindestens 68 haben. Linux weiß dies und deaktiviert IPv4 auf der Schnittstelle, wenn die MTU auf einen niedrigeren Wert wie z. B. 67 eingestellt ist. Auf diese Weise können Sie sich aus dem System ausschließen. Das ist unpraktisch, und ich hätte es als besseres Design angesehen, wenn der Kernel die MTU-Änderung ablehnen würde, solange die Schnittstelle eine IP-Adresse hat, die eine höhere MTU erfordert.

Wenn Sie versehentlich sowohl IPv4 als auch IPv6 auf einer Netzwerkschnittstelle deaktivieren, ist es unwahrscheinlich, dass Sie eine Möglichkeit finden, den Computer über diese Netzwerkschnittstelle remote zu verwalten. Wenn der Server über andere Netzwerkschnittstellen verfügt, können Sie möglicherweise auf diese Weise darauf zugreifen. Selbst wenn die andere Netzwerkschnittstelle nicht konfiguriert wurde, verfügt sie möglicherweise über eine lokale IPv6-Verbindungsadresse, an die von einem anderen Host im selben Segment gesendet werden kann. Andernfalls ist eine serielle Konsole weiterhin eine Option, da eine serielle Konsole völlig unabhängig von der Netzwerkkonfiguration des Hosts ist. Letztendlich können Sie den Computer neu starten, wenn Sie remote Zugriff darauf haben. Solange Sie die fehlerhafte Änderung nicht in Konfigurationsdateien geschrieben haben, sollte ein Neustart das Problem beheben.

Kasperd
quelle
1
Ich führe eine Ubuntu-Instanz unter AWS aus. Der gleiche Fehler trat auf, als ich es tat ip link set eth0 mtu 0, aber als ich es sudoauf dem gleichen tat , änderte es die MTU ohne Vorwarnung und sperrte mich aus dem SSH aus. Das Einstellen der MTU auf diese Weise scheint jedoch eine vorübergehende Änderung zu sein, da ein Neustart das Problem behoben hat.
Bharadwaj Srigiriraju
1
@ForbiddenOverseer Der Grund für diese vorübergehende Änderung ist, dass Sie Ihre Einstellungsänderung nicht tatsächlich in Ihre Konfigurationsdateien übernommen haben.
Reagiert
2
@ForbiddenOverseer Ich habe ein Ubuntu 12.04-System, auf dem ich versuchen kann, es zu reproduzieren. Ich werde es jedoch erst testen, wenn ich das nächste Mal physischen Zugriff auf das Gerät habe (aus offensichtlichen Gründen). Auf meinem 12.04-System wird ein neuerer Kernel als Ihres ausgeführt. Keine Ahnung, ob dies einen Unterschied macht.
Kasperd
2
@kasperd screendann sudo -idann ip link set eth0 mtu 0 ; sleep 30 ; ip link set eth0 mtu 1500vielleicht? (Oder welchen MTU-Wert Sie auch bevorzugen.) Wenn er kaputt geht, wird er nach einer halben Minute automatisch wiederhergestellt. Aber ich würde es immer noch nicht gerne auf einem kritischen System testen ... Andererseits scheint es heutzutage unwahrscheinlich, dass eine Ubuntu 12.04-Instanz kritisch ist.
Ein CVn
3
@ MichaelKjörling Wenn Sie die MTU auf 67 einstellen, wird IPv4 auf der Schnittstelle deaktiviert. Durch Erhöhen der MTU wird IPv4 nicht automatisch wieder eingeschaltet. Offensichtlich ist dies kein kritisches System, da ich nicht einmal in Betracht ziehen würde, diese MTU-Änderung zu testen, wenn es sich um ein kritisches System handeln würde. Trotzdem wird Ubuntu 12.04 weiterhin unterstützt, sodass ich nicht in Betracht ziehen würde, ein kritisches System von 12.04 zu aktualisieren, es sei denn, ich benötige einige der neuen Funktionen, die in 14.04 verfügbar sind.
Kasperd