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


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 :

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


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