WireGuard est le protocole VPN moderne qui a remplacé OpenVPN et IPsec dans la plupart des nouveaux déploiements. Plus rapide (résident kernel), plus simple (moins de 4 000 lignes de code), cryptographiquement plus conservateur (primitives modernes, pas de négociation de cipher suites). Ce guide vous emmène d'un VPS Ubuntu vierge à un serveur WireGuard fonctionnel avec plusieurs clients en environ 30 minutes.
Ce qu'il vous faut
- Un VPS Linux (nous utiliserons Ubuntu 24.04 LTS)
- Accès root SSH
- Une adresse IPv4 publique (incluse dans chaque plan FranceVPS)
Étape 1 : Installer WireGuard
sudo apt update
sudo apt install -y wireguard wireguard-tools
Étape 2 : Générer les clés serveur
cd /etc/wireguard
sudo umask 077
sudo wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
L'umask garantit que les fichiers de clé privée ne sont pas world-readable. Préservez toujours ceci — clés privées fuitées = VPN compromis.
Étape 3 : Créer la config serveur
Créez /etc/wireguard/wg0.conf :
[Interface]
Address = 10.66.66.1/24
ListenPort = 51820
PrivateKey = <contenu de server_private.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Les règles PostUp/PostDown activent le forwarding IP et NAT — nécessaire si vous voulez que les clients atteignent l'internet public via le VPN.
Étape 4 : Activer le forwarding IP
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p
Étape 5 : Démarrer le serveur
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
sudo wg show
Étape 6 : Configurer le firewall
sudo ufw allow 51820/udp
sudo ufw allow ssh
sudo ufw enable
Étape 7 : Générer une config client
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
Ajoutez le client dans wg0.conf :
[Peer]
PublicKey = <client1 public key>
AllowedIPs = 10.66.66.2/32
Rechargez :
sudo wg syncconf wg0 <(wg-quick strip wg0)
Config côté client :
[Interface]
Address = 10.66.66.2/24
PrivateKey = <client1 private key>
DNS = 1.1.1.1, 9.9.9.9
[Peer]
PublicKey = <server public key>
Endpoint = <votre IP publique VPS>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Étape 8 : Connecter depuis le client
Linux : sudo wg-quick up <config>. macOS/Windows : app WireGuard, importer la config. iOS/Android : app WireGuard, scanner un QR code (qrencode -t ansiutf8 < client1.conf).
Checklist de durcissement
- Désactivez l'auth password SSH.
PasswordAuthentication nodans/etc/ssh/sshd_config - Activez les unattended-upgrades.
- Limitez strictement AllowedIPs. Pas de 0.0.0.0/0 côté serveur — sinon les peers peuvent spoofer.
- Roulez les clés trimestriellement.
- Surveillez les anomalies.
wg showaffiche le dernier handshake.
Pièges fréquents
AllowedIPs incorrects. La méprise WireGuard la plus commune. Le AllowedIPs côté serveur et le Address côté client doivent matcher. Si client à 10.66.66.2/24, l'entrée serveur doit être 10.66.66.2/32 — pas /24.
NAT non fonctionnel. Vérifiez iptables -t nat -L POSTROUTING -n -v. Si MASQUERADE absent, le PostUp n'a pas tourné.
Fuites DNS. Définissez DNS dans la config client explicitement.
MTU. Si gros paquets timeout, mettez MTU = 1420 dans interface client.