WireGuard est une technologie VPN (Virtual Private Network) extrêmement simple, rapide et moderne. Elle vise à remplacer les protocoles plus anciens et complexes comme IPsec et OpenVPN. Avec une base de code beaucoup plus petite, elle est plus facile à auditer et offre des performances de premier ordre, tout en utilisant des algorithmes cryptographiques de pointe.
Pourquoi utiliser WireGuard ?
- Simplicité : La configuration ressemble à celle de SSH : on échange simplement des clés publiques.
- Performance : Étant intégré au noyau Linux, il est beaucoup plus rapide que les solutions VPN qui tournent en espace utilisateur comme OpenVPN.
- Sécurité : Utilise des algorithmes modernes et réputés (ChaCha20, Poly1305, Curve25519).
- Stabilité : Idéal pour les connexions mobiles, il gère très bien les changements de réseau (ex: passer du Wi-Fi à la 4G).
Prérequis
- Un serveur Linux (Ubuntu 20.04+ ou Debian 10+ sont parfaits car WireGuard est inclus dans leur noyau).
- Accès root ou privilèges sudo.
- Une adresse IP publique statique sur le serveur.
Installation
Sur les distributions récentes, l\'installation est très simple.
sudo apt-get update
sudo apt-get install -y wireguard
Configuration Serveur
Étape 1 : Générer les clés
Chaque pair (le serveur et chaque client) a besoin d\'une paire de clés (privée et publique).
# Se placer dans le répertoire de configuration
cd /etc/wireguard/
# Générer la clé privée du serveur, et la rendre lisible uniquement par root
umask 077
wg genkey | sudo tee server_private.key
# Dériver la clé publique à partir de la clé privée
sudo cat server_private.key | wg pubkey | sudo tee server_public.key
Faites de même pour chaque client que vous souhaitez connecter. Pour cet exemple, nous en créons une pour `client1` :
wg genkey | sudo tee client1_private.key
sudo cat client1_private.key | wg pubkey | sudo tee client1_public.key
Étape 2 : Créer le fichier de configuration du serveur
Créez le fichier /etc/wireguard/wg0.conf. Le nom `wg0` correspond à l\'interface réseau virtuelle qui sera créée.
sudo nano /etc/wireguard/wg0.conf
Collez la configuration suivante, en l\'adaptant :
[Interface]
# Adresse IP privée du serveur sur le réseau VPN
Address = 10.0.0.1/24
# Port d'écoute pour les connexions entrantes
ListenPort = 51820
# Clé privée du serveur (à coller ici)
PrivateKey = COLLER_LE_CONTENU_DE_server_private.key
# Ces lignes activent le NAT pour que les clients puissent accéder à Internet via le serveur
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# Ceci est la configuration du client1
# Clé publique du client1
PublicKey = COLLER_LE_CONTENU_DE_client1_public.key
# IP privée qui sera assignée à ce client sur le réseau VPN
AllowedIPs = 10.0.0.2/32
Étape 3 : Activer le forwarding IP
Pour que le serveur puisse router le trafic des clients vers Internet, il faut activer le forwarding IP.
sudo nano /etc/sysctl.conf
Décommentez la ligne net.ipv4.ip_forward=1. Puis appliquez la modification :
sudo sysctl -p
Démarrer le VPN
L\'outil `wg-quick` permet de gérer facilement les interfaces WireGuard.
# Démarrer l'interface wg0
sudo wg-quick up wg0
# Activer le démarrage automatique au boot du serveur
sudo systemctl enable [email protected]
Configuration Client
Sur la machine cliente, installez WireGuard, puis créez un fichier de configuration /etc/wireguard/wg0.conf.
[Interface]
# Adresse IP privée du client
Address = 10.0.0.2/24
# Clé privée du client
PrivateKey = COLLER_LE_CONTENU_DE_client1_private.key
[Peer]
# Clé publique du serveur
PublicKey = COLLER_LE_CONTENU_DE_server_public.key
# IP publique et port du serveur
Endpoint = IP_PUBLIQUE_DU_SERVEUR:51820
# AllowedIPs = 0.0.0.0/0 permet de router TOUT le trafic du client via le VPN
AllowedIPs = 0.0.0.0/0
# Garde la connexion active
PersistentKeepalive = 25
Démarrez l\'interface sur le client avec sudo wg-quick up wg0. Vous êtes connecté !
Sur le serveur, la commande
sudo wg vous montrera l\'interface, la clé publique et les informations sur les pairs connectés, y compris le dernier "handshake".
Conclusion
WireGuard a révolutionné le monde des VPN par sa simplicité et ses performances. Sa méthode de configuration, basée sur l\'échange de clés publiques, est à la fois intuitive et très sécurisée. Pour des connexions point-à-point ou pour un accès à distance sécurisé, c\'est aujourd\'hui l\'une des meilleures solutions disponibles, et son intégration dans le noyau Linux en fait un standard de facto.