Tu hésites entre OpenVPN et WireGuard pour ton VPN self-host sur Contabo (ou Hetzner, ou OVH). Tu lis partout "WireGuard plus rapide" sans jamais voir un chiffre vérifiable ni comprendre pourquoi. Ce comparatif technique tranche : on regarde la crypto sous le capot, la mécanique du handshake, l'impact kernel vs userspace, la conso batterie mobile, l'historique d'audits — et on finit par 100 runs iperf3 reproductibles sur le même VPS.
Spoiler : WireGuard gagne sur tous les axes mesurables. OpenVPN garde deux niches légitimes.
Architecture et primitives crypto
Le delta de performance vient d'abord du modèle architectural, pas seulement du code.
OpenVPN
- Userspace (process
openvpn) - Crypto : choix configurable via
--cipher,--auth,--tls-cipher. AES-256-GCM par défaut depuis 2.6. - Negotiation TLS classique : multi-round-trip, certificats X.509, CRL, OCSP. Standard mais lourd.
- Bibliothèques externes : OpenSSL ou mbedTLS. Toutes les CVE OpenSSL impactent OpenVPN.
- Codebase : ~70 000 lignes C (sans dépendances).
WireGuard
- Kernel module (depuis Linux 5.6, mainline), ou implémentations userspace (
wireguard-gosur macOS/Windows). - Crypto : figée par design. Pas de négociation. Curve25519 (key exchange), ChaCha20-Poly1305 (chiffrement), BLAKE2s (hash), HKDF (KDF), SipHash24.
- Handshake Noise IKpsk2 : 1.5 round-trips, état stocké minimal côté serveur, pas de certificat.
- Pas de dépendance crypto externe : tout est in-tree.
- Codebase : ~5 000 lignes C côté kernel.
Cette différence d'1 ordre de grandeur (5k vs 70k) explique pourquoi WireGuard a pu être audité de bout en bout par Cure53 en 2021. Tu peux faire pareil pour OpenVPN — mais c'est ~6 mois de boulot vs ~3 semaines pour WireGuard.
Vitesse de handshake
Test simple : combien de millisecondes entre wg-quick up et premier paquet routable ?
| Protocole | RTT handshake médian | RTT max observé (100 runs) |
|---|---|---|
| WireGuard | 38 ms | 71 ms |
| OpenVPN UDP (TLS 1.3, AES-256-GCM) | 412 ms | 1 020 ms |
| OpenVPN TCP | 680 ms | 1 850 ms |
L'écart vient du nombre d'aller-retours et du certificat TLS. WireGuard fait son key exchange en 1.5 RTT, OpenVPN en fait 6 à 8 (TCP handshake + TLS handshake + auth + push config).
Conséquence pratique : sur 4G qui switche d'antenne (roaming), WireGuard reconnecte instantanément ; OpenVPN met 1-2 secondes parfois plus, et tu perds des paquets visibles dans tes outils.
Kernel module vs userspace : pourquoi c'est massif
Quand un paquet passe en userspace, il fait l'aller-retour kernel → userspace → kernel : 2 changements de contexte CPU, copies mémoire, scheduler. À 1 Gbps, ça représente 80 000 paquets/seconde minimum, donc 160 000 context switches.
Avec WireGuard en kernel module, le paquet ne quitte jamais le kernel. Pas de context switch, pas de copie. Le throughput dépend du CPU disponible, mais le plafond effectif est typiquement 3-5× celui d'OpenVPN userspace à CPU équivalent.
Sur un VPS Contabo S Cloud (4 vCPU AMD EPYC), on observe :
- WireGuard : ~3.2 Gbps côté serveur (loopback, lien interne) avant saturation CPU
- OpenVPN AES-256-GCM : ~850 Mbps avant saturation CPU
- OpenVPN ChaCha20 : ~920 Mbps avant saturation CPU (légèrement mieux car ChaCha bénéficie moins de l'AES-NI)
En sortie réseau réelle (200 Mbps Contabo), aucun des deux ne sature le CPU — mais le profil de latence diffère : WireGuard ajoute ~0.1 ms, OpenVPN ajoute ~1.5 ms par paquet en moyenne.
Benchmarks réels : 100 runs iperf3
Setup : VPS Contabo S Cloud (Ubuntu 24.04, kernel 6.8), client MacBook M2 fibre Orange 1 Gbps, route Paris → Nuremberg via Telia.
100 runs étalés sur 3 créneaux (9h, 14h, 21h), 30s par run, médiane retenue.
| Configuration | Down (Mbps) | Up (Mbps) | Latence ajoutée | Retransmits TCP |
|---|---|---|---|---|
| Baseline (sans VPN) | 938 | 932 | — | 0,02 % |
| WireGuard UDP | 901 | 893 | +0.1 ms | 0,03 % |
| OpenVPN UDP (AES-256-GCM) | 684 | 678 | +1.5 ms | 0,11 % |
| OpenVPN TCP (AES-256-GCM) | 412 | 408 | +3.2 ms | 1,8 % |
| OpenVPN UDP (ChaCha20) | 712 | 706 | +1.3 ms | 0,09 % |
Lecture : WireGuard perd 4 % vs ligne brute, OpenVPN UDP en perd 27 %, OpenVPN TCP en perd 56 %.
Méthodologie complète et JSON brut dans le guide benchmarks WireGuard vs OpenVPN.
Impact batterie sur mobile
Sur iPhone 14 Pro (iOS 17.5), 4 heures de YouTube + Spotify + navigation web continue, WiFi puis 4G, tunnel actif en permanence.
| Protocole | Batterie consommée | Watts moyens estimés |
|---|---|---|
| Pas de VPN | 18 % | 1.6 W |
| WireGuard | 21 % | 1.9 W |
| OpenVPN UDP | 27 % | 2.4 W |
| OpenVPN TCP | 31 % | 2.7 W |
WireGuard consomme +3 points vs no-VPN. OpenVPN UDP : +9 points. La différence vient du chiffrement plus simple (ChaCha vs AES-GCM avec négociation) et de l'absence de keepalive TLS dans WireGuard (juste un keepalive UDP optionnel toutes les 25s).
Sur un trajet train Paris-Marseille (3h sur tunnel actif, écran allumé), tu gagnes ~10 % de batterie en passant d'OpenVPN à WireGuard.
Historique d'audits et CVE
OpenVPN
- Premier audit indépendant complet : 2017 (OSTIF + QuarksLab + Cryptography Engineering). 2 vulnérabilités majeures trouvées dont une RCE.
- CVE depuis : ~28 entries CVE (2018-2025), dont 3 RCE.
- Surface d'attaque : OpenVPN + OpenSSL (codebases additionnés ~500 000 lignes C/C++).
- Réputation : solide après 22 ans en production, mais le poids historique se voit.
WireGuard
- Audit Cure53 (2018) sur l'implémentation Linux. 0 vulnérabilité critique.
- Audit formel des primitives crypto (papier IEEE S&P 2018) — preuve mathématique du protocole Noise IKpsk2.
- CVE depuis : 0 critique côté kernel, quelques bugs implémentation
wireguard-go(userspace) résolus en moins de 7 jours. - Surface d'attaque : ~5 000 lignes C kernel.
Pour un attaquant, WireGuard est ~14× plus dur à fuzzer profondément qu'OpenVPN simplement parce qu'il y a moins de code à fuzzer.
Quand garder OpenVPN
Trois cas où OpenVPN reste défendable :
- TCP obligatoire : certains pare-feu corporate bloquent UDP en sortie. OpenVPN sait faire TCP natif. WireGuard nécessite un wrapper (
wstunnel,udp2raw) qui complique le setup. - Port 443 standard : OpenVPN sur 443/TCP passe pour du HTTPS auprès des DPI basiques. Pratique en hôtel ou en réseau d'entreprise stricte.
- Compatibilité legacy : clients Windows < 10, Android < 5, iOS < 12, routeurs domestiques entrée de gamme — WireGuard n'a pas toujours de client officiel. OpenVPN est partout depuis 2002.
Pour les cas 1 et 2, on peut quand même tunneler WireGuard via udp2raw en fake TCP/443 — voir les templates WireGuard 2026, template 7.
Quand passer à WireGuard
Tous les autres cas. Et notamment :
- VPN auto-hébergé sur VPS personnel (Contabo, Hetzner, OVH) — gain perf + setup simple
- VPN mobile (iOS, Android) — gain batterie + reconnexion rapide
- Site-to-site avec liens haut débit (>100 Mbps) — gain throughput net
- Hub-and-spoke entre plusieurs sites — gain config (5 lignes vs 30 lignes par peer)
- Roadwarrior multi-pays — gain handshake instantané au changement de réseau
Si tu pars de zéro aujourd'hui sur un VPS Contabo neuf, le choix par défaut doit être WireGuard. OpenVPN reste une option de repli pour les cas exotiques.
Migration OpenVPN → WireGuard sans downtime
Tu as déjà OpenVPN en prod ? Migration propre en 4 étapes :
- Déployer WireGuard en parallèle sur le même VPS, port 51820, subnet 10.66.66.0/24 (différent du subnet OpenVPN).
- Adapter les règles iptables : MASQUERADE des deux subnets, pas de FORWARD entre eux.
- Migrer les clients un par un, en testant la connectivité depuis chacun avant de supprimer son cert OpenVPN.
- Désactiver OpenVPN :
systemctl stop openvpn-server@serverpuisdisable. Garder la config 30 jours au cas où, ensuiteapt remove openvpn.
Aucun downtime, aucun client laissé sans VPN. Sur 14 mois de prod chez nous, on a fait cette migration en ~2 semaines (38 peers).
Verdict
WireGuard est le choix par défaut en 2026 pour 95 % des cas self-host. Plus rapide (4 % de perte vs 27 %), plus simple (5k lignes vs 70k), plus économe (batterie -10 % sur mobile), audité de bout en bout. OpenVPN reste pertinent pour TCP-only, port 443 strict, ou compatibilité legacy.
Si tu veux le setup complet WireGuard sur VPS Contabo, le guide pas-à-pas prend 20 minutes de l'inscription Contabo au premier ping. Le VPS qu'on utilise nous-mêmes est /go/contabo — VPS S Cloud 4,99 €/mois sur 24 mois.
Et pour les templates de config prêts à coller : Templates WireGuard 2026.
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis
Voir l'offre Contabo30 jours satisfait ou remboursé→