.png)
Ich konfiguriere derzeit ein Site-to-Site-VPN zwischen zwei VPS, das sowohl ausgehende als auch eingehende Verbindungen erfordert. Es wird von einer Anwendung mit hoher Bandbreite verwendet, daher benötige ich die maximale Geschwindigkeit, die ich über die Verbindung erreichen kann.
Mit iperf3 erreiche ich über die Verbindung zuverlässig etwa 600 Mbit/s mit einem Ping von ca. 30 ms.
Über OpenSSH SCP erreiche ich etwa 260 Mbit/s, womit ich angesichts der zusätzlichen Verschlüsselung zufrieden bin.
Ich habe verschiedene VPN-Konfigurationen ausprobiert, hauptsächlich mit OpenVPN. Ich habe sndbuf/rcvbuf-Änderungen ausprobiert, keine Verschlüsselung, keine Komprimierung, aber ich bekomme immer noch im Allgemeinen nur 20 Mbit mit UDP und 40 Mbit mit TLS auf Port 443.
Ich habe auch IPSec/L2TP, SoftEther (obwohl ich damit nur etwa 500 Kbit/s erreicht habe) und den in OpenSSH integrierten Tun-Adapter eingerichtet. Keiner davon konnte mir eine iperf-Geschwindigkeit über 40 Mbit/s bieten.
Ich habe die Festplatte und die CPU jedes Knotens genau beobachtet und keiner von beiden war ausgelastet. Ein Server ist deutlich weniger leistungsstark, erreicht aber während des Tests immer nur eine CPU-Auslastung von ca. 30 %.
Ich bin irgendwie ratlos. Ich brauche etwas, das Geschwindigkeiten über 200 Mbit/s erreichen kann (was, wie ich sicher weiß, möglich ist) und das nur von einer virtuellen Schnittstelle zur anderen routen muss. Theoretisch ist SoftEther dafür da. Soll ich weiterhin versuchen, SoftEther zu reparieren, um überhaupt tatsächliche Geschwindigkeiten zu erreichen?
Gibt es Vorschläge für weitere Aspekte zum Testen/Debuggen/Konfigurieren, um eine solide Tunnelschnittstelle zum Laufen zu bringen? Gibt es eine andere Software, die beim Weiterleiten der eingehenden Verbindungen hilft, sodass ich einen normalen Proxy-ähnlichen Tunnel verwenden kann? Danke!
Antwort1
Angesichts des in den Kommentaren geposteten Links habe ich beschlossen, mir diesen OpenVPN-Artikel noch einmal anzusehen: https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux
Mit einigen der Einstellungen aus diesem Artikel konnte ich durchschnittlich ~150 Mbit/s erreichen. Hier sind die Schritte, die ich zur Konfiguration meines OpenVPN unternommen habe, um dies zu erreichen.
Dies sind die Schritte, die ich in der Reihenfolge ausprobiert habe:
- Standardeinstellungen (mit AES-128): 14,7 Mbit/s
- Aktivieren Sie mssfix 0, tun-mtu 6000, Fragment 0: 16,3 Mbit/s
- Einstellung „keine Verschlüsselung“: 17,7 Mbit/s
- Zurück zu AES-128, tun-mtu 9000: 22,0 Mbit/s
- tun-mtu 18000: 27,2 Mbit/s
- tun-mtu 36000: 37,2 Mbit/s
- tun-mtu 60000: 44,9 Mbit/s
- Einstellung 'Chiffre BF-CBC' (kein großer Unterschied): 44,0 Mbit/s
- sndbuf 393216, rcvbuf 393216 auf Server und Client: 67,1 Mbit/s
- Erhöhte Größe der Linux UDP Recv-Puffern: 102 Mbit/s
- iperf3 [...] -P 10 um 10 parallele Verbindungen zu aktivieren: SUM:135 Mbit/s – 170 Mbit/s
Hier ist eine abschließende iperf3-Ausgabe:
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=37.2 ms
$ iperf3 -c 10.8.0.1 -p 5201
Connecting to host 10.8.0.1, port 5201
[ 4] local 10.8.0.2 port 59230 connected to 10.8.0.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 10.3 MBytes 86.5 Mbits/sec 2 632 KBytes
[ 4] 1.00-2.00 sec 12.0 MBytes 101 Mbits/sec 7 569 KBytes
[ 4] 2.00-3.00 sec 11.4 MBytes 95.8 Mbits/sec 7 443 KBytes
[ 4] 3.00-4.00 sec 10.9 MBytes 91.2 Mbits/sec 5 443 KBytes
[ 4] 4.00-5.00 sec 11.7 MBytes 98.4 Mbits/sec 2 759 KBytes
[ 4] 5.00-6.00 sec 13.0 MBytes 109 Mbits/sec 6 822 KBytes
[ 4] 6.00-7.00 sec 13.5 MBytes 113 Mbits/sec 5 696 KBytes
[ 4] 7.00-8.00 sec 13.9 MBytes 117 Mbits/sec 6 696 KBytes
[ 4] 8.00-9.00 sec 11.8 MBytes 98.9 Mbits/sec 5 696 KBytes
[ 4] 9.00-10.00 sec 12.5 MBytes 105 Mbits/sec 4 696 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 121 MBytes 102 Mbits/sec 49 sender
[ 4] 0.00-10.00 sec 120 MBytes 101 Mbits/sec receiver
Im Vergleich zur Direktverbindung ohne VPN:
$ iperf3 -c [...] -p 5201
Connecting to host [...], port 5201
[ 4] local [...] port 52172 connected to [...] port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 51.9 MBytes 435 Mbits/sec 0 3.03 MBytes
[ 4] 1.00-2.00 sec 73.3 MBytes 615 Mbits/sec 0 3.03 MBytes
[ 4] 2.00-3.00 sec 73.3 MBytes 615 Mbits/sec 0 3.03 MBytes
[ 4] 3.00-4.00 sec 72.7 MBytes 610 Mbits/sec 0 3.03 MBytes
[ 4] 4.00-5.00 sec 72.1 MBytes 605 Mbits/sec 0 3.03 MBytes
[ 4] 5.00-6.00 sec 73.7 MBytes 619 Mbits/sec 0 3.03 MBytes
[ 4] 6.00-7.00 sec 75.0 MBytes 629 Mbits/sec 0 3.03 MBytes
[ 4] 7.00-8.00 sec 72.5 MBytes 608 Mbits/sec 0 3.03 MBytes
[ 4] 8.00-9.00 sec 74.9 MBytes 628 Mbits/sec 0 3.03 MBytes
[ 4] 9.00-10.00 sec 72.6 MBytes 609 Mbits/sec 0 3.03 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 712 MBytes 597 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 710 MBytes 596 Mbits/sec receiver
Was ich gelernt habe
- Mein Netzwerk hat erheblich von der erhöhten Tun-MTU profitiert.
- UDP-Überlastung ist ein großes Problem. Durch Erhöhen des Linux UDP recvbuf konnte die UDP-Leistung deutlich verbessert werden. Die erneut übertragenen Pakete in iperf zeigen, dass Überlastung immer noch ein Problem darstellt.Alle Verbesserungsvorschläge sind willkommen.
- Durch parallele iperf3-Verbindungen konnte die Geschwindigkeit noch weiter gesteigert werden.
- Solange die CPU-Kernauslastung unter 100 % blieb, hatten Chiffren keinen großen Einfluss auf die Leistung.
- Es ist schwierig, ein VPN über das offene Internet zu konfigurieren, das Gigabit-Geschwindigkeiten erreicht.
- Dies ist immer noch 1/6 der Leistung des einfachen Netzwerks.