Aller au contenu

Installer et paramétrer une solution VPN Wireguard Hôte et Client

1. Objectif du cours

Mettre en place et tester un VPN WireGuard entre une machine hôte (Ubuntu) et une machine client (Windows 10) : installation, génération de clés, configuration des fichiers, création du tunnel et vérifications de fonctionnement.

2. Notions et définitions essentielles

  • Interface WireGuard (wg0/TunnelLocal) : interface réseau virtuelle utilisée pour le VPN.
  • Clé privée / clé publique : paire cryptographique utilisée pour chiffrer/déchiffrer les communications.
  • Peer : section de configuration listant un pair (client ou serveur) avec sa PublicKey et AllowedIPs.
  • AllowedIPs : plages d'adresses autorisées pour un pair (peut être une IP/32 pour un client).
  • Endpoint : adresse publique du serveur + port (ex. IP:51820) pour joindre le serveur via Internet.
  • PostUp/PostDown : commandes appliquées à l'activation/désactivation de l'interface (iptables pour NAT/forwarding).

3. Fonctionnement et principes

  • Flow général : générer clés (serveur et client) → renseigner les interfaces VPN (adresses 10.0.20.x/24 dans l'exemple) → ajouter les sections [Peer] avec PublicKey et AllowedIPs réciproques → activer l'interface pour établir le tunnel chiffré.
  • Le tunnel chiffre les paquets entre pairs grâce aux clés publiques/privées échangées dans la configuration.
  • Pour joindre un serveur depuis Internet, il faut que la box/routeur redirige le port UDP 51820 vers la machine hôte, et que le serveur applique NAT/forwarding si nécessaire (PostUp/PostDown avec iptables).
  • Plusieurs clients peuvent être ajoutés dans le fichier serveur en répétant la section [Peer] pour chaque client.

4. Commandes et manipulations

Regroupées par procédure — uniquement commandes présentes dans le PDF, rôle résumé :

  • Préparation système (Ubuntu) :
  • sudo -i (passer root) — obtenir un shell administrateur.
  • apt-get install net-tools — installer outils réseau.
  • apt-get update ; apt-get upgrade — mettre à jour le système.

  • Accès distant :

  • apt-get install ssh — installer SSH.
  • ssh utilisateur@IP — se connecter depuis PowerShell/Putty (ex. ssh ins@192.168.1.193).

  • Installation WireGuard :

  • apt install wireguard — installer le package WireGuard.

  • Génération des clés (serveur) :

  • mkdir wgkeys ; cd wgkeys — créer répertoire.
  • wg genkey > server_private.key — générer clé privée serveur.
  • wg pubkey > server_public.key < server_private.key — générer clé publique depuis la privée.
  • cat server_public.key — afficher la clé publique.

  • Activation et vérifications d'interface :

  • nano /etc/wireguard/wg0.conf — éditer le fichier de config.
  • wg-quick up wg0 — activer l'interface wg0.
  • wg — afficher l'état WireGuard.
  • ifconfig (Ubuntu) / ipconfig (Windows) — vérifier la création des interfaces (wg0, TunnelLocal).

  • Configuration NAT/forwarding (dans [Interface] du serveur) :

  • PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
  • PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o enp0s3 -j MASQUERADE

  • Windows client :

  • Installer le logiciel WireGuard depuis le site officiel, puis "Ajouter un tunnel vide" et renseigner [Interface] (PrivateKey auto-générée par le logiciel) et Address (ex. 10.0.20.20/24).

5. Sécurité et bonnes pratiques

  • Générer des clés privées/publiques pour chaque pair et les renseigner correctement (clé privée locale, clé publique du pair dans [Peer]).
  • Mettre à jour le système avant installation (apt-get update/upgrade).
  • Protéger l'accès SSH (utiliser mots de passe sûrs) pour les opérations à distance.
  • Sur serveur exposé à Internet, appliquer NAT/forwarding uniquement si nécessaire et restreindre protocoles/ports (rediriger UDP 51820 sur la box).
  • Vérifier les règles iptables (PostUp/PostDown) pour éviter d'exposer involontairement le réseau.

6. Points essentiels à retenir pour le TSSR

  1. Toujours générer les clés (wg genkey / wg pubkey) avant d'éditer la config, la clé privée doit figurer dans [Interface].
  2. Les adresses VPN diffèrent des adresses LAN : exemples du cours = serveur 10.0.20.10/24, client 10.0.20.20/24.
  3. AllowedIPs définit les adresses autorisées pour chaque peer (ex. 192.168.1.174/32 pour un client).
  4. WireGuard utilise par défaut UDP port 51820 ; la redirection de ce port sur la box est nécessaire pour accès Internet.
  5. Le fichier du serveur peut contenir plusieurs sections [Peer] pour ajouter plusieurs clients.
  6. Pour permettre le routage NAT vers Internet depuis le VPN, ajouter PostUp/PostDown avec iptables (MASQUERADE sur interface externe).
  7. Tester par ping sur IPs VPN et/ou requête HTTP vers un service (ex. Apache sur 10.0.20.10) depuis le client.
  8. WireGuard est multiplateforme (ex. Windows, Linux, mobiles) ; le client Windows peut générer automatiquement ses clés.
  9. Utiliser les commandes wg et ifconfig/ipconfig pour vérifier l'état et la présence des interfaces virtuelles.
  10. Pour configurer sur Windows : "Ajouter un tunnel vide" puis remplir [Interface] et [Peer].

7. Tableau récapitulatif

Élément Rôle / exemple Valeur / protocole
Interface serveur Adresse VPN 10.0.20.10/24
Interface client Adresse VPN 10.0.20.20/24
Port par défaut Protocole utilisé UDP 51820
Section [Peer] Contient PublicKey + AllowedIPs AllowedIPs ex. 192.168.1.174/32
NAT/forwarding PostUp/PostDown avec iptables MASQUERADE sur enp0s3

8. Vérifications pratiques

  • Exécuter wg pour voir l'état de l'interface WireGuard et les peers.
  • Vérifier via ifconfig (Ubuntu) ou ipconfig (Windows) que l'interface wg0 / TunnelLocal existe et porte l'adresse VPN configurée.
  • Depuis le client, pinguer l'adresse VPN du serveur (10.0.20.10) pour tester la connectivité.
  • Installer apache2 sur le serveur et, depuis le client, ouvrir http://10.0.20.10 pour vérifier l'accès HTTP via le VPN.
  • Vérifier dans l'interface GUI WireGuard (Windows) l'établissement de la liaison.
  • Confirmer l'IP publique de la box via whatismyip.host avant d'ajouter l'Endpoint dans la config et avant redirection de ports.

9. Flashcards Anki

Quel port UDP utilise WireGuard par défaut ? :: 51820 Quelle commande génère une clé privée serveur ? :: wg genkey > server_private.key Comment générer la clé publique à partir de la clé privée ? :: wg pubkey > server_public.key < server_private.key Quelle commande active l'interface wg0 ? :: wg-quick up wg0 Quelle commande affiche l'état WireGuard et les peers ? :: wg Quelle adresse VPN est donnée en exemple pour le serveur ? :: 10.0.20.10/24 Quelle adresse VPN est donnée en exemple pour le client Windows ? :: 10.0.20.20/24 Quelle option du fichier serveur liste les adresses autorisées pour un client ? :: AllowedIPs Quelle URL est indiquée pour connaître l'adresse IP publique de la box ? :: whatismyip.host Quelle application installer sur la machine hôte pour tester l'accès HTTP via le VPN ? :: apache2