Introduction
Vous avez remarqué comment tout devient surveillé sur Internet ces jours-ci ? Entre la loi française qui impose le contrôle d’âge sur certains sites pour adultes et les trackers partout, on se dit parfois : « J’aimerais bien pouvoir naviguer tranquille, sans que personne ne sache où je vais. » 😅
Bonne nouvelle : installer votre propre VPN avec WireGuard sur un VPS Ubuntu est simple, sécurisé, et vous permet de surfer anonymement.
Pourquoi choisir WireGuard ?
- Rapide et léger : intégré au noyau Linux, consomme peu de ressources
- Sécurisé : utilise des algorithmes modernes (ChaCha20, Curve25519)
- Simple à configurer : quelques fichiers
.conf
suffisent
Comparé à OpenVPN, WireGuard offre une meilleure performance et une configuration plus simple, idéal pour un usage personnel.
Prérequis
- Un VPS Ubuntu 20.04 ou plus récent
- Accès root ou sudo
- Une connexion SSH fonctionnelle
- Un client pour tester la connexion
Étape 1 : Installer WireGuard sur Ubuntu
Connectez-vous à votre VPS en SSH et mettez à jour le système :
sudo apt update && sudo apt upgrade -y
Installez WireGuard et les outils nécessaires :
sudo apt install wireguard wireguard-tools -y
Étape 2 : Générer les clés de chiffrement
Créez un répertoire pour les configurations :
mkdir wireguard
cd wireguard
Générez les clés privée et publique du serveur :
# Clé privée du serveur
sudo wg genkey | sudo tee server-private.key | wg pubkey | sudo tee server-public.key
# Clés pour le client
sudo wg genkey | sudo tee client-private.key | wg pubkey | sudo tee client-public.key
Sécurisez les permissions :
sudo chmod 600 *
Étape 3 : Configurer le serveur WireGuard
Créez le fichier de configuration du serveur :
sudo nano /etc/wireguard/wg0.conf
Ajoutez le contenu suivant (remplacez les clés et l’interface réseau par vos valeurs) :
[Interface]
# Clé privée du serveur
PrivateKey = VOTRE_CLE_PRIVEE_SERVEUR
# Adresse IP du serveur dans le réseau VPN
Address = 10.8.0.1/24
# Port d'écoute
ListenPort = 51820
# Redirection du trafic (remplacez eth0 par votre interface réseau)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Configuration du client
[Peer]
# Clé publique du client
PublicKey = VOTRE_CLE_PUBLIQUE_CLIENT
# Adresse IP autorisée pour ce client
AllowedIPs = 10.8.0.2/32
Étape 4 : Activer le forwarding sur le serveur
Pour que le trafic VPN puisse sortir vers Internet, vous devez activer le forwarding IP :
# Activer le forwarding temporairement
sudo sysctl -w net.ipv4.ip_forward=1
# Rendre le changement permanent
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
# Appliquer la configuration
sudo sysctl -p
# Vérifier que le forwarding est activé
cat /proc/sys/net/ipv4/ip_forward
# Doit afficher : 1
Si vous utilisez IPv6, activez aussi le forwarding IPv6 :
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Étape 5 : Configurer le NAT
WireGuard fonctionne sur UDP et chaque client a une IP privée. Pour accéder à Internet, il faut masquer cette IP avec du NAT (Network Address Translation) :
Identifier votre interface réseau publique
Trouvez d’abord votre interface réseau publique :
# Voir toutes les interfaces
ip addr
# Ou voir l'interface par défaut
ip route | grep default
L’interface sera généralement eth0
, ens3
, ens6
ou similaire.
Configurer les règles NAT
# Remplacez 'eth0' par votre interface réseau publique
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
# Autoriser le forwarding pour WireGuard
sudo iptables -A FORWARD -i wg0 -j ACCEPT
sudo iptables -A FORWARD -o wg0 -j ACCEPT
Rendre les règles persistantes
Installez iptables-persistent
pour sauvegarder les règles :
sudo apt install iptables-persistent -y
# Sauvegarder les règles actuelles
sudo netfilter-persistent save
# Les règles seront automatiquement restaurées au redémarrage
Vérifier les règles
# Voir les règles NAT
sudo iptables -t nat -L -n -v
# Voir les règles de forwarding
sudo iptables -L FORWARD -n -v
Note : Ces règles sont aussi définies dans PostUp/PostDown du fichier de configuration WireGuard, mais il est recommandé de les configurer manuellement pour plus de contrôle.
Étape 6 : Démarrer le service WireGuard
Démarrez et activez le service :
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Vérifiez le statut :
sudo systemctl status wg-quick@wg0
sudo wg show
Étape 7 : Configurer le pare-feu
Si UFW est activé, autorisez le port WireGuard :
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
sudo ufw --force enable
Étape 8 : Configurer le client
Créez le fichier de configuration client client.conf
:
[Interface]
# Clé privée du client
PrivateKey = VOTRE_CLE_PRIVEE_CLIENT
# Adresse IP du client dans le réseau VPN
Address = 10.8.0.2/24
# Serveur DNS (optionnel)
DNS = 1.1.1.1, 8.8.8.8
[Peer]
# Clé publique du serveur
PublicKey = VOTRE_CLE_PUBLIQUE_SERVEUR
# Adresse et port du serveur
Endpoint = ADRESSE_IP_SERVEUR:51820
# Tout le trafic passe par le VPN
AllowedIPs = 0.0.0.0/0
# Maintenir la connexion
PersistentKeepalive = 25
Étape 9 : Récupérer les clés
Pour obtenir les clés générées :
# Clé privée du serveur
sudo cat wireguard/keys/server-private.key
# Clé publique du serveur
sudo cat wireguard/keys/server-public.key
# Clé privée du client
sudo cat wireguard/keys/client-private.key
# Clé publique du client
sudo cat wireguard/keys/client-public.key
Étape 10 : Tester la connexion
Sur Linux/macOS :
sudo wg-quick up client
# Test
curl ifconfig.me
sudo wg-quick down client
Sur Windows :
- Téléchargez l’application WireGuard
- Importez le fichier
client.conf
- Activez la connexion
Sur Android/iOS :
- Installez l’app WireGuard
- Scannez le QR code ou importez le fichier
Vérifier la connexion
Une fois connecté au VPN, testez depuis le client :
Test de connectivité VPN
# Ping du serveur VPN (doit répondre)
ping 10.8.0.1
Test d’accès Internet
# Ping d'Internet (doit répondre pour confirmer que le trafic passe par le VPN)
ping 8.8.8.8
# Vérifier votre IP publique (doit afficher l'IP de votre VPS)
curl ifconfig.me
# ou
curl ipinfo.io/ip
Diagnostic : Si le premier ping fonctionne mais pas le second, il s’agit d’un problème de NAT ou de forwarding.
Debug rapide
En cas de problème, voici les vérifications essentielles :
Côté serveur
# Vérifier WireGuard sur le serveur
sudo wg show
# Vérifier les règles NAT
sudo iptables -t nat -L -n -v
# Vérifier les règles de forwarding
sudo iptables -L FORWARD -n -v
# Vérifier le firewall
sudo ufw status
sudo ufw allow 51820/udp
# Vérifier le forwarding IP
cat /proc/sys/net/ipv4/ip_forward
# Doit afficher : 1
Côté client
# Tester la connectivité réseau vers le VPS
ping IP_PUBLIQUE_DU_VPS
# Vérifier la configuration WireGuard
sudo wg show
# Test de résolution DNS
nslookup google.com
Vérifications réseau avancées
# Voir l'interface réseau utilisée
ip route | grep default
# Vérifier les connexions actives
ss -tuln | grep 51820
# Logs du service WireGuard
sudo journalctl -u wg-quick@wg0 -f
Générer un QR code pour mobile
Pour faciliter la configuration sur mobile, générez un QR code :
# Installer qrencode
sudo apt install qrencode -y
# Générer le QR code à partir du fichier client
qrencode -t ansiutf8 < client.conf
# Ou sauvegarder en image PNG
qrencode -o client-qr.png < client.conf
Accéder à votre LAN local avec le VPN actif
Par défaut, quand WireGuard est actif, tout le trafic passe par le VPN (grâce à AllowedIPs = 0.0.0.0/0
). Cela signifie que vous perdez l’accès à votre réseau local (imprimantes, NAS, autres appareils). Voici comment résoudre ce problème :
Option 1 : Exclure votre réseau local (recommandé)
Modifiez le fichier client.conf
pour exclure votre réseau local :
[Interface]
PrivateKey = VOTRE_CLE_PRIVEE_CLIENT
Address = 10.8.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = VOTRE_CLE_PUBLIQUE_SERVEUR
Endpoint = ADRESSE_IP_SERVEUR:51820
# Route tout SAUF votre réseau local (ex: 192.168.1.0/24)
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
PersistentKeepalive = 25
# Routes personnalisées (ajoutez après la connexion VPN)
# PostUp = ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0
Option 2 : Routes spécifiques avec script
Créez un script pour gérer les routes automatiquement :
[Interface]
PrivateKey = VOTRE_CLE_PRIVEE_CLIENT
Address = 10.8.0.2/24
DNS = 1.1.1.1, 8.8.8.8
# Conserver l'accès au LAN local
PostUp = ip route add 192.168.1.0/24 via 192.168.1.1 dev wlan0
PostDown = ip route del 192.168.1.0/24 via 192.168.1.1 dev wlan0
[Peer]
PublicKey = VOTRE_CLE_PUBLIQUE_SERVEUR
Endpoint = ADRESSE_IP_SERVEUR:51820
# Route tout le trafic par le VPN
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Option 3 : Split tunneling manuel
Si vous voulez plus de contrôle, utilisez des routes spécifiques :
[Interface]
PrivateKey = VOTRE_CLE_PRIVEE_CLIENT
Address = 10.8.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = VOTRE_CLE_PUBLIQUE_SERVEUR
Endpoint = ADRESSE_IP_SERVEUR:51820
# Seuls certains réseaux passent par le VPN
AllowedIPs = 1.0.0.0/8, 8.0.0.0/8, 9.0.0.0/8
PersistentKeepalive = 25
Identifier votre réseau local
Pour connaître votre réseau local :
# Voir votre IP et réseau local
ip route | grep -E "192.168|10\.|172\."
# Ou plus simplement
hostname -I
Exemple typique :
- Réseau domestique :
192.168.1.0/24
(passerelle :192.168.1.1
) - Interface WiFi :
wlan0
ouwlp2s0
- Interface Ethernet :
eth0
ouenp3s0
Tester la configuration
Après avoir modifié la config :
# Redémarrer WireGuard
sudo wg-quick down wg0
sudo wg-quick up wg0
# Tester l'accès local ET Internet
ping 192.168.1.1 # Votre box/routeur local
ping 8.8.8.8 # Internet via VPN
curl ifconfig.me # Vérifier l'IP publique (doit être celle du VPS)
Cette configuration vous permet de naviguer sur Internet via le VPN tout en gardant l’accès à vos appareils locaux ! 🏠
Ajouter plusieurs clients
Pour chaque nouveau client :
- Générez de nouvelles clés
- Attribuez une nouvelle IP (10.8.0.3, 10.8.0.4, etc.)
- Ajoutez une section
[Peer]
dans/etc/wireguard/wg0.conf
- Rechargez la configuration :
sudo wg syncconf wg0 <(wg-quick strip wg0)
Dépannage courant
Le VPN ne se connecte pas :
- Vérifiez que le port 51820/UDP est ouvert
- Contrôlez les clés dans les fichiers de configuration
- Vérifiez les logs :
sudo journalctl -u wg-quick@wg0
Pas d’accès Internet :
- Vérifiez que
ip_forward
est activé - Contrôlez les règles iptables
- Vérifiez l’interface réseau dans PostUp/PostDown (remplacez
eth0
par votre interface)
Trouver votre interface réseau :
# Voir l'interface par défaut
ip route | grep default
La commande affichera quelque chose comme : default via X.X.X.X dev eth0
Important : Remplacez eth0
dans les configurations ci-dessus par votre interface réelle.
Conseils de sécurité
- Changez le port par défaut : utilisez un port différent de 51820
- Limitez les connexions : n’autorisez que les IP nécessaires
- Utilisez des clés uniques : une paire par client
- Mettez à jour régulièrement :
sudo apt update && sudo apt upgrade
- Surveillez les connexions :
sudo wg show
régulièrement
Conclusion
En suivant ces étapes, vous avez maintenant :
- Un VPN WireGuard fonctionnel sur votre VPS Ubuntu
- Le NAT et le forwarding configurés pour que tout votre trafic Internet passe par le VPN
- Une navigation sécurisée et rapide, idéale pour protéger votre vie privée (et éviter les regards indiscrets 👀)
- Les outils de diagnostic pour résoudre rapidement les problèmes éventuels
WireGuard est léger, moderne et performant, parfait pour surfer tranquille même dans un monde où tout semble sous contrôle. Avec votre propre serveur VPN, vous gardez le contrôle total sur vos données et votre confidentialité en ligne.
Ressources utiles
- Documentation officielle WireGuard
- Générateur de configuration en ligne
- Clients WireGuard pour tous les systèmes
Rappel : utilisez ce VPN de manière responsable et respectez les lois de votre pays.