Security
Difficulte: Intermediate
4 min de lecture

WireGuard : VPN simple et performant

Tutoriel pour installer et configurer WireGuard, une solution VPN moderne, simple et performante pour sécuriser vos connexions réseau.

Retour aux tutoriels
Qu\'est-ce que WireGuard ?
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é !

Vérifier la connexion
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.