Poprawa wydajności OpenVPN


10

Próbowałem poprawić wydajność OpenVPN i oto moja obecna konfiguracja:

 cat /etc/openvpn/server.conf
port 443 #- port
proto tcp #- protocol
dev tun
#tun-mtu 1500
tun-mtu-extra 32 
#mssfix 1450
tun-mtu 64800
mssfix 1440
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
#plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS
#plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS
client-to-client
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

KLIENT:

client
dev tun
proto tcp
remote 18.4.26.8 443
resolv-retry infinite
nobind
tun-mtu 64800
tun-mtu-extra 32
mssfix 1440
persist-key
persist-tun
auth-user-pass
comp-lzo
verb 3

Wprowadziłem pewne zmiany w MTU i MSSFIX od tego, co znalazłem w sieci.

Czy mogę wprowadzić jakieś zmiany w jądrze? To jest pudełko CentOS 6.x. Znalazłem trochę rzeczy opartych na BSD, ale nic nie działało dla Linuksa.

Wiem, że TCP działa wolniej niż UDP, ale muszę wyglądać jak ruch SSL, aby przejść przez zaporę w sieci.

Inne pomysły?

PING do innego klienta w sieci, do której I RDP.

Pinging 10.8.0.6 with 32 bytes of data:
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=565ms TTL=128
Reply from 10.8.0.6: bytes=32 time=152ms TTL=128
Reply from 10.8.0.6: bytes=32 time=782ms TTL=128

Ping statistics for 10.8.0.6:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 152ms, Maximum = 782ms, Average = 412ms

Czy są jakieś sposoby na poprawę wydajności lub upuszczenie pinga?

EDYCJA: Czy ustawienie fragmentacji pomogłoby?


I know TCP is slower then UDP but I need to be able to look like SSL traffic to get thru a firewall on the network.Dlaczego nie poprosić administratora sieci o otwarcie portu openvpn w pracy? W powiązanej notatce to pytanie może naruszać warunki FAQ Licensing, legal advice, and *circumvention of security or policy*, które wyjaśnię.
prateek61,

1
Nie ma w tym nic nielegalnego. To tylko jedyny sposób na zdalny dostęp do moich systemów. :)

2
Mówiłem więcej o omijaniu zasad zapory, gdziekolwiek jesteś. Dlaczego nie możesz poprosić administratora sieci o otwarcie portu? Tak naprawdę nie mówiłem o legalności, a raczej o obchodzeniu polityki bezpieczeństwa.
prateek61

Może sshuttle będzie działać lepiej dla ciebie tpp -over-tcp VPN
Ptman

Odpowiedzi:


13

Krótka odpowiedź: wyłącz comp-lzo.

Zdaję sobie sprawę, że to stary post, ale cierpiałem również z powodu słabej wydajności OpenVPN. Próbowałem wszystkiego, dostosowując MTU, zmieniając bufory snd i rcv, zaciskanie mss, nazywacie to. Obciążenie procesora było znikome.

comp-lzoKaprys wyłączyłem kompresję (usuniętą z klienta i serwera), a wydajność wzrosła 2-4x.

Tak więc, po comp-lzowłączeniu moja maksymalna wydajność wynosiła około 25-30 Mbit / s, a bez niej osiągnąłem 120 Mbit / s (prędkość mojego połączenia internetowego).

Serwer to Xeon E5-2650, klient to Core i5-3320M. Oba działają z OpenVPN 2.3.10, AES-256-CBC, SHA512. Mój Chromebook Intel również zwiększył prędkość internetu. Wydajność podwoiła się na moich klientach z Androidem (14 Mbit / s -> 30 Mbit / s), co odpowiada prędkości tunelu IKEv2.


6

TCP będzie / znacznie / wolniejszy niż UDP, spowodowany problemem TCP-over-TCP . Zasadniczo protokół TCP polega na upuszczaniu / przeciążeniu pakietów w celu identyfikacji parametrów połączenia, a połączenia TCP przez OpenVPN nie doświadczają żadnego z nich. Ale powiedziałeś, że to nie jest opcja.

Możesz także wypróbować mtu-discopcję automatycznego wykrycia optymalnych ustawień MTU dla twojego połączenia. Występują niewielkie niedopasowania w różnych miejscach, takich jak ustawienie MTU OpenVPN, w tym rozmiar nagłówka Ethernet. [ 1 ]

Twoje tun-mtuustawienie jest ogromne, ponieważ pakiet 65 KB będzie miał wiele problemów związanych z opóźnieniami w Internecie (duże pakiety IPv4 mają około 9000 bajtów i przeważnie działają w sieciach lokalnych). Wypróbuj coś poniżej 1460, np. 1300, aby sprawdzić, czy problem stanowi MTU.


2
Dzięki, że to rozwiązało mój problem z uzyskaniem zapytania postgresql do pracy w OpenVPN. Działa, gdy zapytanie dotyczy pojedynczej kolumny, ale nie dotyczy całej kolumny. Najwyraźniej było to spowodowane domyślnym rozmiarem MTU wynoszącym 1500. Ustawienie go na 1300 pomogło!
Christian Benke,

2

Chociaż może to być trochę za późno, możesz spróbować tego, co zrobiłem:

usuń wszystkie opcje związane z mss, mtu itp

wykonaj skanowanie portów w swojej instytucji i wybierz port UDP, ogólnie 53 porty GRE / 123 NDP powinny być otwarte:

Dodaj te wiersze do konfiguracji serwera (patrz tutaj )

#possible bandwidth increase
sndbuf 393216
rcvbuf 393216
push "sndbuf 393216"
push "rcvbuf 393216"

Nie do końca rozumiem te ustawienia, ale z pewnością pomogły, niektórzy twierdzą, że to pomaga, z mojego doświadczenia wynika, że ​​zwiększyłem moją przepustowość o +/- 30%

Uruchom serwer na jednym z tych portów i powinieneś iść: P

Mam nadzieję że to pomoże!


9
-1 za zbyt dużo vodoo i niezrozumienie, co faktycznie robi. Szczerze mówiąc, uważam za nieodpowiedzialne.
Preexo,

0

sndbuf i rcvbuf korygują ustawienie ANTYCZNE w linux / unix / openvpn od dni dialup, aby zoptymalizować wolniejsze ustawienia, nawet jeśli system operacyjny jest zoptymalizowany pod kątem szybszych

sndbuf / rcvbuf ustawiony na 0 po prostu użyje ustawień systemu operacyjnego

Funkcja push służy do upewnienia się, że klient jest poprawnie ustawiony, ale tam potrzebujesz wartości.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.