Comprendre les VPN, installer WireGuard sur Debian pour un accès sécurisé au réseau interne.
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é.
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 |
| 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 |
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
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
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.
# 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é)
✅ Réponse : UDP
✅ Réponse : Full tunnel — tout le trafic passe par le VPN
✅ Réponse : wg show
✅ Réponse : net.ipv4.ip_forward
✅ Réponse : WireGuard est plus simple, plus rapide et intégré au noyau Linux