WireGuard est un VPN moderne intégré au noyau Linux : quelques lignes de configuration, un chiffrement récent et des performances nettement supérieures à OpenVPN. Sur un VPS, il crée un réseau privé entre vos appareils et le serveur. Ce guide monte un serveur WireGuard et configure un premier client en une quinzaine de minutes.
1. À quoi ça sert sur un VPS
- Accéder à des services sans les exposer : base de données, panneau txAdmin, Netdata, interface d'administration. Ils n'écoutent que sur le réseau privé du VPN, et restent invisibles depuis Internet.
- Relier plusieurs serveurs entre eux par un réseau chiffré, par exemple un serveur de jeu et sa base de données.
- Faire sortir votre trafic par le VPS, pour naviguer depuis un réseau Wi-Fi public avec une connexion chiffrée jusqu'en France.
Les exemples utilisent le réseau privé 10.8.0.0/24 : le serveur y prend l'adresse 10.8.0.1, les appareils 10.8.0.2, 10.8.0.3, etc.
2. Installer WireGuard
apt update && apt install -y wireguard qrencode
qrencode servira à configurer un téléphone en scannant un QR code.
3. Générer les clés
Chaque participant, serveur comme appareil, possède une paire de clés : la clé privée reste sur la machine, la clé publique est donnée aux autres. Générez celles du serveur et d'un premier client :
cd /etc/wireguard
umask 077
wg genkey | tee serveur.key | wg pubkey > serveur.pub
wg genkey | tee client1.key | wg pubkey > client1.pub
umask 077 garantit que les fichiers de clés ne sont lisibles que par root.
4. Configurer le serveur
Repérez d'abord le nom de l'interface réseau publique du VPS :
ip route show default
Le nom apparaît après dev, souvent eth0 ou ens18. Créez ensuite /etc/wireguard/wg0.conf, en remplaçant les valeurs entre chevrons par le contenu des fichiers de clés :
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contenu de serveur.key>
# sortie Internet des clients par le VPS (remplacez eth0 si besoin)
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
[Peer]
# client1 : ordinateur portable
PublicKey = <contenu de client1.pub>
AllowedIPs = 10.8.0.2/32
Les lignes PostUp et PostDown ne servent que si vous voulez faire sortir le trafic Internet des clients par le VPS. Dans ce cas, activez aussi le routage :
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-wireguard.conf
sysctl --system
Ouvrez enfin le port dans le pare-feu, et autorisez le routage si UFW est actif :
ufw allow 51820/udp comment 'WireGuard'
ufw route allow in on wg0 out on eth0
5. Configurer un client
Installez l'application WireGuard officielle sur votre appareil (Windows, macOS, Linux, Android ou iOS). La configuration du client ressemble à ceci :
[Interface]
PrivateKey = <contenu de client1.key>
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <contenu de serveur.pub>
Endpoint = IP_DU_VPS:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
La ligne AllowedIPs décide de ce qui passe par le VPN :
10.8.0.0/24: seul le trafic vers le réseau privé passe par le VPN. Votre navigation reste sur votre connexion habituelle. C'est le bon choix pour administrer vos serveurs.0.0.0.0/0, ::/0: tout le trafic passe par le VPS. Nécessite les lignesPostUpet le routage de l'étape précédente.
PersistentKeepalive maintient la connexion ouverte derrière une box ou un réseau mobile. Pour un téléphone, enregistrez la configuration dans client1.conf sur le serveur et affichez-la sous forme de QR code, à scanner dans l'application :
qrencode -t ansiutf8 < client1.conf
Supprimez ensuite les fichiers client1.key et client1.conf du serveur : la clé privée d'un appareil n'a rien à faire sur le VPS.
6. Démarrer et vérifier
systemctl enable --now wg-quick@wg0
wg show
Activez le tunnel dans l'application du client, puis relancez wg show : une ligne latest handshake récente confirme que la connexion est établie. Depuis le client, ping 10.8.0.1 doit répondre.
Pas de handshake ? Vérifiez dans l'ordre : le port 51820 en UDP dans le pare-feu, l'adresse du VPS dans Endpoint, et que chaque côté possède bien la clé publique de l'autre.
7. Réserver un service au VPN
C'est l'usage le plus utile sur un VPS. Pour qu'un service ne soit joignable qu'à travers le VPN, ouvrez son port uniquement depuis le réseau privé :
ufw allow from 10.8.0.0/24 to any port 3306 proto tcp comment 'MariaDB via VPN'
ufw allow from 10.8.0.0/24 to any port 40120 proto tcp comment 'txAdmin via VPN'
Pour une base de données, faites-la écouter sur 10.8.0.1 en plus de l'adresse locale. Vous pouvez même réserver SSH au VPN, mais gardez alors un accès de secours, comme la console de secours (VNC) de l'espace client. Voir aussi sécuriser MariaDB et configurer UFW.
8. Ajouter des appareils
Pour chaque nouvel appareil : générez une paire de clés, ajoutez un bloc [Peer] dans wg0.conf avec l'adresse suivante (10.8.0.3/32, etc.), puis appliquez sans couper les connexions existantes :
wg syncconf wg0 <(wg-quick strip wg0)
Pour révoquer un appareil perdu, supprimez son bloc [Peer] et relancez la même commande.