WireGuard ou OpenVPN : lequel auto-héberger ?
WireGuard gagne en vitesse, taille de configuration et surface d’audit. Découvrez les 4 cas précis où OpenVPN reste préférable, dont TCP 443 et le MFA.
La réponse courte
Pour une personne qui exploite un serveur VPN sur son propre VPS, le choix entre WireGuard et OpenVPN ne se discute presque pas : choisissez WireGuard. Il est plus compact, s’exécute dans le noyau Linux, établit la connexion en une fraction de seconde et sa configuration client fonctionnelle tient en une dizaine de lignes. OpenVPN conserve quatre usages réels. Si aucun ne vous concerne, vous n’en avez pas besoin.
Ces quatre usages sont les suivants : sortir d’un réseau qui n’autorise que le port TCP 443, s’intégrer à une autorité de certification existante, authentifier des utilisateurs nommément avec un mot de passe ou un second facteur, et faire du bridging au niveau 2. La suite présente les éléments qui justifient cette recommandation et indique précisément à partir de quel moment chaque exception peut vous concerner.
Pourquoi WireGuard s’est imposé chez les auto-hébergeurs
Le code source est suffisamment compact pour être lu. Le projet WireGuard implémente son protocole en environ 4 000 lignes de code. OpenVPN dépasse les six chiffres si l’on compte la bibliothèque OpenSSL dont il dépend pour chaque opération cryptographique. La taille compte, car chaque ligne augmente la surface d’attaque, et ni vous ni votre reviewer ne lirez 100 000 lignes. Vous pouvez en lire 4 000.
Il s’exécute dans le kernel. WireGuard fait partie du kernel Linux mainline depuis la version 5.6. Ubuntu 24.04 et Debian 13 l’incluent donc sans rien compiler. Les paquets sont chiffrés là où ils se trouvent déjà, dans l’espace kernel, sans copie vers un processus en espace utilisateur, puis retour. Vérifiez ce point avant toute autre chose :
sudo modprobe wireguard && echo okSur un VPS KVM, cette commande affiche ok. Dans une virtualisation par conteneurs qui partage le kernel de l’hôte, comme OpenVZ ou LXC, elle échoue avec Operation not supported, car vous ne pouvez pas charger un module dans un kernel qui ne vous appartient pas.
Il n’y a rien à négocier. WireGuard utilise une seule suite cryptographique fixe : ChaCha20-Poly1305 pour les données, avec des clés Curve25519. Il n’y a aucune version à rétrograder ni aucune option à mal configurer. OpenVPN négocie la suite cryptographique et la version de TLS (transport layer security) avec chaque client. Cette flexibilité est aussi une source de mauvaise configuration. Un serveur laissé avec data-ciphers AES-256-GCM:AES-128-CBC repassera sans problème à la suite cryptographique CBC pour un client qui ne propose rien de mieux, sans qu’aucun message du journal ne signale le problème.
Le port ne répond pas. Un paquet WireGuard dont la vérification d’authentification des messages échoue est abandonné sans aucune réponse. Ainsi, nmap -sU -p 51820 renvoie open|filtered, qu’un service soit à l’écoute ou non. Un serveur OpenVPN en mode TCP termine la négociation TCP avant de décider que l’accès est refusé. Cela suffit à prouver à un scanner qu’un service est présent. OpenVPN sur UDP avec tls-crypt est presque aussi discret. Cet argument vise donc le fonctionnement d’OpenVPN sur TCP, et non OpenVPN lui-même.
Le roaming est automatique. Un peer WireGuard est identifié par sa clé publique, et non par son adresse. Votre portable passe de votre réseau domestique à un hotspot mobile, envoie un handshake depuis la nouvelle adresse, puis le serveur met à jour l’endpoint auquel il répond. Rien ne se reconnecte, car rien n’a jamais été connecté. OpenVPN peut faire quelque chose de similaire avec float, mais le client démantèle et recrée normalement une session TLS complète. C’est pourquoi la pause à l’ouverture du capot est perceptible avec OpenVPN, mais pas avec WireGuard.
La vitesse en 2026 : l’écart s’est réduit
Pendant des années, l’argument honnête en matière de vitesse était qu’OpenVPN copiait chaque paquet dans l’espace utilisateur, l’y chiffr ait, puis le recopiait, tandis que WireGuard ne quittait jamais le kernel. Ce n’est plus toute l’histoire, et une comparaison qui l’ignore est dépassée.
OpenVPN 2.7, publié en février 2026, prend en charge le module kernel ovpn en amont, intégré à Linux 6.16. Il s’agit de DCO (data channel offload) : le control channel reste dans l’espace utilisateur, tandis que le chemin de données principal passe dans le kernel, comme WireGuard le fait depuis toujours. Avec un kernel et une version d’OpenVPN suffisamment récents pour l’utiliser, le débit est du même ordre, et non d’une catégorie différente. Vérifiez ce que vous utilisez réellement :
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3En juillet 2026, une installation standard d’Ubuntu 24.04 LTS fournit OpenVPN 2.6, et non 2.7. Le module ovpn nécessite la version 2.7. Avec cette version, vous ne disposez de l’offload qu’au moyen de l’ancien paquet openvpn-dco-dkms, qui compile un module out-of-tree pour votre kernel en cours d’exécution et doit donc être recompilé à chaque mise à niveau du kernel. C’est un élément supplémentaire que WireGuard n’a pas.
Lisez les restrictions de DCO avant de le considérer comme une raison de conserver OpenVPN. Il prend uniquement en charge les tunnels de couche 3. Il accepte uniquement les chiffrements AEAD (authenticated encryption with associated data : AES-GCM ou ChaCha20-Poly1305). Il ne prend pas en charge la compression. Sur un serveur, il fonctionne uniquement avec topology subnet. Chacune de ces restrictions réduit une partie de la flexibilité qui constituait précisément l’argument d’OpenVPN. Un OpenVPN rapide est un OpenVPN configuré pour fonctionner comme WireGuard.
Ne faites confiance à aucun chiffre de débit publié, y compris celui de cette page. Sur un VPS, la limite vient généralement de la capacité CPU ou réseau, et non du protocole. Mesurez votre propre débit avec iperf3 exécuté dans le tunnel, puis de nouveau en dehors du tunnel, et comparez les deux mesures.
Dans quels cas OpenVPN reste utile
Vous devez sortir par le port TCP 443. WireGuard fonctionne uniquement en UDP, de manière délibérée, et aucun mode TCP n’est prévu. Un réseau d’hôtel ou un proxy d’entreprise qui n’autorise que TCP 443 laissera passer OpenVPN configuré avec proto tcp-server et port 443, car ce trafic ressemble à une session TLS ordinaire. WireGuard a besoin d’un wrapper tel que wstunnel ou udp2raw pour traverser le même réseau, ce qui ajoute un processus à exécuter et à maintenir à jour. Attention au conflit : si un serveur web utilise déjà TCP 443 sur cette adresse IP, l’un des deux services devra changer de port.
Vous utilisez déjà une autorité de certification. OpenVPN s’authentifie avec des certificats X.509. Il s’intègre donc dans une PKI (infrastructure à clés publiques) que vous exploitez déjà. Les certificats expirent automatiquement. Pour révoquer un certificat, il suffit de l’ajouter à une liste de révocation des certificats que le serveur lit via crl-verify. WireGuard n’utilise ni certificats, ni expiration, ni liste de révocation. Pour supprimer un pair, vous devez modifier la configuration du serveur et la recharger. Avec dix pairs, cela reste acceptable. Avec quatre cents pairs et une exigence d’audit, le modèle fondé sur les certificats vous apporte un réel avantage.
Vous avez besoin d’utilisateurs nommés, pas uniquement de clés. OpenVPN peut déléguer l’authentification à un système externe avec auth-user-pass-verify ou avec un plugin tel que openvpn-plugin-auth-pam.so. C’est ainsi que l’on ajoute LDAP ou un second facteur à usage unique. WireGuard ne gère pas la notion d’utilisateur. Une clé figure dans la configuration ou n’y figure pas. Si votre exigence est que « Sara doit saisir un code reçu sur son téléphone », WireGuard ne peut pas le gérer seul.
Vous avez besoin de la couche 2 ou d’un client pour un système ancien. OpenVPN avec dev tap fait transiter des trames Ethernet. Cela est utile pour les protocoles de broadcast et les anciens jeux en réseau local. WireGuard fonctionne uniquement en couche 3, et cela ne changera pas. OpenVPN propose également des clients pour du matériel et des systèmes d’exploitation qui n’auront jamais d’application WireGuard. Ces deux cas d’usage deviennent moins fréquents. De plus, dev tap est incompatible avec DCO : l’utilisation du bridge impose donc le chemin le plus lent.
Ce que les deux configurations vous coûtent réellement
Une identité WireGuard se crée avec une seule commande. Les parenthèses sont importantes, car elles définissent le mode du fichier avant la création de la clé :
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyL’équivalent OpenVPN est une autorité de certification dont vous êtes désormais responsable pendant toute la durée d’utilisation du VPN :
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverAucune des deux listes n’est partiale. L’autorité de certification vous apporte la gestion de l’expiration et de la révocation. En contrepartie, vous devez protéger une clé privée pendant des années, penser à son renouvellement et reconstruire l’infrastructure si vous la perdez. Si vous n’utilisez pas ces fonctions, vous les payez pour rien. La procédure WireGuard complète, avec le forwarding, le NAT (network address translation) et les échecs de handshake qui peuvent vous faire perdre un après-midi, est décrite dans le guide pour auto-héberger un VPN WireGuard sur votre VPS.
Ce que chaque solution exige de votre pare-feu
WireGuard nécessite exactement une règle entrante pour UDP, sur le port indiqué dans ListenPort :
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN nécessite par défaut UDP 1194, ou TCP 443 si vous avez choisi cette option. Dans les deux cas, vous devez ensuite activer le forwarding IP et ajouter une règle de NAT source, car Linux supprime les paquets qui ne lui sont pas destinés. Cette partie est identique pour les deux protocoles. C’est aussi la cause de la plupart des signalements du type « le tunnel se connecte, mais Internet ne fonctionne pas ». Si ufw ne vous est pas familier, commencez par les bases du pare-feu ufw sur un VPS, et n’oubliez pas que la plupart des fournisseurs proposent un second pare-feu réseau dans leur panneau de contrôle : une règle ajoutée sur le serveur ne sert à rien si le paquet n’atteint jamais le serveur. Comprendre ce qu’est un port et comment Linux écoute sur un port accélère ces deux vérifications.
Comment choisir, en un paragraphe
Utilisez WireGuard, sauf si vous pouvez nommer précisément ce qu’il ne peut pas faire pour vous. Si vous avez besoin de TCP 443 pour contourner un réseau restrictif, utilisez OpenVPN sur ce port et envisagez d’exécuter les deux : ils utilisent des ports différents et coexistent sur un même serveur sans conflit. Si vous avez besoin de comptes par utilisateur ou d’un second facteur, n’essayez pas de faire gérer ces fonctions à WireGuard. Ajoutez plutôt une couche d’identité au-dessus. Un serveur de contrôle Headscale auto-hébergé utilise WireGuard en dessous et ajoute le modèle de comptes, la distribution des clés et l’approbation des appareils que WireGuard seul vous laisse gérer.
Migrer depuis OpenVPN sans interruption de service
Il n’existe pas de conversion. La PKI d’OpenVPN ne devient pas des clés WireGuard, car WireGuard n’utilise pas de certificats à convertir. Chaque client reçoit une nouvelle paire de clés, générée de la même manière que celle du serveur.
Effectuez la migration en parallèle au lieu de basculer directement. WireGuard sur UDP 51820 et OpenVPN sur 1194 peuvent fonctionner simultanément sur le même serveur. Activez donc wg0, vérifiez son fonctionnement avec sudo wg show en affichant un latest handshake récent, puis migrez les clients un par un. Lorsque la liste des pairs OpenVPN ne change plus, arrêtez le service avec sudo systemctl disable --now openvpn-server@server. Conservez les fichiers de l’autorité de certification jusqu’à ce que vous soyez certain de ne plus en avoir besoin. Il est impossible de recréer un client révoqué si l’autorité de certification a été supprimée.
Un élément ne peut réellement pas être transféré : les comptes associés aux noms d’utilisateur et aux mots de passe, ainsi que l’historique des révocations qui leur est associé. Déterminez où ces informations seront conservées avant d’arrêter l’ancien serveur, et non après.
FAQ
WireGuard est-il plus rapide qu’OpenVPN ?
Sur un serveur Ubuntu 24.04 standard, oui, et avec une large marge, car WireGuard chiffre les données dans le kernel, tandis qu’OpenVPN 2.6 fait passer chaque paquet par un processus en espace utilisateur. Avec OpenVPN 2.7 et le module kernel ovpn de Linux 6.16, le chemin de données se trouve également dans le kernel, et les deux solutions sont dans la même catégorie. Mesurez vos propres performances avec iperf3 à travers le tunnel au lieu de vous fier à un chiffre publié sur un blog, car sur un VPS, la limite vient généralement du CPU ou du quota de bande passante.
WireGuard peut-il fonctionner sur le port TCP 443 ?
Pas seul. WireGuard fonctionne uniquement sur UDP par conception, et aucun mode TCP n’est prévu. Pour traverser un réseau qui n’autorise que TCP 443, encapsulez-le dans un tunnel tel que wstunnel ou udp2raw. Cela ajoute un processus à exécuter et à maintenir aux deux extrémités. Si cette restriction fait partie de votre environnement de travail habituel, OpenVPN avec proto tcp-server et port 443 est la solution la plus simple.
OpenVPN est-il désormais peu sécurisé ?
Non. Un OpenVPN à jour, avec un chiffrement AEAD tel que AES-256-GCM et tls-crypt activé, constitue un VPN fiable. L’intérêt de WireGuard repose sur un autre point : OpenVPN contient beaucoup plus de code et beaucoup plus d’options. Il offre donc à un administrateur fatigué bien plus de possibilités de mal le configurer. Moins de choix signifie moins d’erreurs de configuration.
Lequel choisir pour un VPN personnel sur un VPS ?
WireGuard. Une paire de clés par appareil, un fichier de configuration d’environ dix lignes, un port UDP ouvert et une négociation qui se termine avant même que vous ayez remarqué son démarrage. Choisissez OpenVPN uniquement si vous vous connectez régulièrement depuis des réseaux qui bloquent UDP, ou si vous devez l’intégrer à une autorité de certification ou à un annuaire utilisateur déjà en place.