9.2 KiB
title: OpenVPN created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, vpn, openvpn, tunneling, tls, ssl, legacy, c, enterprise] confidence: high contested: false sources: [https://selfh.st/apps/?tag=VPN, https://github.com/OpenVPN/openvpn]
🔐 OpenVPN
Le "vieux" VPN qui ne meurt jamais — créé en 2002, encore omniprésent en entreprise et sur routeurs, lent mais compatible avec à peu près tout.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | openvpn.net |
| GitHub | OpenVPN/openvpn |
| License | GPL-2.0 |
| Langage | C |
| Étoiles GitHub | 14 062 ⭐ |
| Dernière MAJ | 2026-06-07 |
| Catégorie | [[cat-vpn |
📝 Description
OpenVPN est un protocole et une suite logicielle VPN créée par James Yonan en 2002, devenue au fil des ans l'un des standards de fait du VPN d'entreprise. Contrairement à WireGuard (1 couche UDP, ~4000 lignes de code), OpenVPN fonctionne en user-space, chiffre via OpenSSL, et peut tourner en TCP ou UDP — au prix d'une performance significativement plus faible et d'une configuration verbeuse.
OpenVPN a longtemps été le seul choix viable pour les VPN "user-friendly" (clients sur iOS, routeurs Tomato/DD-WRT/AsusWRT/Merlin, etc.) avant l'arrivée de WireGuard. Aujourd'hui, il reste pertinent pour : la compatibilité legacy (vieux clients, vieux routeurs, vieux Windows XP), les environnements corporate où il est déjà déployé à grande échelle, et les contraintes réseau (firewalls qui n'ouvrent que TCP/443).
- ✅ Maturité de 20+ ans : déployé par des millions d'entreprises, code très audité
- ✅ TCP ou UDP : adaptable à toute contrainte réseau (TCP/443 mime du HTTPS, contourne la plupart des firewalls)
- ✅ Compatibilité quasi universelle : iOS, Android, Windows XP+, macOS, Linux, FreeBSD, routeurs, Synology, QNAP, pfSense, OPNsense
- ✅ TLS classique : utilise OpenSSL, support d'X.509, CRL, OCSP
- ✅ Authentification variée : static key, certificats, user/password (via plugin), RADIUS, LDAP
- ✅ Client intégré : OpenVPN Connect (iOS/Android/macOS/Windows) consomme un simple
.ovpn - ✅ Multi-protocole : supporté par OpenVPN Access Server (propriétaire, gratuit jusqu'à 2 users)
- ✅ Bridge TAP ou route TUN : TAP pour bridge L2 (rare), TUN pour IP routing
- ✅ Plug-ins : authentification externe, scripts up/down
- ⚠️ Plus lent que WireGuard : facteur 2-4× sur des liens haut débit (overhead TLS + user-space)
- ⚠️ Configuration verbeuse : PKI complète à mettre en place (easy-rsa)
Public cible : entreprises avec existant legacy, comptabilité réseau (TCP/443), routeurs (Asus, Synology, pfSense où OpenVPN est natif). Pour un nouveau déploiement, WireGuard (app-wg-easy) est presque toujours le meilleur choix.
Vs WireGuard : OpenVPN est plus lent (2-4×), plus complexe (PKI), mais plus compatible (vieux OS, routeurs grand public, firewalls restrictifs) et plus flexible (TCP 443 mimant HTTPS). Vs Tailscale/Headscale : OpenVPN est un VPN "classique" client-to-site, pas un mesh dynamique.
🚀 Installation
Option 1 : Docker Compose (minimaliste)
# docker-compose.yml
version: '3.8'
services:
openvpn:
image: kylemanna/openvpn:latest
container_name: openvpn
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
ports:
- "1194:1194/udp" # Standard OpenVPN
- "443:443/tcp" # Fallback si firewall restrictif
volumes:
- ./openvpn-data:/etc/openvpn
labels:
- "traefik.enable=false" # On n'expose PAS l'admin web via Traefik (UDP)
⚠️ OpenVPN utilise UDP/1194 (par défaut) ou TCP/443. Pas de Traefik : Traefik est un proxy L7 HTTP, OpenVPN est L4. On NAT/PAT directement le port sur la box.
Option 2 : Native Debian/Ubuntu (production)
curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh
./openvpn-install.sh
# Répondez aux questions interactives : UDP, port 1194, DNS Cloudflare, premier client
Option 3 : OpenVPN Access Server (propriétaire, version gratuite limitée à 2 users)
# docker-compose.yml
version: '3.8'
services:
openvpn-as:
image: linuxserver/openvpn-as:latest
container_name: openvpn-as
restart: unless-stopped
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
ports:
- "943:943" # Admin Web UI
- "443:443" # Client Web
- "1194:1194/udp"
volumes:
- openvpn-as:/config
volumes:
openvpn-as:
⚙️ Configuration Initiale
- Init PKI :
./easyrsa init-pki && ./easyrsa build-ca nopass - Générer certificats serveur et clients :
easyrsa build-server-full server nopass && easyrsa build-client-full client1 nopass - Générer Diffie-Hellman :
./easyrsa gen-dh(long, 5-10 min) - Configurer
server.conf: port, protocole, ciphers (AES-256-GCM), DH, push DNS, push routes - Démarrer le service :
systemctl enable --now openvpn@server - Distribuer
.ovpn: exporter le bundle (cert, key, ca, tls-auth) aux clients
🔄 Alternatives
Open Source
- app-wireguard + app-wg-easy — Le successeur moderne, 4× plus rapide
- app-tailscale / app-headscale — Mesh VPN, plus simple pour clients
- StrongSwan — IPsec/IKEv2, standard enterprise Cisco/Juniper
- Algo — WireGuard auto-hébergé
- SoftEther — VPN multi-protocole (OpenVPN/L2TP/IPsec/SSTP)
- WireGuard + pfSense / OPNsense — Native sur ces firewalls
Propriétaires
- OpenVPN Access Server (limite 2 users gratuits, $9/user/mois ensuite)
- Cisco AnyConnect / Secure Client (enterprise, propriétaire)
- Palo Alto GlobalProtect (enterprise, propriétaire)
- NordVPN, ExpressVPN, CyberGhost (VPN grand public, protocole souvent propriétaire)
- Pulse Secure (enterprise)
- Fortinet FortiClient (enterprise)
Comparaison OpenVPN vs alternatives
| Critère | OpenVPN | WireGuard | Tailscale | StrongSwan (IPsec) | NordVPN |
|---|---|---|---|---|---|
| Performance | Modérée (2-4× plus lent) | Très rapide | Très rapide | Rapide | Rapide |
| Config complexité | Élevée (PKI) | Faible | Très faible | Très élevée | Nulle |
| Lignes de code | ~100k | ~4k | ~4k+ | ~200k | Propriétaire |
| Compatibilité OS | Excellente | Très bonne | Très bonne | Bonne (natif iOS/macOS) | Excellente |
| Firewall-friendly | ✅ (TCP 443 mime HTTPS) | ⚠️ (UDP) | ✅ (HTTPS) | ⚠️ (UDP) | ✅ |
| Audit | Très audité | Audité | Audité | Audité | Audits externes |
| NAT traversal | Basique | Très bon (STUN+DERP) | Excellent (STUN+DERP) | Moyen | N/A |
| Open source | GPL-2.0 | GPL-2.0 | BSD/Apache (mix) | GPL-2.0 | ❌ |
Verdict : OpenVPN reste pertinent pour le legacy et les contraintes réseau (TCP/443 pour passer les firewalls corporate). Pour un nouveau déploiement moderne, WireGuard (app-wg-easy) est techniquement supérieur en tout point.
🔐 Sécurité
- ✅ TLS 1.3 + OpenSSL : cryptographie solide (AES-256-GCM, ChaCha20-Poly1305) si bien configuré
- ✅ PKI X.509 : intégration native avec OCSP, CRL, Let's Encrypt pour le web admin
- ⚠️ Surface d'attaque large : ~100 000 lignes de code en C + user-space → plus de bugs historiques (heartbleed-like, route injection) que WireGuard
- ✅
tls-crypt-v2: option depuis OpenVPN 2.6 pour chiffrer tout le handshake, empêche le probing (utile contre la DPI) - ✅ Authentification variée : brancher sur LDAP/AD/RADIUS pour ne pas gérer d'utilisateurs locaux
- ⚠️ Clés privées des clients : chaque
.ovpncontient la clé privée, JAMAIS transmettre en clair par email. Stocker chiffré (app-vaultwarden pour les notes, age pour les archives) - ✅ Logs d'audit :
openvpn-status.logliste les clients connectés,--statustoutes les N secondes, exporter vers app-loki / SIEM - ⚠️ Posture zero-trust : nativement absente (OpenVPN est un VPN "plat" qui expose un sous-réseau). Pour du MFA par user, brancher un plugin PAM ou utiliser app-defguard / app-authentik en frontal
- ✅ Hardening :
cipher AES-256-GCM,auth SHA256,tls-version-min 1.3,tls-cipher TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384,verb 3pour les logs
📚 Ressources
- Site officiel OpenVPN
- GitHub OpenVPN/openvpn
- Documentation communautaire
- angristan/openvpn-install — Script d'install interactif
Pages Liées
- cat-vpn — Catégorie VPN & Réseau privé
- app-wireguard — Le successeur moderne
- app-tailscale — VPN mesh moderne
- app-wg-easy — UI web pour WireGuard
- app-traefik — Reverse proxy / HTTPS
- securisation-home-lab — Bonnes pratiques globales
- glossaire-homelab — Définitions réseau
- comparatif-vpn-mesh — Comparatif global