VPN auto-hébergé avec WireGuard : guide complet
Les VPN commerciaux promettent anonymat et sécurité, mais en réalité vous déplacez simplement votre confiance de votre FAI vers un prestataire tiers. Logs conservés, juridictions douteuses, performances dégradées : les raisons de s’auto-héberger ne manquent pas.
Pourquoi éviter les VPN commerciaux
La plupart des fournisseurs VPN affirment ne conserver aucun journal. Or, plusieurs scandales ont prouvé le contraire : données revendues, logs transmis aux autorités, infrastructure partagée entre clients. Le problème fondamental est la confiance : vous ne pouvez pas auditer leurs serveurs.
En hébergeant votre propre VPN, vous contrôlez intégralement la chaîne : le serveur, les clés, les règles de pare-feu et les journaux. Vous choisissez la juridiction, vous maîtrisez la bande passante et vous éliminez tout intermédiaire.
Pourquoi WireGuard
WireGuard est un protocole VPN moderne qui tient en moins de 4 000 lignes de code, contre plus de 100 000 pour OpenVPN. Il utilise des primitives cryptographiques récentes (Curve25519, ChaCha20, BLAKE2s) et offre des performances nettement supérieures grâce à son intégration directe dans le noyau Linux.
Sa simplicité de configuration et sa faible surface d’attaque en font un choix idéal pour un déploiement auto-hébergé.
Installation sur Debian 12
WireGuard est inclus dans les dépôts officiels de Debian 12. L’installation se fait en une commande :
apt update && apt install -y wireguard
Vérifiez que le module noyau est chargé :
modprobe wireguard lsmod | grep wireguard
Génération des clés
Chaque pair (serveur et clients) possède une paire de clés Curve25519. Générez-les dans un répertoire sécurisé :
cd /etc/wireguard umask 077 wg genkey | tee server_private.key | wg pubkey > server_public.key wg genkey | tee client_private.key | wg pubkey > client_public.key
Configuration du serveur
Créez le fichier /etc/wireguard/wg0.conf avec les paramètres suivants :
[Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = <SERVER_PRIVATE_KEY> PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE [Peer] PublicKey = <CLIENT_PUBLIC_KEY> AllowedIPs = 10.0.0.2/32
Remplacez eth0 par le nom de votre interface réseau principale (vérifiable avec ip a).
Activation du routage IP
Pour que le serveur puisse relayer le trafic des clients, activez le forwarding IPv4 :
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
Configuration des clients
WireGuard propose des applications natives pour Windows, macOS, iOS et Android. La configuration est identique sur toutes les plateformes :
[Interface] Address = 10.0.0.2/24 PrivateKey = <CLIENT_PRIVATE_KEY> DNS = 1.1.1.1, 9.9.9.9 [Peer] PublicKey = <SERVER_PUBLIC_KEY> Endpoint = vpn.example.com:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
Sur mobile, vous pouvez importer la configuration via un QR code généré avec qrencode :
qrencode -t ansiutf8 < /etc/wireguard/client.conf
Configuration DNS
Pour éviter les fuites DNS, configurez un résolveur sur le serveur VPN lui-même. Unbound est un excellent choix :
apt install -y unbound systemctl enable --now unbound
Modifiez ensuite le champ DNS de la configuration client pour pointer vers 10.0.0.1, l’adresse du serveur sur le tunnel.
Split tunneling
Si vous ne souhaitez router que certains flux via le VPN (accès au réseau interne par exemple), remplacez AllowedIPs côté client :
# Tunnel complet (tout le trafic) AllowedIPs = 0.0.0.0/0 # Split tunnel (uniquement le réseau interne) AllowedIPs = 10.0.0.0/24, 192.168.1.0/24
Le split tunneling permet de conserver l’accès direct à Internet pour les usages courants tout en protégeant les flux sensibles.
Démarrage automatique avec systemd
WireGuard s’intègre nativement avec systemd. Activez le tunnel au démarrage du serveur :
systemctl enable --now wg-quick@wg0
Vérifiez l’état du tunnel et les pairs connectés :
wg show wg0
Optimisation des performances
MTU
WireGuard ajoute un overhead de 60 octets (IPv4) ou 80 octets (IPv6). Ajustez le MTU dans la section [Interface] pour éviter la fragmentation :
[Interface] MTU = 1420
Performances réseau
Sur un serveur dédié, augmentez les buffers réseau pour tirer le meilleur débit :
sysctl -w net.core.rmem_max=2500000 sysctl -w net.core.wmem_max=2500000
Avec ces réglages, un serveur modeste peut atteindre facilement 500 Mbit/s de débit chiffré, bien au-delà de ce que propose la majorité des VPN commerciaux.
Besoin d’un VPN configuré pour votre équipe ?
Je déploie et maintiens des tunnels WireGuard sécurisés, adaptés à votre infrastructure et à vos besoins de mobilité.
Discutons de votre projet