Wie kann ich die Leistung von OpenVPN in einer Netzwerkumgebung mit hohem Paketverlust verbessern?

1433
Eric Stdlib

Ich versuche, meinen Laptop an einen Server auf einem anderen Kontinent anzuschließen, und es scheint, dass die Verbindung sehr unzuverlässig ist (mit etwa 58% Paketverlust beim Ping).

Wenn Sie das VPN über eine Standardeinstellung für den geheimen Schlüssel von OpenVPN verwenden (die UDP verwendet), werden beim Pinging des VPN 57% Paketverluste gemeldet (dies stört mich wie eine langsame SSH-Einrichtung).

Gibt es eine effiziente Möglichkeit, die Paketverlustrate in dieser Situation zu verringern? Ich habe sowohl auf meinem Laptop als auch auf dem Server die administrative Kontrolle.


Hier ist ein Teil des Traceroute-Ergebnisses von meinem Laptop zum Server:

 8 221.176.27.254 (221.176.27.254) 16.870 ms 9 * * * 10 221.183.30.246 (221.183.30.246) 197.288 ms 11 223.118.10.30 (223.118.10.30) 201.422 ms 
1
Bestimmen Sie die Ursache für den Paketverlust. Ändern Sie Ihre DNS-Route, wenn Sie müssen. Ramhound vor 7 Jahren 0
Diese zwei Punkte sind in China. Wenn Ihr Datenverkehr in China hinein / aus China heraus verlagert wird, treffen Sie die große Firewall. Viel Spaß dabei, die Chinesen davon zu überzeugen, das zu beheben;) djsmiley2k vor 6 Jahren 0

2 Antworten auf die Frage

0
Tim G

Sie können OpenVPN in den Configs in TCP umschalten (Führen Sie sowohl Client als auch Server aus und stellen Sie sicher, dass Ihr TCP-OpenVPN vor dem Deaktivieren des UDP-Diensts sicher ist). Dadurch wird sichergestellt, dass alle Pakete letztendlich durchkommen. Dies wird zwar immer noch langsam sein, aber das Experiment ist es zumindest wert. Von openvpn.net:

Wenn Sie möchten, dass Ihr OpenVPN-Server anstelle eines UDP-Ports einen TCP-Port überwacht, verwenden Sie proto tcpanstelle von proto udp(Wenn OpenVPN sowohl einen UDP- als auch einen TCP-Port überwachen soll, müssen Sie zwei separate OpenVPN-Instanzen ausführen).


Bei Paketverlust können Sie nur den Pfad der Pakete festlegen. Verwenden Sie traceroute von beiden Enden aus, um den fehlerhaften Teil der Verbindung zu finden und umzugehen, wie Sie ihn umgehen oder robuster machen.

Versuchen Sie stattdessen TCP zu testen, ob Sie die Infrastrukturzeit in der Nähe der betroffenen Verbindung mieten können, um TCP über die schwache Verbindung zum Ziel zu tunneln. Dies würde UDP-Pakete so weit wie möglich fliegen lassen, ohne für die gesamte Länge Ihres Tunnels nur den schlechten Teil des TCP-Ports prüfen oder erneut übertragen zu müssen.

Wenn sich die schwache Verbindung auf halbem Weg befindet, können Sie von der Anmietung einer Infrastruktur an beiden Enden der schwachen Verbindung profitieren, anstatt nur auf einer Seite. Wenn wir jedoch über die Antarktis sprechen, könnte dies schwierig sein.

Wenn Sie sich für den Test dieser Route entschieden haben, empfehle ich udptunnel als mögliche Lösung. ( udptunnelist ein eigenes Paket auf Ubuntu, aber andere Optionen wie socat oder creative netcat piping funktionieren.)

Durch die Umstellung auf TCP wird die Paketverlustrate verringert (auf 23%), die durchschnittliche Ping-Verzögerung beträgt jedoch mehr als 60 Sekunden. Es ist schwierig für mich, dem Link Infrastrukturen hinzuzufügen. Eric Stdlib vor 7 Jahren 0
Kannst du wenigstens sehen, wo die schlechte Verbindung zu Traceroute liegt? Wenn Sie dies genau feststellen, werden Sie zumindest klarstellen, welche Optionen Sie möglicherweise haben. Um zu verdeutlichen, durch "Mietinfrastruktur" mein Denken war im Sinne dieses Beispiels: Verbindung von Honolulu nach Naher Osten-Kalifornien. Es stellt sich heraus, dass die schlechte Verbindung zwischen SanFran und Middle-of-Nowhere liegt. Mieten Sie eine AWS-Instanz in Kalifornien. Gehen Sie UDP-VPN durch und durch, aber tunneln Sie die VPN-Pakete über eine TCP-Verbindung zwischen SanFran und Middle-of-Nowhere. Ist diese Lösung (möglicherweise) auf Ihr spezifisches Szenario anwendbar? Tim G vor 7 Jahren 0
Es scheint, dass die Verbindung mit der längsten Verzögerung bei diesem Sprung auftritt, aber was kann ich damit tun (ein Server zu mieten ist für mich irgendwie schwierig)? Ich habe das Traceroute-Ergebnis an meine Frage angehängt. Eric Stdlib vor 7 Jahren 0
0
Vi.

Verwenden Sie den UDPspeeder . Es handelt sich um Bandbreiten-Overhead für den Paketverlustwiderstand.

Starten Sie auf dem Server

speederv2_amd64 -s -l 0.0.0.0:1193 -r 127.0.0.1:1194 

Beginnen Sie auf der Clientseite

speederv2_amd64 -c -l 127.0.0.1:1194 -r your_server_ip:1993 

Verweisen Sie dann auf OpenVPN UDP-Client auf 127.0.0.1:1194.

Verwenden Sie den --fecParameter, um die Redundanz einzustellen.