Oubliez la lourdeur d'OpenVPN ou la complexité d'IPsec. WireGuard est le nouveau standard : intégré directement dans le noyau Linux, il est incroyablement rapide, utilise une cryptographie de pointe et se configure en quelques lignes. Voici comment déployer votre propre serveur VPN.
1. Installation
Sur une Debian 11/12 ou Ubuntu récente, WireGuard est dans les dépôts officiels.
sudo apt update
sudo apt install wireguard qrencode -y
Note : J'installe aussi `qrencode` pour générer facilement la config pour mobile à la fin.
2. Génération des Clés (Serveur)
WireGuard fonctionne sur un principe de clés asymétriques (Privée/Publique), comme SSH. Générons les clés du serveur en sécurisant les permissions immédiatement.
cd /etc/wireguard/
umask 077 # Assure que les fichiers créés ne sont lisibles que par root
wg genkey | tee privatekey | wg pubkey > publickey
Affichez la clé privée pour la copier (on en aura besoin juste après) :
cat privatekey
3. Configuration du Serveur (Interface)
Créez le fichier de configuration principal wg0.conf :
sudo nano /etc/wireguard/wg0.conf
Voici la configuration complète. Remplacez <VOTRE_CLE_PRIVEE> par celle générée au-dessus.
[Interface]
# L'adresse IP privée du serveur dans le tunnel VPN
Address = 10.10.0.1/24
SaveConfig = true
ListenPort = 51820
PrivateKey = <VOTRE_CLE_PRIVEE>
# Règles de routage (NAT) pour accéder à Internet via le VPN
# Remplacez 'eth0' par le nom de votre interface réseau réelle (commande: ip a)
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
ip a. Si ce n'est pas eth0 (par exemple ens33 ou ens18), modifiez les lignes PostUp/PostDown ci-dessus, sinon vous n'aurez pas d'Internet !
4. Activer le "IP Forwarding"
Par défaut, un serveur Linux ne transmet pas les paquets d'une interface à l'autre. Pour qu'il agisse comme un routeur VPN, il faut activer cette option.
sudo nano /etc/sysctl.conf
Décommentez la ligne suivante :
net.ipv4.ip_forward=1
Appliquez le changement : sudo sysctl -p.
5. Démarrage du service
Tout est prêt. Lançons l'interface wg0 :
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
6. Ajouter un Client (PC ou Smartphone)
Contrairement à OpenVPN, il faut aussi générer des clés pour le client. Sur le serveur, faisons-le pour un "Client1".
wg genkey | tee client1_privatekey | wg pubkey > client1_publickey
A. Configuration du Client
Créez un fichier texte sur votre PC (ex: client1.conf) avec ce contenu :
[Interface]
PrivateKey = <CLE_PRIVEE_DU_CLIENT_1>
Address = 10.10.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <CLE_PUBLIQUE_DU_SERVEUR>
Endpoint = IP_PUBLIQUE_DU_SERVEUR:51820
AllowedIPs = 0.0.0.0/0 # Redirige TOUT le trafic via le VPN
B. Déclarer le client sur le serveur
Le serveur doit connaître ce client. Ajoutez-le à la volée :
sudo wg set wg0 peer <CLE_PUBLIQUE_DU_CLIENT_1> allowed-ips 10.10.0.2
C. Connexion Mobile (QR Code)
Pour connecter un smartphone facilement, générez un QR Code à partir de la config client :
qrencode -t ansiutf8 < client1.conf
Scannez l'image avec l'app WireGuard officielle, et c'est connecté !