Die SSH-Sitzung über OpenVPN wird nach einigen Zeilen unterbrochen / gesperrt

10

Ich habe eine große Anzahl identischer lüfterloser PCs mit Debian 6 (ARM). Die meisten davon sind über Comcast verbunden und funktionieren einwandfrei. Einige sind mit WiMax-Modems verbunden und haben Kommunikationsprobleme.

Insbesondere: Wenn ich zu einem dieser Befehle ssh und einen Befehl wie 'ps -ax' versuche, erhalte ich ungefähr 3 Zeilen zurück und dann wird die Sitzung gesperrt. Wenn ich es sitzen lasse, endet es schließlich mit einer "Sitzung, die von Gleichaltrigen geschlossen wird".

Was ich versucht habe:

  • ssh -vvv → keine Fehlermeldungen
  • ssh <user@host> 'command'→ Dies gibt manchmal die vollständige Ausgabe des Befehls zurück. Manchmal wird es überhaupt keine Verbindung herstellen.

Vorschläge für andere Dinge zu versuchen?

Ich habe festgestellt, dass ich einige Befehle erfolgreich ausführen kann: z. B. ein Dutzend Mal oder öfter die Eingabetaste zu drücken, ist in Ordnung. cd ~und lffunktioniert dann wie df -h. Ich kann dfviele Male erfolgreich laufen, aber sobald ich etwas mit mehr Ausgabe versuche (z. B. ls /etc), blockiert es.

Macht es einen Unterschied, dass ich versuche, über OpenVPN zwischen diesen beiden Hosts zu kommunizieren?

ethrbunny
quelle
Stellen Sie sicher, dass Ihre Pfad-MTU nicht niedriger als Ihre konfigurierte Schnittstellen-MTU ist. SSH fragmentiert nicht, sodass bei gesetztem DF-Bit stattdessen Pakete verworfen werden. Lesen Sie dies für eine viel detailliertere Erklärung.
Aaron Copley
1
Es wurde versucht, die MTU an allen Schnittstellen auf 1400 ohne erkennbaren Effekt einzustellen. Getestet mit ping -c 1 -s $((5000-28)) -M do machine-ipdem 1500 zurückgegeben - wie Maschine
ethrbunny
1
tracepath -n <ip>bestätigt dies: 1500 ist den ganzen Weg erlaubt.
Ethrbunny
1
Vergib mir meine Unwissenheit, aber wie -Thilft das in diesem Fall?
Aaron Copley
2
<Liest den zweiten Absatz> Es ist ein MTU-Problem. <Liest weiter> Ja, MTU-Problem. In diesem Thread finden Sie eine Erklärung. Ich stimme nicht dafür, als Duplikat zu schließen, da es einen Punkt gibt, den der andere Thread nicht behandelt: Was Sie in Ihrer VPN-Konfiguration ändern müssen, um das Problem zu beheben.
Gilles 'SO - hör auf böse zu sein'

Antworten:

9

Sie haben die Symptome eines MTU- Problems: Einige TCP-Verbindungen frieren ein, mehr oder weniger reproduzierbar für einen bestimmten Befehl oder eine bestimmte URL, jedoch ohne leicht erkennbares Gesamtmuster. Ein verräterisches Symptom ist, dass interaktive SSH-Sitzungen gut funktionieren, solange Sie keine Befehle mit großer Ausgabe ausführen. Siehe können den Zugriff nicht wählen https - Sites auf Linux über PPPoE für eine Erklärung.

OpenVPN bietet mehrere MTU-bezogene Optionen - suchen Sie im Handbuch nach „mtu“. Ich habe nicht genug Erfahrung, um sicher zu sein, welche Option Sie ändern müssen. (Es ist sogar möglich, dass Sie etwas in der Wimax-Modemkonfiguration ändern können.) Die wahrscheinlichste Option zum Ändern ist mssfix: Versuchen Sie, den Wert zu verringern, bis das Problem behoben ist. Der Standardwert ist 1450; Etwa 1400 könnte Ihr Problem beheben. Versuchen Sie es openvpn --fragment 1200 -mssfix; Wenn es hilft, erhöhen Sie den Wert, bis es zu brechen beginnt.

Gilles 'SO - hör auf böse zu sein'
quelle
Ich beginne mit der Einstellung mssfix 1200auf dem Server und dem Neustart. So weit, ist es gut. Wenn dies funktioniert, werde ich es auf 1300 oder 1400 erhöhen und sehen, was passiert. Zu viele Clients, um alle Remote-Konfigurationen zu ändern, sodass die Serverseite dies tun muss.
Ethrbunny
Ich wusste, dass es MTU war!
Aaron Copley
2

Gilles 'Antwort ist völlig richtig, aber es gibt auch eine andere mögliche Ursache dafür.

In Version 2.3.0 von OpenVPN gab es einen Fehler, durch den Clients beim Senden großer Datenmengen getrennt wurden: https://community.openvpn.net/openvpn/ticket/263

Dieses Problem trat nur bei Verwendung von TCP auf. UDP war völlig unberührt.

Patrick
quelle
1

Wir hatten das gleiche Problem und es war in der Tat ein MTU-Problem. Für uns lag das Problem jedoch nicht in der openVPN-Konfiguration, sondern auf der tun0-Schnittstelle.

Wie wir es gelöst haben: Finden Sie zuerst die maximale Paketgröße, die durchlaufen wurde, mit

ping <host> -s 1500 -M do

und Reduzieren des 1500-Werts, bis ein Wert durchlaufen wurde (für uns 1350).

Sobald der richtige Wert gefunden wurde, ändern Sie die tun0-Schnittstelle mit

sudo ip link set dev tun0 mtu 1350

wie von Sebastian hier vorgeschlagen . Danach lief das VPN reibungslos.

Eino Gourdin
quelle