Configurer un VPN WireGuard sur Debian 13
Introduction
WireGuard est un protocole VPN moderne, rapide et sécurisé. Contrairement à OpenVPN ou IPSec, il est simple à configurer et offre d'excellentes performances grâce à son code léger intégré directement au noyau Linux.
Dans cet article, nous allons configurer un serveur WireGuard sur Debian 13 (Trixie), puis connecter un client Debian au tunnel VPN.
Prérequis
- Serveur : Une machine Debian 13 avec une IP publique accessible (ou IP locale pour un lab)
- Client : Une machine Debian 13 qui se connectera au VPN
- Accès root : Les commandes doivent être exécutées en tant que root
- Port UDP 51820 : Doit être ouvert sur le pare-feu du serveur
Partie 1 : Configuration du Serveur
1.1 Installation des paquets
Installez WireGuard et les outils nécessaires :
apt update
apt install wireguard wireguard-tools iptables qrencode
1.2 Activation du routage IP
Activez le forwarding IPv4 pour permettre le transit des paquets :
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -w net.ipv4.ip_forward=1
1.3 Génération des clés du serveur
Créez le répertoire de configuration et générez la paire de clés :
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
Affichez la clé publique (à noter pour la configuration client) :
cat server_public.key
1.4 Configuration de l'interface wg0
Créez le fichier de configuration du serveur. Remplacez enp0s3 par le nom de votre interface réseau principale (vérifiez avec ip route show default).
nano /etc/wireguard/wg0.conf
Contenu du fichier :
[Interface]
Address = 10.0.0.1/24
PrivateKey = CONTENU_DE_server_private.key
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE
Remplacez CONTENU_DE_server_private.key par le contenu réel de votre clé privée.
1.5 Démarrage du service
Activez et démarrez WireGuard :
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
Vérifiez que l'interface est active :
wg show
Partie 2 : Ajout d'un Client sur le Serveur
2.1 Génération des clés du client
Sur le serveur, générez les clés pour le client :
cd /etc/wireguard
wg genkey | tee client1_private.key | wg pubkey > client1_public.key
wg genpsk > client1_psk.key
La clé pré-partagée (PSK) ajoute une couche de sécurité supplémentaire.
2.2 Ajout du peer dans wg0.conf
Ajoutez la section [Peer] à la fin du fichier wg0.conf :
[Peer]
# client1
PublicKey = CONTENU_DE_client1_public.key
PresharedKey = CONTENU_DE_client1_psk.key
AllowedIPs = 10.0.0.2/32
2.3 Rechargement de la configuration
Appliquez les modifications sans redémarrer le tunnel :
wg syncconf wg0 <(wg-quick strip wg0)
Partie 3 : Configuration du Client Debian
3.1 Installation sur le client
Sur la machine cliente, installez WireGuard :
apt update
apt install wireguard wireguard-tools resolvconf
3.2 Création du fichier de configuration
Créez le fichier de configuration du client. Vous aurez besoin des clés générées sur le serveur.
nano /etc/wireguard/wg0.conf
Contenu du fichier :
[Interface]
Address = 10.0.0.2/32
PrivateKey = CONTENU_DE_client1_private.key
DNS = 1.1.1.1
[Peer]
PublicKey = CONTENU_DE_server_public.key
PresharedKey = CONTENU_DE_client1_psk.key
Endpoint = IP_SERVEUR:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Explication des paramètres :
- Address : L'IP du client dans le tunnel VPN
- Endpoint : L'IP publique (ou nom de domaine) du serveur
- AllowedIPs = 0.0.0.0/0 : Tout le trafic passe par le VPN (full tunnel)
- AllowedIPs = 10.0.0.1/32 : Seul le trafic vers le serveur passe par le VPN (split tunnel)
- PersistentKeepalive : Maintient la connexion active (utile derrière un NAT)
3.3 Connexion au VPN
Démarrez le tunnel :
wg-quick up wg0
Pour activer le VPN au démarrage :
systemctl enable wg-quick@wg0
Partie 4 : Vérification
4.1 Vérifier l'état du tunnel
Sur le serveur ou le client :
wg show
Vous devriez voir les informations du peer, notamment le latest handshake qui indique une connexion active.
4.2 Tester la connectivité
Depuis le client, pingez le serveur via le tunnel :
ping 10.0.0.1
4.3 Arrêter le tunnel
Pour déconnecter le VPN :
wg-quick down wg0
Commandes Utiles
- wg show : Affiche l'état des interfaces WireGuard
- wg-quick up wg0 : Démarre le tunnel wg0
- wg-quick down wg0 : Arrête le tunnel wg0
- systemctl status wg-quick@wg0 : État du service systemd
- wg syncconf wg0 <(wg-quick strip wg0) : Recharge la config sans interruption
- journalctl -u wg-quick@wg0 : Consulter les logs
Voici un script permettant de gérer automatiquement la configuration d'un serveur et d'un client VPN WireGuard sur Debian 13 en CLI.
Vous exécutez d'abord le script sur votre serveur, choix 1 puis 2 dans le menu, puis vous exécutez le script sur votre client, choix 10 puis 11 dans le menu.
📥 Télécharger wireguard-manager-debian.sh
Conclusion
Vous disposez maintenant d'un tunnel VPN WireGuard fonctionnel entre un serveur et un client Debian 13. WireGuard se distingue par sa simplicité de configuration et ses performances exceptionnelles.
Pour ajouter d'autres clients, répétez les étapes de la Partie 2 en attribuant une nouvelle IP (10.0.0.3, 10.0.0.4, etc.) à chaque client.
↑ Haut de page