Amélioration des performances d'OpenVPN

10

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 que TCP est plus lent que UDP mais je dois pouvoir ressembler au trafic SSL pour passer par 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?


la source
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.Pourquoi ne pas demander à votre administrateur réseau d'ouvrir le port openvpn au travail? Sur une note connexe, cette question telle quelle peut violer les termes de la FAQ que Licensing, legal advice, and *circumvention of security or policy*je voudrais clarifier.
prateek61
1
Il n'y a rien d'illégal à ce sujet. C'est juste le seul moyen d'accéder à mes propres systèmes à distance. :)
2
Je parlais plus de contourner la politique de pare-feu où que vous soyez. Pourquoi ne pouvez-vous pas demander à l'administrateur réseau d'ouvrir le port? Je ne parlais pas vraiment de la légalité, plutôt du contournement de la politique de sécurité.
prateek61
Peut-être que sshuttle fonctionnerait mieux pour vous pour vpn tcp-over-tcp
ptman

Réponses:

13

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ée comp-lzodu client et du serveur) et les performances ont augmenté de 2 à 4 fois.

Donc, avec comp-lzoactivé, 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 clients Android (14 Mbit / s -> 30 Mbit / s), correspondant à la vitesse du tunnel IKEv2.

Ingenium
la source
6

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 l' mtu-discoption 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-mtuparamè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 9000 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.

chronospoon
la source
2
Merci, cela a résolu mon problème pour obtenir une requête postgresql pour travailler sur OpenVPN. Cela a fonctionné lors d'une requête sur une seule colonne, mais pas pour toute la colonne. Apparemment, cela a été causé par la taille MTU par défaut de 1500. La définition de 1300 a aidé!
Christian Benke
2

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 des ports dans votre établissement et sélectionnez un port UDP, généralement 53 ports GRE / 123 NDP doivent être ouverts:

Ajoutez ces lignes à votre configuration 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!

Cybex
la source
9
-1 pour trop de vodoo et ne pas comprendre ce que les choses font réellement. Je trouve irresponsable de recommander quelque chose alors, honnêtement.
Preexo
0

sndbuf et rcvbuf corrigent un paramètre ANCIEN dans linux / unix / openvpn à partir 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.

jack
la source