Introduction
WireGuard est le successeur moderne d'OpenVPN. Il fait tout en mieux : code 100x plus petit (~4000 lignes vs ~600000 pour OpenVPN), performances supérieures, cryptographie state-of-the-art (Curve25519, ChaCha20, Poly1305, BLAKE2s), et configuration ultra-simple.
Usages typiques :
- VPN personnel pour chiffrer votre trafic en wifi public
- Accès distant sécurisé à votre infrastructure (alternative à un bastion SSH)
- Site-to-site entre plusieurs VPS
- Anonymat (le VPS sert d'IP de sortie)
Prérequis
- VPS Debian 12 ou Ubuntu 22.04+ chez VeryCloud
- Accès root via SSH
- Port UDP 51820 ouvert (port WireGuard par défaut)
- IP forwarding qu'on va activer
Étape 1 : Installer WireGuard
WireGuard est intégré au kernel Linux 5.6+. Sur Debian 12 / Ubuntu 22.04+, il suffit d'installer les outils :
sudo apt update && sudo apt upgrade -y
sudo apt install -y wireguard wireguard-tools qrencode
qrencode sert à générer des QR codes pour configurer les clients mobiles en un scan.
Étape 2 : Activer l'IP forwarding
sudo nano /etc/sysctl.conf
Décommentez ou ajoutez :
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
Appliquez :
sudo sysctl -p
Étape 3 : Générer les clés du serveur
cd /etc/wireguard
sudo umask 077
sudo wg genkey | sudo tee server_private.key | sudo wg pubkey | sudo tee server_public.key
Visualisez :
sudo cat server_private.key
sudo cat server_public.key
Étape 4 : Configurer le serveur
sudo nano /etc/wireguard/wg0.conf
[Interface]
PrivateKey = CLE_PRIVEE_DU_SERVEUR
Address = 10.66.66.1/24
ListenPort = 51820
# Activer le NAT pour que les clients accèdent à internet via le VPN
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
# Les pairs (clients) seront ajoutés en dessous
⚠️ Vérifiez le nom de votre interface réseau publique avec ip route show default | awk '{print $5}'. Sur VeryCloud, c'est généralement eth0 ou ens3.
Remplacez CLE_PRIVEE_DU_SERVEUR par le contenu de server_private.key.
Étape 5 : Démarrer WireGuard
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
Vérifiez l'interface :
sudo wg show
Affichage attendu :
interface: wg0
public key: XXXXXXXXX
private key: (hidden)
listening port: 51820
Étape 6 : Ouvrir le port firewall
sudo ufw allow 51820/udp
sudo ufw status
Côté Netrix (espace client VeryCloud), assurez-vous que le port UDP 51820 est autorisé.
Étape 7 : Ajouter un client (peer)
Générer les clés du client
Sur le serveur (par praticité), générez les clés du futur client :
cd /etc/wireguard
sudo umask 077
sudo wg genkey | sudo tee client1_private.key | sudo wg pubkey | sudo tee client1_public.key
Créer le fichier de config client
sudo nano /etc/wireguard/client1.conf
[Interface]
PrivateKey = CLE_PRIVEE_DU_CLIENT
Address = 10.66.66.2/32
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = CLE_PUBLIQUE_DU_SERVEUR
Endpoint = IP_PUBLIQUE_DU_VPS:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0: tout le trafic du client passe par le VPN (full tunnel)- Pour ne router que le réseau privé :
AllowedIPs = 10.66.66.0/24
Ajouter le peer côté serveur
Éditez wg0.conf du serveur et ajoutez à la fin :
[Peer]
PublicKey = CLE_PUBLIQUE_DU_CLIENT
AllowedIPs = 10.66.66.2/32
Rechargez :
sudo systemctl restart wg-quick@wg0
Étape 8 : Connecter un client mobile (avec QR code)
Pour iOS / Android, le plus simple est de générer un QR code à partir du fichier client :
sudo qrencode -t ansiutf8 < /etc/wireguard/client1.conf
Un QR code apparaît dans le terminal. Ouvrez l'app WireGuard sur mobile → + → Importer depuis QR code → scannez.
Étape 9 : Connecter un client desktop
Windows / macOS
- Téléchargez l'app officielle sur https://www.wireguard.com/install/
- Add Tunnel → Import tunnel from file
- Importez
client1.conf(transféré en SFTP ou copié-collé) - Activate
Linux
sudo apt install -y wireguard
sudo cp client1.conf /etc/wireguard/wg0.conf
sudo systemctl enable --now wg-quick@wg0
Étape 10 : Vérifier la connexion
Sur le client connecté :
curl -s https://api.ipify.org
Doit retourner l'IP du VPS, pas votre IP réelle.
Côté serveur :
sudo wg show
Vous voyez le peer avec sa dernière latest handshake et le trafic transféré.
Étape 11 : Script d'ajout de client automatisé
Pour faciliter l'ajout de clients, créez un script :
sudo nano /usr/local/bin/wg-add-client.sh
#!/bin/bash
set -e
if [ -z "$1" ]; then echo "Usage: $0 <nom_client>"; exit 1; fi
CLIENT=$1
SERVER_IP=$(curl -s https://api.ipify.org)
SERVER_PUBKEY=$(cat /etc/wireguard/server_public.key)
NEXT_IP=$(grep -oP 'AllowedIPs = 10.66.66.\K[0-9]+' /etc/wireguard/wg0.conf | sort -n | tail -1 | awk '{print $1+1}')
NEXT_IP=${NEXT_IP:-2}
cd /etc/wireguard
umask 077
wg genkey | tee ${CLIENT}_private.key | wg pubkey > ${CLIENT}_public.key
cat > ${CLIENT}.conf <<EOF
[Interface]
PrivateKey = $(cat ${CLIENT}_private.key)
Address = 10.66.66.${NEXT_IP}/32
DNS = 1.1.1.1, 1.0.0.1
[Peer]
PublicKey = ${SERVER_PUBKEY}
Endpoint = ${SERVER_IP}:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF
cat >> wg0.conf <<EOF
[Peer]
# ${CLIENT}
PublicKey = $(cat ${CLIENT}_public.key)
AllowedIPs = 10.66.66.${NEXT_IP}/32
EOF
systemctl restart wg-quick@wg0
echo "Client ${CLIENT} créé."
echo "QR code:"
qrencode -t ansiutf8 < ${CLIENT}.conf
sudo chmod +x /usr/local/bin/wg-add-client.sh
sudo wg-add-client.sh alice
Dépannage
Le tunnel monte mais aucun trafic ne passe
Vérifiez l'IP forwarding :
sysctl net.ipv4.ip_forward
Doit retourner 1.
Vérifiez les règles iptables :
sudo iptables -L FORWARD -v
sudo iptables -t nat -L POSTROUTING -v
"Resource temporarily unavailable"
Souvent dû à un mismatch de version kernel/module. Mettez à jour :
sudo apt full-upgrade -y
sudo reboot
Latence élevée
C'est rare avec WireGuard. Si ça arrive, vérifiez :
- MTU : essayez
MTU = 1420dans la section[Interface] - Charge CPU du VPS (WireGuard utilise du chiffrement AES/ChaCha20, peut saturer un petit VPS)
Peer ne se connecte pas
Vérifiez côté client que Endpoint pointe vers la bonne IP et le bon port. Testez la connectivité UDP :
nc -u IP_DU_VPS 51820
Commandes utiles
# Statut interface
sudo wg show
# Statut service
sudo systemctl status wg-quick@wg0
# Redémarrer
sudo systemctl restart wg-quick@wg0
# Voir les peers connectés en temps réel
sudo watch -n 1 wg show
# Compter le nombre de peers
grep -c "\[Peer\]" /etc/wireguard/wg0.conf
# Désactiver le tunnel
sudo wg-quick down wg0
# Réactiver
sudo wg-quick up wg0
Conclusion
Votre VPN WireGuard est opérationnel. Pour aller plus loin :
- Installez wg-easy (interface web pour gérer les peers facilement)
- Combinez avec un DNS interne (Pi-hole, AdGuard) pour bloquer les pubs en plus du chiffrement
- Mettez en place une kill switch côté client (interdiction de sortir si le VPN tombe)
- Configurez un VPN site-to-site entre plusieurs VPS pour un réseau privé global
Ressources
- Site officiel : https://www.wireguard.com
- Documentation : https://www.wireguard.com/quickstart/
- wg-easy (UI) : https://github.com/wg-easy/wg-easy
- Apps clientes : https://www.wireguard.com/install/


















