Wir haben Dutzende eingebetteter Geräte bei unseren Kunden installiert, die alle unseren OpenVPN-Service nutzen. Das funktioniert im Allgemeinen gut, aber einige unserer Kunden haben ernsthafte Probleme mit der MTU. Unser Einfluss auf die Kunden, ihre Netzwerke zu reparieren, ist begrenzt, daher benötigen wir OpenVPN, um damit umzugehen. Kurz gesagt, meine Frage lautet:
Wie kann ich die Low-Path-MTUs einiger Clients auf Clientbasis verringern, ohne globale Einstellungen zu verwenden, die den Worst-Case für alle Clients berücksichtigen?
Beachten Sie, dass es im schlimmsten Fall ziemlich schlimm ist: Pfad MTU 576, löscht alle Fragmente, fragmentiert sich nicht selbst, beachtet DF-Bit nicht. Sie sehen, warum ich es vorziehen würde, dieses Problem nicht global zu lösen.
Die OpenVPN-Manpage bietet eine Reihe von MTU-bezogenen Optionen, insbesondere --link-mtu, --tun-mtu, --fragment and --mssfix
. Aber es heißt auch
--link-mtu [...] Es ist am besten, diesen Parameter nur festzulegen, wenn Sie wissen, was Sie tun.
--tun-mtu [...] Verwenden Sie am besten die Optionen --fragment und / oder --mssfix, um Probleme mit der MTU-Größe zu beheben.
Also habe ich angefangen zu experimentieren --fragment
und --mssfix
musste schnell feststellen, dass erstere nicht nur clientseitig, sondern auch serverseitig gesetzt werden müssen . Ich habe dann in der serverseitigen Konfiguration pro Client über gesucht, --client-config-dir
aber es heißt
Die folgenden Optionen sind in einem clientspezifischen Kontext zulässig: --push, --push-reset, --iroute, --ifconfig-push und --config.
Keine Erwähnung von MTU-Optionen!
Also hier sind meine spezifischeren Fragen:
- Warum genau sind
link-mtu
undtun-mtu
entmutigt? Was sind die potenziellen Probleme mit diesen Optionen? Beachten Sie, dass ich mit Low-Level-IP-Header-Munging ziemlich vertraut bin. - Welche der Optionen
link-mtu tun-mtu fragment mssfix
müssen serverseitig gespiegelt werden, um zu funktionieren? - In welcher der Optionen
link-mtu tun-mtu fragment mssfix
kann verwendet werdenclient-config-dir
? - Falls alle vier Optionen serverseitig gespiegelt werden müssen und im Inneren nicht verwendet werden können
client-config-dir
: Gibt es Alternativen zur Bekämpfung von MTUs mit geringem Pfad pro Client?
Anmerkungen:
- Teile meiner Fragen wurden bereits gebeten , vor 5 Jahren war hier , aber sie haben nicht wirklich damals beantwortet worden, daher wage ich sie zu duplizieren.
- Der OpenVPN-Server ist derzeit 2.2.1 unter Ubuntu 12.04. Wir bereiten ein Upgrade auf 2.3.2 auf Ubuntu 14.04 vor
- Die OpenVPN-Clients sind 2.2.1 unter Debian 7.6
- Gerne bestimme ich die Weg-MTU eines Kunden selbst manuell
- Momentan können wir nicht viel serverseitig testen. Wir bauen aber einen kompletten separaten Prüfstand, der demnächst fertig sein soll.
Für hilfreiche Hinweise bin ich dankbar.
quelle
iptables
Regeln eingefügt werden, um die MSS für alle SYN-Pakete von oder zu dieser Client-IP-Adresse zu reduzieren.Antworten:
Ich habe das Problem auf der Client-Seite gelöst, indem ich
mssfix 1300
der Konfigurationsdatei die Option hinzugefügt habe .Aus der openvpn-Manpage:
Die ursprüngliche Idee für meine Lösung kam von personalvpn.org
quelle
mssfix
kann nur eingestellt Client-Seite werden? Nun, das ist zumindest etwas. Es hilft zwar nicht bei UDP-Paketen (weshalb ich mich für die anderen Optionen interessierte, aber zumindest die empfohlenenfragment
müssen auch serverseitig eingestellt werden)Angesichts des Mangels an Antworten poste ich jetzt eine Lösung, die nicht sehr elegant, aber einfach ist: Führen Sie eine andere OpenVPN-Instanz auf TCP für "schlechte Clients" aus.
und senken Sie die TCP-MSS auf dem Client, z
Ein Vorteil dieser Lösung ist, dass jeder Client seine individuelle MSS einstellen kann.
Dies ist zwar TCP-over-TCP, dies sollte jedoch in vielen Szenarien ausreichend funktionieren .
Beachten Sie, dass ich immer noch sehr interessierte Lösungen bin, die keine erfordern
proto tcp
, und ich werde sie als gültige Antwort markieren, wenn sie mehr oder weniger meinen umrissenen Anforderungen entsprechen.quelle