## Introduction WireGuard est un protocole VPN moderne, léger et rapide. Il permet d’établir un tunnel chiffré entre un serveur et un ou plusieurs clients, tout en offrant de meilleures performances et une simplicité de configuration comparé à OpenVPN ou IPSec. Dans ce guide, nous allons configurer un **tunnel WireGuard** entre un serveur Linux et un client (Linux ou Windows). --- ## Prérequis - Un serveur Linux (Debian/Ubuntu/CentOS ou équivalent) avec un accès root/SSH - Un poste client sous Linux ou Windows - Un accès administrateur sur le client - Paquets `wireguard-tools` ou l’application officielle WireGuard installée --- ## Installation de WireGuard ### Sous Linux Mettre à jour vos paquets et installer WireGuard : ```bash # Debian / Ubuntu sudo apt update && sudo apt install wireguard -y # CentOS / RHEL (via EPEL) sudo yum install epel-release -y sudo yum install kmod-wireguard wireguard-tools -y ``` Vérifier que WireGuard est installé : ```bash wg --version ``` ### Sous Windows 1. Télécharger l’installateur officiel depuis [le site WireGuard](https://www.wireguard.com/install/). 2. Installer le logiciel en suivant l’assistant. 3. Après installation, vous aurez accès à l’application **WireGuard** avec une interface graphique. --- ## Génération des clés Chaque pair (serveur et client) a besoin d’une **clé privée** et d’une **clé publique**. Sur le serveur ou le client Linux : ```bash umask 077 wg genkey | tee privatekey | wg pubkey > publickey ``` Cela génère deux fichiers : - `privatekey` → clé privée - `publickey` → clé publique Sur Windows, utilisez le bouton **Generate Keypair** dans l’interface WireGuard. --- ## Configuration du serveur Créer le fichier `/etc/wireguard/wg0.conf` : ```ini [Interface] PrivateKey = Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = AllowedIPs = 10.0.0.2/32 ``` Activer et démarrer le service : ```bash sudo systemctl enable wg-quick@wg0 sudo systemctl start wg-quick@wg0 ``` Vérifier : ```bash sudo wg show ``` --- ## Configuration du client ### Client Linux Créer `/etc/wireguard/wg0.conf` : ```ini [Interface] PrivateKey = Address = 10.0.0.2/24 [Peer] PublicKey = Endpoint = :51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25 ``` Démarrer le tunnel : ```bash sudo wg-quick up wg0 ``` ### Client Windows 1. Ouvrir l’application **WireGuard**. 2. Cliquer sur **Add Tunnel > Add empty tunnel**. 3. Remplir : ```ini [Interface] PrivateKey = Address = 10.0.0.2/24 [Peer] PublicKey = Endpoint = :51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25 ``` 4. Enregistrer puis activer le tunnel. --- ## Démarrage et test du tunnel Sur le client, lancer : ```bash ping 10.0.0.1 ``` Sur le serveur : ```bash ping 10.0.0.2 ``` Vérifier aussi la sortie de : ```bash sudo wg show ``` --- ## Sécurisation et bonnes pratiques - Restreindre les IPs autorisées avec `AllowedIPs` - Utiliser un pare-feu (`ufw`, `iptables`) pour limiter l’accès au port WireGuard - Mettre en place un monitoring pour s’assurer que le tunnel reste actif - Régénérer les clés périodiquement --- ## Ressources utiles - [Site officiel WireGuard](https://www.wireguard.com/) - [Documentation Debian WireGuard](https://wiki.debian.org/WireGuard) - [Client Windows WireGuard](https://www.wireguard.com/install/)