Skip to content
Learni
Voir tous les tutoriels
Sécurité

Comment configurer un VPN WireGuard personnel en 2026

Read in English

Introduction

En 2026, un VPN personnel est indispensable pour protéger votre vie privée contre la surveillance massive, les fuites IP et les attaques MITM sur les réseaux publics. Contrairement aux VPN commerciaux surchargés (latence élevée, logs potentiels), WireGuard offre un chiffrement ChaCha20-Poly1305 ultra-rapide (3x plus performant qu'OpenVPN) avec seulement 4 000 lignes de code auditées.

Ce tutoriel débutant vous guide pour déployer un serveur WireGuard sur un VPS Ubuntu (coût ~5€/mois). Imaginez : votre trafic routé via un tunnel sécurisé, comme un tunnel routier privé évitant les embouteillages espions. À la fin, vous connecterez n'importe quel appareil (PC, mobile) en 15 minutes. Avantages concrets : zéro logs, IPs dynamiques masquées, accès géo-bloqué bypassé. Prêt à reprendre le contrôle ? (128 mots)

Prérequis

  • Un VPS Ubuntu 24.04 LTS (ex: DigitalOcean droplet 1 vCPU/1GB RAM, ~5€/mois)
  • Accès root via SSH (clé publique recommandée)
  • Client WireGuard installé sur votre appareil local (téléchargeable sur wireguard.com/install)
  • Connaissances basiques SSH : ssh root@IP_VPS

Mettre à jour le système et installer WireGuard

install-wireguard.sh
#!/bin/bash
apt update -y && apt upgrade -y
apt install wireguard wireguard-tools qrencode -y
systemctl enable wg-quick@wg0

# Vérifier l'installation
wg --version

Ce script met à jour Ubuntu, installe WireGuard et ses outils (qrencode pour QR codes clients). Il active le service systemd pour wg0 au boot. Piège : sans apt upgrade, des paquets obsolètes cassent les modules kernel ; exécutez en root via bash install-wireguard.sh.

Générer les clés cryptographiques

WireGuard utilise des paires de clés Ed25519 (plus sécurisées que RSA). Le serveur a une clé privée gardée secrète ; sa clé publique est partagée avec les clients. Analogy : comme un cadenas (pub) et sa clé (privée). Stockez-les hors ligne pour éviter les fuites.

Générer clés serveur et client

generate-keys.sh
#!/bin/bash

# Clés serveur
wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
chmod 600 /etc/wireguard/private.key

# Clés client (exemple pour un client)
wg genkey | tee client-private.key | wg pubkey > client-public.key

# Afficher pour vérif (ne pas partager private !)
echo "Serveur privé: $(cat /etc/wireguard/private.key)"
echo "Serveur public: $(cat /etc/wireguard/public.key)"
echo "Client public: $(cat client-public.key)"

Génère et protège les clés (chmod 600 empêche les lectures non-root). Copiez client-public.key pour la config serveur. Piège : fuites si clés publiques exposées publiquement ; utilisez qrencode plus tard pour clients mobiles sans copier-coller.

Configuration serveur WireGuard

/etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.1/24
PrivateKey = <INSÉRER_CLÉ_PRIVÉE_SERVEUR_ICI>
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Client exemple
[Peer]
PublicKey = <INSÉRER_CLÉ_PUBLIQUE_CLIENT_ICI>
AllowedIPs = 10.0.0.2/32

Remplacez les placeholders par vos clés (ex: nano /etc/wireguard/wg0.conf). PostUp/PostDown active le NAT pour router le trafic client via le VPS. Piège : eth0 peut être ens3 sur certains VPS – vérifiez avec ip a ; port 51820 UDP doit être ouvert.

Démarrer le serveur et configurer le firewall

Maintenant, lancez le tunnel. UFW (firewall Ubuntu) autorise le VPN sans exposer le serveur. Testez la connectivité avec ping depuis le client.

Démarrer WireGuard et sécuriser avec UFW

start-server.sh
#!/bin/bash
ufw allow 22/tcp
ufw allow 51820/udp
ufw --force enable
ufw status verbose

wg-quick up wg0
wg show

# Persistance au reboot
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0

Active UFW (défaut deny), ouvre SSH et UDP VPN. wg-quick up applique la config. Piège : oublier UFW bloque SSH – toujours autoriser 22/tcp en premier ; wg show vérifie pairs/handshakes actifs.

Configuration client WireGuard (exemple Linux)

client.conf
[Interface]
Address = 10.0.0.2/24
PrivateKey = <INSÉRER_CLÉ_PRIVÉE_CLIENT_ICI>
DNS = 1.1.1.1

[Peer]
PublicKey = <INSÉRER_CLÉ_PUBLIQUE_SERVEUR_ICI>
Endpoint = IP_VOTRE_VPS:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Copiez sur votre machine locale, importez dans l'app WireGuard (wg-quick up client). AllowedIPs=0.0.0.0/0 route tout le trafic via VPN ; Keepalive maintient le tunnel NAT. Piège : DNS leaks sans DNS=1.1.1.1 – testez sur ipleak.net.

Tester la connexion VPN

Sur client : wg-quick up client.conf puis curl ifconfig.me (doit montrer IP VPS). Vérifiez pas de leaks sur dnsleaktest.com. Pour mobile, scannez QR : qrencode -t ansiutf8 < client.conf.

Script de test et monitoring

test-vpn.sh
#!/bin/bash
# Sur client
echo "IP avant VPN: $(curl -s ifconfig.me)"
wg-quick up client.conf
sleep 5
echo "IP via VPN: $(curl -s ifconfig.me)"
wg show

# Sur serveur
wg show | grep handshake
tail -f /var/log/syslog | grep wireguard

Teste routage et handshake (>1min valide). Surveille logs. Piège : pas de handshake = firewall bloqué ou mauvaise clé ; journalctl -u wg-quick@wg0 -f pour debug.

Bonnes pratiques

  • Clés uniques par client : Ajoutez un [Peer] par appareil dans wg0.conf, redémarrez wg-quick.
  • Fail2ban + monitoring : Installez pour bannir brute-force SSH.
  • Update régulier : apt update && apt upgrade wireguard mensuel.
  • Multi-clients : Utilisez IPAM (10.0.0.2, .3...) et scripts auto-gén.
  • Backup configs : tar czf vpn-backup.tar.gz /etc/wireguard/.

Erreurs courantes à éviter

  • Pas de NAT : Trafic client ne sort pas – ajoutez PostUp iptables.
  • Port bloqué : Vérifiez ufw status et VPS security group (AWS/EC2).
  • Clés mal copiées : Handshake=0 – régénérez et comparez hex.
  • IPv6 leaks : Ajoutez Address=fd00::2/64 et AllowedIPs=::/0.

Pour aller plus loin