← Retour au blog

VPN auto-hébergé avec WireGuard : guide complet

28 février 202610 min de lecture

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