web-dev-qa-db-fra.com

Amélioration des performances d'OpenVPN

J'ai essayé d'améliorer mes performances OpenVPN et voici ma configuration actuelle:

 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

CLIENT:

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

J'ai apporté quelques modifications à MTU et MSSFIX à partir de ce que j'ai trouvé sur le Web.

Y a-t-il des changements de noyau que je pourrais apporter? Il s'agit d'une boîte CentOS 6.x. J'ai trouvé des trucs pour BSD mais rien qui fonctionnait pour Linux.

Je sais TCP est plus lent que UDP mais je dois pouvoir ressembler au trafic SSL pour passer à travers un pare-feu sur le réseau.

D'autres idées?

PING à un autre client sur le réseau dans lequel je 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

Existe-t-il des moyens d'améliorer les performances ou d'en supprimer le ping?

EDIT: La définition du paramètre de fragmentation aiderait-elle certains?

9
user192680

Réponse courte: désactiver comp-lzo.

Je me rends compte que c'est un ancien poste, mais je souffrais également de mauvaises performances OpenVPN. J'avais tout essayé, ajustant le MTU, changeant les tampons snd et rcv, serrage mss, vous l'appelez. La charge CPU était négligeable.

Sur un coup de tête, j'ai désactivé la compression (supprimé comp-lzo du client et du serveur) et les performances ont augmenté de 2 à 4 fois.

Donc avec comp-lzo activé ma performance maximale était d'environ 25-30 Mbit/s, et sans elle, j'ai atteint 120 Mbit/s (ma vitesse de connexion Internet).

Le serveur est un Xeon E5-2650, le client est le Core i5-3320M. Les deux exécutant OpenVPN 2.3.10, AES-256-CBC, SHA512. Mon Chromebook Intel a également optimisé ma vitesse Internet. Les performances ont doublé sur mes Android (14 Mbit/s -> 30 Mbit/s), correspondant à la vitesse du tunnel IKEv2.

12
Ingenium

TCP va être/beaucoup/plus lent que UDP, provoqué par le problème TCP-over-TCP . Fondamentalement, TCP s'appuie sur les suppressions/congestion de paquets pour identifier les paramètres de connexion, et vos connexions TCP sur OpenVPN ne rencontrent aucun de ces paramètres. Mais vous avez dit que ce n'était pas une option.

Vous pouvez également essayer le mtu-disc option pour découvrir automatiquement les paramètres MTU optimaux pour votre connexion. Il existe de légères disparités à différents endroits, tels que le paramètre MTU d'OpenVPN, y compris la taille de l'en-tête Ethernet. [ 1 ]

Votre tun-mtu le paramètre est énorme, car un paquet de 65 Ko va avoir beaucoup de problèmes de latence via Internet (les paquets jumbo IPv4 mesurent environ 9 000 octets et fonctionnent principalement sur les réseaux locaux). Essayez quelque chose de moins de 1460, comme 1300, pour voir si MTU est votre problème.

5
chronospoon

Même si cela peut être un peu tard, vous pouvez essayer ce que j'ai fait:

supprimer toutes les options liées à mss, mtu, etc.

effectuez une analyse de port dans votre établissement et sélectionnez un port UDP, généralement 53 ports NDP GRE/123 doivent être ouverts:

Ajoutez ces lignes à la configuration de votre serveur (ref ici )

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

Je ne comprends pas bien ces paramètres, mais ils ont sûrement aidé, certains disent que cela aide beaucoup, selon mon expérience, cela a augmenté mon débit de +/- 30%

Démarrez le serveur sur l'un de ces ports et vous devriez être prêt à partir: P

J'espère que cela t'aides!

2
Cybex

sndbuf et rcvbuf corrigent un paramètre ANCIEN dans linux/unix/openvpn des jours de connexion pour optimiser les paramètres plus lents, même si le système d'exploitation est optimisé pour les plus rapides

sndbuf/rcvbuf mis à 0 utilisera simplement les paramètres du système d'exploitation

Push est utilisé pour s'assurer que le client est correctement configuré mais là vous avez besoin d'une valeur.

0
jack