Serveur WireGuard de A à Z
Objectif : un serveur VPN permettant à un ou plusieurs postes clients de rejoindre un réseau via un tunnel chiffré. Contexte théorique dans VPN — WireGuard.
Environnement
Section intitulée « Environnement »| Installation | Physique, VM (VMware, Proxmox, Hyper-V…) ou VPS cloud — WireGuard n’a pas d’exigence particulière liée au type d’hébergement, hormis un accès réseau public (IP fixe ou DNS dynamique) pour l’Endpoint. |
| Système d’exploitation (serveur) | Debian/Ubuntu (apt install wireguard, ce tutoriel) — support natif dans le noyau Linux ≥ 5.6 ; sur un noyau plus ancien, un module DKMS (wireguard-dkms) est nécessaire. Transposable à Fedora/RHEL (dnf) ou Arch (pacman, déjà inclus dans le noyau officiel). |
| Système d’exploitation (client) | Applications officielles disponibles pour Windows, macOS, Linux, iOS et Android — la configuration [Interface]/[Peer] de ce tutoriel s’importe telle quelle dans chacune (fichier .conf ou QR code sur mobile). |
| Prérequis matériels | Très légers grâce à l’implémentation en espace noyau : 1 vCPU / 512 Mo à 1 Go de RAM suffisent pour quelques dizaines de clients à usage bureautique. Le débit réel dépend surtout de la bande passante réseau et du CPU disponible pour le chiffrement (ChaCha20), pas du nombre de tunnels. |
0. Avant de commencer : accès et prérequis
Section intitulée « 0. Avant de commencer : accès et prérequis »Accès nécessaire : une session SSH (ou console) ouverte sur le serveur, avec un compte disposant des droits sudo.
Mettre à jour le système avant toute installation :
sudo apt update && sudo apt upgrade -yVérifier le support noyau et les paquets nécessaires :
# WireGuard est intégré au noyau Linux depuis la version 5.6 — vérifier la version :uname -r
# Si le noyau est plus ancien que 5.6, un module DKMS supplémentaire est requis :sudo apt install wireguard-dkms -y
# wireguard-tools (commandes wg / wg-quick) : généralement pas installé par défautdpkg -l | grep wireguard-tools
# nftables, utilisé pour les règles PostUp/PostDown plus bas — souvent déjà présent# sur les distributions récentes, à vérifier :which nft || sudo apt install nftables -ySi wireguard-tools n’apparaît pas dans le résultat, l’étape 1 ci-dessous l’installera.
1. Installation
Section intitulée « 1. Installation »sudo apt install wireguard -y2. Générer les clés du serveur
Section intitulée « 2. Générer les clés du serveur »wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.keysudo chmod 600 /etc/wireguard/server_private.key3. Configurer l’interface serveur
Section intitulée « 3. Configurer l’interface serveur »/etc/wireguard/wg0.conf :
[Interface]Address = 10.10.10.1/24ListenPort = 51820PrivateKey = <contenu de server_private.key>PostUp = nft add rule inet filter forward ip saddr 10.10.10.0/24 acceptPostDown = nft delete rule inet filter forward ip saddr 10.10.10.0/24 accept
# Un bloc [Peer] par client[Peer]PublicKey = <clé publique du client>AllowedIPs = 10.10.10.2/32Activer le forwarding IP (nécessaire pour router le trafic) :
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.confsudo sysctl -p4. Démarrer le service
Section intitulée « 4. Démarrer le service »sudo systemctl enable --now wg-quick@wg0sudo wg show5. Configurer un client
Section intitulée « 5. Configurer un client »Sur le client, générer sa propre paire de clés, puis :
[Interface]Address = 10.10.10.2/32PrivateKey = <clé privée du client>DNS = 10.10.10.1
[Peer]PublicKey = <clé publique du serveur>Endpoint = vpn.exemple.fr:51820AllowedIPs = 10.10.10.0/24 # ou 0.0.0.0/0 pour router tout le trafic via le VPNPersistentKeepalive = 25PersistentKeepalive maintient le mapping NAT ouvert côté client — indispensable si le client est lui-même derrière un NAT/routeur.
6. Ouvrir le port sur le pare-feu
Section intitulée « 6. Ouvrir le port sur le pare-feu »nft add rule inet filter input udp dport 51820 acceptVérification
Section intitulée « Vérification »sudo wg showping 10.10.10.1 # depuis le client, une fois le tunnel monté