À quoi va servir votre VPN ?
Avec WireGuard, chaque appareil reçoit une adresse privée (ici en 10.8.0.x) et peut joindre les autres par ce tunnel chiffré, même derrière une box ou un réseau mobile. Les usages typiques : accéder à son NAS ou à sa domotique depuis l'extérieur, administrer ses serveurs sans les exposer sur Internet, relier deux sites, ou réserver l'accès SSH de son VPS au seul VPN.
Choisir un VPS KVM
WireGuard fonctionne dans le noyau Linux. Sur un VPS KVM, vous avez votre propre noyau et tout marche directement. En LXC, le noyau est partagé avec notre serveur et WireGuard n'est pas garanti : choisissez KVM pour ce projet (voir KVM ou LXC). Côté puissance, le VPS Mini suffit pour un usage personnel ou familial.
Vos appareils doivent aussi avoir l'IPv6 pour joindre le VPS. C'est le cas de la plupart des box et forfaits mobiles français ; le guide du VPS IPv6 explique comment le vérifier.
1. Installer WireGuard sur le VPS
apt update && apt install -y wireguard
Générez la paire de clés du serveur. umask 077 garantit que la clé privée n'est lisible que par root :
cd /etc/wireguard
umask 077
wg genkey | tee serveur.key | wg pubkey > serveur.pub
2. Générer les clés de chaque appareil
Chaque appareil a sa propre paire de clés. Le plus simple est de les générer dans l'application WireGuard de l'appareil (Windows, macOS, Android, iOS) : elle affiche la clé publique à copier. Sous Linux, utilisez la même commande que ci-dessus.
3. Configurer le serveur
Créez /etc/wireguard/wg0.conf :
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <contenu de serveur.key>
# Ordinateur portable
[Peer]
PublicKey = <clé publique du portable>
AllowedIPs = 10.8.0.2/32
# Téléphone
[Peer]
PublicKey = <clé publique du téléphone>
AllowedIPs = 10.8.0.3/32
Ajoutez un bloc [Peer] par appareil, chacun avec sa propre adresse. Pour que les appareils puissent se joindre entre eux à travers le VPS, autorisez le routage :
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/90-wireguard.conf
sysctl --system
Si vous utilisez un pare-feu comme ufw, ouvrez le port de WireGuard :
ufw allow 51820/udp
ufw route allow in on wg0 out on wg0
La seconde règle laisse passer le trafic d'un appareil à l'autre à travers le VPS, que ufw bloque par défaut.
Démarrez le VPN et activez-le au démarrage :
systemctl enable --now wg-quick@wg0
wg show
4. Configurer un appareil
Dans l'application WireGuard, créez un tunnel avec cette configuration (exemple pour le portable) :
[Interface]
PrivateKey = <clé privée du portable>
Address = 10.8.0.2/24
[Peer]
PublicKey = <contenu de serveur.pub>
Endpoint = [2001:db8::10]:51820
AllowedIPs = 10.8.0.0/24
PersistentKeepalive = 25
Remplacez 2001:db8::10 par l'adresse IPv6 de votre VPS, en gardant les crochets. La ligne AllowedIPs = 10.8.0.0/24 ne fait passer dans le tunnel que le trafic du réseau privé : le reste de votre connexion n'est pas modifié. PersistentKeepalive garde le tunnel ouvert derrière une box ou un réseau mobile.
Activez le tunnel, puis testez depuis l'appareil :
ping 10.8.0.1
Si le VPS répond, c'est gagné. La commande wg show sur le serveur indique pour chaque appareil la date du dernier échange (« latest handshake »).
5. Pour aller plus loin : SSH par le VPN uniquement
Une fois le VPN en place, vous pouvez n'autoriser SSH que depuis le réseau privé. Avec ufw, par exemple :
ufw allow from 10.8.0.0/24 to any port 22 proto tcp
Ne supprimez la règle SSH ouverte à tous qu'après avoir vérifié que la connexion par le VPN fonctionne (ssh root@10.8.0.1) : sinon vous risquez de vous enfermer dehors.