Sommaire
Comprendre les VPN, installer WireGuard sur Debian pour un accès sécurisé au réseau interne.
🎯 Objectifs de la fiche
- Principe des VPN — Tunnel chiffré, types de VPN
- WireGuard vs OpenVPN — Comparaison, choix selon le besoin
- Installer WireGuard serveur — Debian, génération de clés, interface wg0
- Configurer un client WireGuard — Linux et Windows
- Vérification et dépannage — wg show, ping, journalctl
Prérequis
Debian 13 avec accès root et IP publique (ou IP accessible depuis les clients). Port UDP 51820 ouvert dans le pare-feu. Routage IP activé.
1. Principe des VPN
Un VPN (Virtual Private Network) crée un tunnel chiffré entre deux points. Tout le trafic qui transite par ce tunnel est chiffré, même sur un réseau non fiable (Internet).
| Type de VPN | Usage | Exemples |
|---|---|---|
| Remote Access | Un client se connecte au réseau d'entreprise depuis l'extérieur | Télétravail, accès depuis chez soi |
| Site-to-Site | Connecter deux réseaux distants de façon permanente | Liaison entre deux sites d'une entreprise |
| Split Tunneling | Seul le trafic vers l'entreprise passe par le VPN | Permet d'utiliser Internet normalement en parallèle |
| Full Tunnel | Tout le trafic passe par le VPN | Sécurité maximale, toute la navigation est protégée |
2. WireGuard vs OpenVPN
| Critère | WireGuard | OpenVPN |
|---|---|---|
| Performances | Excellent — noyau Linux, très rapide | Bon — en espace utilisateur |
| Configuration | Simple — quelques lignes | Complexe — PKI, certificats |
| Protocole | UDP uniquement | UDP ou TCP (TCP pour contournement pare-feu) |
| Algorithmes | Modernes (Curve25519, ChaCha20, Poly1305) | Nombreux choix (RSA, AES...) |
| Code source | 4000 lignes — auditée facilement | 70 000+ lignes |
| Mobilité | Excellent handover (mobile) | Bon |
| Usage recommandé | Nouveau déploiement, simplicité, performances | Compatibilité maximale, contournement filtrage |
3. Installer WireGuard — Côté serveur
sudo apt install wireguard -y # Générer les clés du serveur wg genkey | sudo tee /etc/wireguard/server_private.key | \ wg pubkey | sudo tee /etc/wireguard/server_public.key # Afficher les clés sudo cat /etc/wireguard/server_private.key sudo cat /etc/wireguard/server_public.key # Protéger les clés privées sudo chmod 600 /etc/wireguard/server_private.key
# Créer la configuration serveur
sudo nano /etc/wireguard/wg0.conf
[Interface] Address = 10.0.0.1/24 # IP du serveur dans le tunnel VPN ListenPort = 51820 # Port UDP d'écoute PrivateKey = <COLLER_CLE_PRIVEE_SERVEUR> 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 1 : Alice [Peer] PublicKey = <CLE_PUBLIQUE_CLIENT_ALICE> AllowedIPs = 10.0.0.2/32 # IP du client dans le tunnel # Client 2 : Bob [Peer] PublicKey = <CLE_PUBLIQUE_CLIENT_BOB> AllowedIPs = 10.0.0.3/32
# Activer le routage IP echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.d/99-vpn.conf sudo sysctl -p /etc/sysctl.d/99-vpn.conf # Démarrer WireGuard sudo systemctl enable --now wg-quick@wg0 sudo wg show # Ouvrir le port dans UFW sudo ufw allow 51820/udp
4. Configurer un client WireGuard
4.1 Client Linux
sudo apt install wireguard -y # Générer les clés du client wg genkey | sudo tee /etc/wireguard/client_private.key | \ wg pubkey | sudo tee /etc/wireguard/client_public.key # Créer la config client sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.0.2/24 # IP du client dans le tunnel
PrivateKey = <CLE_PRIVEE_CLIENT>
DNS = 10.0.0.1 # DNS via le serveur VPN
[Peer]
PublicKey = <CLE_PUBLIQUE_SERVEUR>
Endpoint = IP_PUBLIQUE_SERVEUR:51820
AllowedIPs = 0.0.0.0/0 # Full tunnel : tout passe par le VPN
# AllowedIPs = 192.168.1.0/24 # Split tunnel : seulement le réseau interne
PersistentKeepalive = 25
# Démarrer le client sudo wg-quick up wg0 # Vérifier la connexion sudo wg show ping 10.0.0.1 # Arrêter sudo wg-quick down wg0
4.2 Client Windows
1. Télécharger WireGuard pour Windows : https://www.wireguard.com/install/ 2. Installer et lancer l'application 3. Ajouter un tunnel > Créer depuis zéro 4. Coller la configuration client (même format que Linux) 5. Cliquer Activer L'application génère automatiquement une paire de clés. Copier la clé publique pour la renseigner côté serveur.
5. Vérification
# Sur le serveur — voir les pairs connectés sudo wg show # Résultat si client connecté : # peer: <CLE_PUBLIQUE_CLIENT> # endpoint: 1.2.3.4:45678 # allowed ips: 10.0.0.2/32 # latest handshake: 5 seconds ago # transfer: 128 KiB received, 64 KiB sent # Depuis le client — tester l'accès au réseau interne ping 10.0.0.1 # Serveur VPN ping 192.168.1.10 # Machine du réseau interne (si routage configuré)
- ☐ WireGuard installé sur serveur et client
- ☐ Clés générées (serveur + client)
- ☐ Configuration wg0.conf serveur correcte
- ☐ ip_forward activé
- ☐ Service wg-quick@wg0 actif
- ☐ wg show affiche le pair client
- ☐ Ping entre client et serveur VPN fonctionnel
Sur quel protocole de transport WireGuard fonctionne-t-il exclusivement ?
✅ Réponse : UDP
Que signifie AllowedIPs = 0.0.0.0/0 dans la config client WireGuard ?
✅ Réponse : Full tunnel — tout le trafic passe par le VPN
Quelle commande affiche l'état de WireGuard et les pairs connectés ?
✅ Réponse : wg show
Quel paramètre sysctl doit être activé pour que le serveur VPN route le trafic ?
✅ Réponse : net.ipv4.ip_forward
Quelle est la principale différence entre WireGuard et OpenVPN ?
✅ Réponse : WireGuard est plus simple, plus rapide et intégré au noyau Linux
Suis ta progressionConnecte-toi pour marquer les ressources comme terminées et retrouver ton avancement.
Se connecter