Internet mit geringer Bandbreite über VPN

10

Ich habe gerade die Einrichtung eines VPN-NAS mit meinem neu erworbenen, nicht übertakteten Raspberry Pi Model-B abgeschlossen und bin auf etwas gestoßen, auf das ich anderswo keine Antwort finden kann.

Die Internetbandbreite, wie mit bestimmt

wget --output-document = / dev / null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

ist viel langsamer als ich erwarten würde. Ich erhalte über Ethernet ungefähr 1,34 MBit / s auf meinem Pi, wenn ich mich 7 MBit / s nähere, wenn das Ethernet direkt an meinen Laptop angeschlossen ist.

Das Problem ist mit OpenVPN, aber ich kann nicht genau herausfinden, was es ist. Hier ist, woher ich das weiß.

Ich habe die Download-Raten auf dem Pi mit dem aus- und eingeschalteten VPN verglichen - es waren 5,03 MBPS gegenüber 1,34 MBPS.

Dann habe ich es auf meinem Laptop (verkabelt) versucht - es war 6,9 MBPS (perfekt) gegenüber 6,7 MBPS (nahezu perfekt).

Der Fehler liegt also nicht nur bei meinem VPN-Dienst (PrivateInternetAccess), der die Bandbreite auf meinem Laptop um 3% reduziert, sondern auch damit, wie OpenVPN auf dem Pi ausgeführt wird, wodurch die Bandbreite um 74% reduziert wird.

Irgendwelche Ideen, warum OpenVPN auf Raspbian so schrecklich ist?

UPDATE: Der größte Teil dieser Reduzierung von 6,9 MBit / s auf dem Laptop ohne VPN auf 5,03 MBPS auf dem Pi ohne VPN scheint auf die Schreibgeschwindigkeit der SD-Karte zurückzuführen zu sein, die ich auf etwa 4,9 MBit / s festgelegt habe. Es ist diese enorme Reduzierung von 5,03 MPBS auf dem Pi ohne VPN auf 1,3 MBPS mit VPN, die erklärt werden muss.

UPDATE 2: Einige weitere Hinweise aus den Kommentaren: 1) OpenVPN nutzt 70% der CPU, wenn es ausgeführt wird und wget im Hintergrund ist. 2) Auf dem Pi erhalte ich 1,34 MBPS von einem US-VPN-Server und ungefähr 500- 600 KBPS von ALLEN europäischen VPN-Servern, ABER auf meinem Laptop bekomme ich 6,7 MBit / s vom US-amerikanischen VPN-Server und sehr ähnliche 6,6 MBit / s von einigen europäischen Servern wie dem in den Niederlanden. Was ich damit sagen will ist, dass die Entfernung zum Server den Pi und meinen Laptop überproportional zu beeinflussen scheint.

dbrane
quelle
Dies kann eine Kombination aus schlechter Schreibgeschwindigkeit und VPN-Overhead sein. Ich habe VPNs nie gern verwendet, weil sie über das Internet nur langsam waren und das SSH-Tunneln immer am schnellsten war. Gibt es Optionen zum Aktivieren der Komprimierung unter OpenVPN? Spielen Sie möglicherweise damit, möglicherweise verursacht die Verschlüsselung im laufenden Betrieb Probleme. Das ist eine gute Frage. Ich interessiere mich auch für die Antworten in Bezug auf die Pi
Piotr Kula
Schauen Sie sich beim topTesten die CPU-Auslastung an , die etwas über den Verschlüsselungsaufwand aussagen sollte.
Frepa
@Frepa Ausgezeichneter Vorschlag! Wenn das VPN aktiviert ist, belegt OpenVPN 70% der CPU. Denken Sie, dass dies den großen Unterschied bei den Übertragungsraten verursacht?
Dbrane
@dbrane, es hört sich so an, als ob die CPU der begrenzende Faktor ist. Wohin gehen die verbleibenden 30% der CPU-Zeit? Leerlauf? Ab Update 2 scheint die Netzwerklatenz (dh nicht nur der Durchsatz) für die Leistung wichtig zu sein. Vielleicht gibt es in VPN ein Händeschütteln.
Frepa
@Frepa Die meiste verbleibende CPU-Zeit wird von wget selbst verwendet. Dies ist der Befehl, mit dem ich die Übertragungsrate teste. Alles andere in der Liste verbraucht jeweils weniger als 1%. Ich verwende ein CA-Zertifikat mit dem VPN, wenn diese Informationen hilfreich sind. Vielleicht sollte ich versuchen zu übertakten und sehen, ob das hilft?
Dbrane

Antworten:

4

Auf Geräten mit geringem Stromverbrauch, zumindest bei Verwendung von SSH, habe ich gute Erfahrungen mit der Verwendung der RC4-Verschlüsselung zur Verbesserung der Leistung gemacht, da diese rechnerisch schneller ist und daher weniger CPU für die Bandbreite verwendet / höhere Bandbreiten bei gleicher CPU-Auslastung zulässt. In diesem Handbuch wird erläutert, wie Sie die Verschlüsselung in eine von OpenSSL unterstützte Verschlüsselung ändern - wie RC4:

http://openvpn.net/index.php/open-source/documentation/howto.html#security

Beachten Sie, dass RC4 nicht der sicherste verfügbare Algorithmus ist, SSL ihn jedoch weiterhin auf sichere Weise verwendet (wie hier beschrieben: http://en.wikipedia.org/wiki/RC4 ). Update : Dies ist jetzt weniger wahr als in der Vergangenheit. Das Vertrauen in die Sicherheit von RC4 nimmt weiter ab, da die Techniken, um es zu brechen, voranschreiten. 2013 haben wir verschiedene Fortschritte beim Brechen von RC4 und Spekulationen darüber erzielt, dass die NSA es geschafft hat . Wikipedia zitieren:

Ab 2013 gibt es Spekulationen, dass einige staatliche kryptologische Agenturen die Fähigkeit besitzen könnten, RC4 zu brechen, selbst wenn sie im TLS-Protokoll verwendet werden. [3] Microsoft empfiehlt, RC4 nach Möglichkeit zu deaktivieren. [4] [5]

Kann ich RC4 trotzdem empfehlen? Nicht wirklich allgemein. Natürlich müssen Sie Sicherheit und Leistung in Einklang bringen, und vielleicht brauchen Sie auch nicht viel Sicherheit - jede Kryptografie, sogar RC4, verlangsamt immer noch die Bemühungen zur Überwachung von Magneten wie die der NSA. Aber ich würde sehr vorsichtig mit tatsächlich sensiblen Daten sein und den Algorithmus nach Möglichkeit auf etwas anderes umstellen (ich habe begonnen, meine Himbeere zu bewerten, um nach schnellen Alternativen zu suchen).

Update 2 : Auf meiner (übertakteten) Himbeere ist AES nicht so langsam, wenn genügend CPU verfügbar ist. Die folgende Tabelle zeigt, dass RC4 ~ 57 MB / s verschlüsseln kann, während AES-128-CBC ~ 21,4 MB / s verschlüsseln kann. Natürlich erklärt aber nicht , warum Sie so schlechte Leistung - aber vielleicht sind Sie mit standardmäßig einem langsamen Chiffre, oder vielleicht ist es eine andere Ineffizienz , die könnten verbessert werden.

$ openssl speed rc4 aes
[...]
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
rc4              45281.36k    54782.67k    57196.80k    57391.48k    57570.77k
aes-128 cbc      17904.15k    20469.38k    21133.95k    21449.62k    21403.72k

Übertaktungseinstellungen von /boot/config.txt:

arm_freq=950

# for more options see http://elinux.org/RPi_config.txt
core_freq=250
sdram_freq=450
over_voltage=6
Blaisorblade
quelle
1
Jede Art von Verschlüsselung (ssh / vpn) führt zu einer zusätzlichen CPU-Auslastung, was wahrscheinlich Ihr Engpass ist.
EarthmeLon
1
Mein Punkt war, dass RC4 weniger CPU verbraucht als andere Chiffren, daher könnte es in dieser Situation gut sein. Aber ich bin mir nicht sicher, ob Sie meiner Antwort zustimmen oder nicht.
Blaisorblade
@earthmeLon: Ich habe meine Antwort aktualisiert, um meinen Standpunkt explizit darzulegen, da dies sowieso unklar war. Ich bin mir nicht sicher, ob das Ihren Kommentar adressiert.
Blaisorblade
Absolut. Ich war sehr dankbar zu wissen, dass RC4 aufgrund der Implementierung von SSH2 eine gute Lösung mit minimalem Overhead ist. Danke für die Information: D. Schade, dass du nicht sehen konntest, dass ich dir eine Gegenstimme gegeben habe, oder?
EarthmeLon
In der Tat - ich habe erst später bemerkt, dass Ihr Kommentar zeitlich mit der Gegenstimme zusammenfiel. Vielen Dank!
Blaisorblade