Introduction
WireGuard est un VPN moderne, simple et performant qui a supplanté OpenVPN dans de nombreux cas d'usage. Sa configuration minimaliste réduit la surface d'attaque tout en offrant des performances excellentes grâce à l'utilisation de ChaCha20 et Curve25519. Ce tutoriel vous guide pas à pas dans le déploiement d'un serveur WireGuard avec plusieurs clients, incluant la configuration réseau et le routage. Vous apprendrez à générer les clés, à créer les fichiers de configuration et à sécuriser le tunnel. L'approche progressive permet de comprendre chaque étape avant d'aller plus loin dans la personnalisation.
Prérequis
- Serveur Ubuntu 22.04 ou 24.04 avec accès root
- Connaissances de base en ligne de commande Linux
- Un domaine ou une IP publique pour le serveur
- Client Linux, macOS ou Windows pour tester
Installation du paquet WireGuard
sudo apt update
sudo apt install -y wireguard wireguard-toolsCette commande installe le module noyau WireGuard et les outils wg. Sur Ubuntu 22.04+, le module est déjà intégré au noyau, mais les outils sont nécessaires pour gérer les interfaces.
Génération des clés serveur
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.keyOn génère une paire de clés Curve25519. La clé privée est protégée avec chmod 600 car elle ne doit jamais être exposée.
Création du fichier de configuration serveur
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = $(cat /etc/wireguard/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/32Le fichier wg0.conf définit l'interface serveur. PostUp/PostDown gèrent le NAT pour que les clients accèdent à Internet via le serveur.
Activation et démarrage du service
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
sudo wg showwg-quick@wg0 utilise systemd pour charger la configuration et créer l'interface. La commande wg show permet de vérifier que l'interface est active.
Configuration du client
[Interface]
Address = 10.0.0.2/24
PrivateKey = CLIENT_PRIVATE_KEY
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VOTRE_IP:51820
AllowedIPs = 0.0.0.0/0Le client utilise AllowedIPs = 0.0.0.0/0 pour router tout le trafic via le VPN. Remplacez les variables par vos vraies clés et IP.
Bonnes pratiques
- Toujours utiliser des clés uniques par client et les révoquer en cas de compromission
- Restreindre AllowedIPs au minimum nécessaire
- Activer le pare-feu UFW ou nftables en plus des règles PostUp
- Sauvegarder les clés privées de manière chiffrée
- Mettre à jour régulièrement le noyau et wireguard-tools
Erreurs courantes à éviter
- Oublier d'activer le forwarding IPv4 dans sysctl
- Utiliser la même clé privée sur plusieurs appareils
- Négliger la configuration DNS côté client
- Ne pas ouvrir le port UDP 51820 sur le pare-feu du serveur
Pour aller plus loin
Pour approfondir la configuration avancée de WireGuard, découvrez nos formations Learni.