Miglioramento delle prestazioni di OpenVPN


10

Ho cercato di migliorare le mie prestazioni OpenVPN e questa è la mia configurazione attuale:

 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

CLIENTE:

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

Ho apportato alcune modifiche a MTU e MSSFIX da quello che ho trovato sul web.

Ci sono delle modifiche al kernel che potrei fare? Questa è una scatola CentOS 6.x. Ho trovato alcune cose per BSD ma niente che funzionasse per Linux.

So che TCP è più lento di UDP, ma devo essere in grado di assomigliare al traffico SSL per passare attraverso un firewall sulla rete.

Altre idee?

Esegui il PING su un altro client della rete in cui eseguo l'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

Esistono modi per migliorare le prestazioni o eliminare il ping?

EDIT: l'impostazione di frammentazione sarebbe di aiuto?


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.Perché non chiedere all'amministratore di rete di aprire la porta openvpn al lavoro? In una nota correlata, questa domanda così com'è potrebbe violare i termini delle FAQ Licensing, legal advice, and *circumvention of security or policy*che vorrei chiarire.
prateek61,

1
Non c'è nulla di illegale al riguardo. È solo l'unico modo per accedere ai miei sistemi da remoto. :)

2
Stavo parlando di più di bypassare la politica del firewall ovunque tu sia. Perché non puoi chiedere all'amministratore di rete di aprire la porta? Non stavo davvero parlando della legalità, piuttosto dell'elusione della politica di sicurezza.
prateek61,

Forse sshuttle avrebbe funzionato meglio per te per tcp-over-tcp vpn
ptman

Risposte:


13

Risposta breve: disabilita comp-lzo.

Mi rendo conto che questo è un vecchio post, ma soffrivo anche delle scarse prestazioni di OpenVPN. Avevo provato di tutto, regolando l'MTU, cambiando i buffer snd e rcv, il bloccaggio mss, lo chiami. Il carico della CPU era trascurabile.

Per un capriccio, ho disabilitato la compressione (rimossa comp-lzodal client e dal server) e le prestazioni sono aumentate di 2-4 volte.

Quindi, con comp-lzoabilitato la mia prestazione massima era di circa 25-30 Mbit / s e senza di essa ho raggiunto 120 Mbit / s (la mia velocità di connessione a Internet).

Il server è un Xeon E5-2650, il client è Core i5-3320M. Entrambi con OpenVPN 2.3.10, AES-256-CBC, SHA512. Il mio Chromebook Intel ha anche massimizzato la mia velocità di Internet. Prestazioni raddoppiate sui miei client Android (14 Mbit / s -> 30 Mbit / s), corrispondenti alla velocità del tunnel IKEv2.


6

TCP sarà / molto / più lento di UDP, causato dal problema TCP-over-TCP . Fondamentalmente, TCP si affida a drop / congestione dei pacchetti per identificare i parametri di connessione e le connessioni TCP-over-OpenVPN non presentano nessuna di queste. Ma hai detto che non è un'opzione.

Puoi anche provare l' mtu-discopzione per scoprire automaticamente le impostazioni MTU ottimali per la tua connessione. Vi sono lievi discrepanze in luoghi diversi, come l'impostazione MTU di OpenVPN, inclusa la dimensione dell'intestazione Ethernet. [ 1 ]

L' tun-mtuimpostazione è enorme, poiché un pacchetto da 65 KB avrà molti problemi di latenza attraverso Internet (i pacchetti jumbo IPv4 hanno una dimensione di circa 9000 byte e funzionano principalmente su reti locali). Prova invece qualcosa di meno di 1460, come 1300, per vedere se MTU è il tuo problema.


2
Grazie, ciò ha risolto il mio problema nel far funzionare una query postgresql su OpenVPN. Ha funzionato durante le query su una singola colonna, ma non per l'intera colonna. Apparentemente, ciò è stato causato dalla dimensione MTU predefinita di 1500. L'impostazione su 1300 ha aiutato!
Christian Benke,

2

Anche se questo potrebbe essere un po 'in ritardo, potresti provare quello che ho fatto:

rimuovere tutte le opzioni relative a mss, mtu, ecc

eseguire una scansione delle porte presso il proprio istituto e selezionare una porta UDP, in genere dovrebbero essere aperte 53 porte GRE / 123 NDP:

Aggiungi queste righe alla configurazione del tuo server (fai riferimento qui )

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

Non capisco appieno queste impostazioni ma sicuramente mi hanno aiutato, alcuni dicono che aiuta molto, nella mia esperienza, ha aumentato la mia produttività di +/- 30%

Avvia il server su una di quelle porte e dovresti essere a posto: P

Spero che sia di aiuto!


9
-1 per troppo vodoo e non capire cosa fanno realmente le cose. Trovo irresponsabile raccomandare qualcosa allora, onestamente.
Preexo,

0

sndbuf e rcvbuf correggono un'impostazione ANTICA in linux / unix / openvpn dai giorni di dialup per optare per impostazioni più lente anche se il sistema operativo è ottimizzato per impostazioni più veloci

sndbuf / rcvbuf impostato su 0 utilizzerà semplicemente le impostazioni del sistema operativo

push viene utilizzato per assicurarsi che il client sia impostato correttamente ma è necessario un valore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.