TP – Relier deux agences avec un tunnel WireGuard
BTS SIO SISR 2e année – Bloc 2 – S10 – binôme : un tape, l'autre lit ; on échange les rôles à chaque partie
Note
But. Tu conçois le plan d'adressage de deux sites, tu montes un tunnel entre deux passerelles, tu testes la communication entre un poste de l'agence A et le réseau de l'agence B, puis tu prouves par capture que le trafic traverse Internet chiffré.
Durée : 2 h 35 (parties A à E), plus le bilan. Prérequis : cours S10 lu ; S06 (clonage, réseaux internes, routage) ; chiffrement vu en bloc 3 (ou rappel en séance).
Note
Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes, puis tu testes et tu notes ce que tu constates. Un bilan de compétences clôt la séance.
Binôme : ____________ / ____________
Le laboratoire
Trois VM Debian clonées du modèle de S06. Le réseau lab-wan joue le rôle d'Internet entre les deux agences.
| Machine | Carte 1 | Carte 2 |
|---|---|---|
| GW-A (passerelle agence A) | lab-wan : 203.0.113.1/24 |
lab-a : 192.168.10.1/24 |
| GW-B (passerelle agence B) | lab-wan : 203.0.113.2/24 |
lab-b : 192.168.20.1/24 |
| PC-A (poste agence A) | lab-a : 192.168.10.100/24, passerelle 192.168.10.1 |
Pour joindre l'« agence B », PC-A pingue l'adresse 192.168.20.1 de GW-B : elle n'est joignable que par le tunnel.
Note
Les adresses 203.0.113.0/24 sont réservées par la documentation (RFC 5737) : elles ne correspondent à aucune machine réelle sur Internet.
Partie A – Concevoir le plan d'adressage (≈ 25 min)
1. Complète le plan du tunnel :
| Élément | Valeur |
|---|---|
| Réseau du tunnel | 10.99.0.0/30 |
| Adresse de GW-A dans le tunnel | |
| Adresse de GW-B dans le tunnel | |
Nombre d'adresses utilisables dans un /30 |
|
| Port UDP du VPN |
2. Une troisième agence C souhaite rejoindre le VPN avec le réseau 192.168.10.0/24. Que réponds-tu ? Que proposes-tu ?
Éléments de réponse
- GW-A : 10.99.0.1 ; GW-B : 10.99.0.2 ; un
/30contient 4 adresses dont 2 utilisables (les deux extrémités) ; port UDP 51820. - Impossible en l'état : la plage chevauche celle de l'agence A, le routage serait ambigu. Il faut renuméroter l'agence C (par exemple 192.168.30.0/24) ou, à défaut, recourir à une traduction d'adresses, solution plus lourde et à éviter.
Partie B – Câbler et installer (≈ 25 min)
1. Sur l'hôte, configure les cartes (VM éteintes) :
VBoxManage modifyvm GW-A --nic1 intnet --intnet1 lab-wan --nic2 intnet --intnet2 lab-a
VBoxManage modifyvm GW-B --nic1 intnet --intnet1 lab-wan --nic2 intnet --intnet2 lab-b
VBoxManage modifyvm PC-A --nic1 intnet --intnet1 lab-a
2. Donne temporairement une carte NAT (carte 3) à GW-A et GW-B pour installer les paquets :
Dans chaque passerelle : sudo apt update && sudo apt -y install wireguard tcpdump. Puis retire la carte NAT (--nic3 none, VM éteinte).
3. Configure les adresses de chaque machine comme en S06 (relève les noms d'interface avec ip -br a) et active le routage sur GW-A et GW-B :
Point de contrôle : depuis GW-A, ping -c 2 203.0.113.2 répond (le « réseau Internet » du laboratoire fonctionne) ; depuis PC-A, ping -c 2 192.168.10.1 répond ; ping -c 2 192.168.20.1 ne répond pas (le tunnel n'existe pas encore).
J'anticipe. Pourquoi le dernier ping échoue-t-il à ce stade ? ______________________
Éléments de réponse
PC-A envoie le paquet à sa passerelle GW-A, qui n'a aucune route vers 192.168.20.0/24 et n'est pas connectée à ce réseau : le paquet est rejeté (« réseau inaccessible » ou perdu). Le tunnel créera cette route.
Partie C – Monter le tunnel (≈ 45 min)
1. Génère une paire de clés sur chaque passerelle (la clé privée ne quitte jamais sa machine) :
umask 077
wg genkey | sudo tee /etc/wireguard/prive.key | wg pubkey | sudo tee /etc/wireguard/public.key
sudo cat /etc/wireguard/public.key
Note la clé publique de chaque passerelle : ______________ (A) ______________ (B)
2. Crée /etc/wireguard/wg0.conf.
Sur GW-A (remplace les clés ; PRIVEE_A est le contenu de prive.key de GW-A, PUBLIQUE_B la clé publique de GW-B) :
[Interface]
Address = 10.99.0.1/30
ListenPort = 51820
PrivateKey = PRIVEE_A
[Peer]
PublicKey = PUBLIQUE_B
Endpoint = 203.0.113.2:51820
AllowedIPs = 10.99.0.2/32, 192.168.20.0/24
Sur GW-B (symétrique) :
[Interface]
Address = 10.99.0.2/30
ListenPort = 51820
PrivateKey = PRIVEE_B
[Peer]
PublicKey = PUBLIQUE_A
Endpoint = 203.0.113.1:51820
AllowedIPs = 10.99.0.1/32, 192.168.10.0/24
Protège le fichier et démarre :
sudo chmod 600 /etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
sudo wg show
ip route
J'anticipe. Après wg-quick up wg0 sur GW-A, quelle nouvelle route apparaît dans ip route ? Pourquoi ? ______________________
Éléments de réponse
Une route 192.168.20.0/24 dev wg0 (et 10.99.0.0/30 dev wg0) : wg-quick crée une route pour chaque réseau listé dans AllowedIPs. C'est ce qui envoie vers le tunnel les paquets à destination de l'agence B.
Je comprends. Quelle est la différence entre Endpoint et AllowedIPs ? ______________________
Éléments de réponse
Endpoint est l'adresse publique (et le port) où joindre le pair pour établir le tunnel. AllowedIPs liste les adresses à l'intérieur du tunnel qui sont acheminées vers ce pair (routage) et acceptées depuis lui (filtrage).
Point de contrôle : sudo wg show affiche le pair et, après un premier échange, une ligne latest handshake (« il y a quelques secondes »).
Partie D – Tester et prouver le chiffrement (≈ 35 min)
1. Depuis PC-A :
Aucune configuration de routage n'a été faite sur PC-A : il a GW-A pour passerelle, et GW-A l'envoie dans le tunnel.
| Test | Résultat |
|---|---|
ping 192.168.20.1 |
|
Sauts du traceroute |
|
latest handshake sur GW-A |
2. Preuve du chiffrement. Sur GW-A, ouvre deux terminaux de capture, puis relance un ping depuis PC-A :
# terminal 1 : sur l'interface WAN (adapte le nom)
sudo tcpdump -n -i enp0s3 -c 6
# terminal 2 : sur l'interface du tunnel
sudo tcpdump -n -i wg0 -c 6
| Interface | Ce que tu vois |
|---|---|
WAN (enp0s3) |
|
Tunnel (wg0) |
J'anticipe. Sur laquelle des deux interfaces verras-tu des paquets ICMP echo request lisibles ? Que verras-tu sur l'autre ? ______________________
Éléments de réponse
Sur wg0 : les paquets ICMP en clair (192.168.10.100 → 192.168.20.1), puisque c'est l'interface du tunnel, avant chiffrement. Sur le WAN : uniquement des paquets UDP entre 203.0.113.1 et 203.0.113.2 sur le port 51820, dont le contenu est illisible. Un espion sur Internet ne voit que ces paquets.
3. Mesure du coût. Compare la latence avec et sans tunnel :
ping -c 10 203.0.113.2 # depuis GW-A, sans tunnel
ping -c 10 10.99.0.2 # depuis GW-A, à travers le tunnel
Je comprends. Pourquoi le trajet par le tunnel est-il légèrement plus long ? ______________________
Éléments de réponse
Chaque paquet est chiffré, encapsulé dans un nouveau paquet UDP, puis déchiffré à l'arrivée : cela demande du temps de calcul et ajoute des octets d'en-tête (ce qui réduit aussi la taille utile maximale, le MTU, de l'interface du tunnel).
Partie E – Filtrer, panne et accès nomade (≈ 25 min)
1. Pare-feu. Écris (sans l'appliquer) les règles nftables minimales de GW-A : autoriser en entrée le trafic établi, SSH depuis le réseau local, et le port UDP 51820 venant de GW-B uniquement ; refuser le reste.
Éléments de réponse
Exemple (à adapter, interface WAN enp0s3) :
table inet filtre {
chain entree {
type filter hook input priority 0; policy drop;
ct state established,related accept
iif lo accept
ip saddr 192.168.10.0/24 tcp dport 22 accept
iifname "enp0s3" ip saddr 203.0.113.2 udp dport 51820 accept
iifname "wg0" icmp type echo-request accept
}
}
Le trafic traversant la passerelle (chaîne forward) doit aussi être filtré : un VPN ne dispense pas de décider qui peut joindre quoi.
2. Panne. Sur GW-B : sudo wg-quick down wg0. Relance un ping 192.168.20.1 depuis PC-A. Que constates-tu ? Comment un administrateur s'en apercevrait-il ? ______________________
Éléments de réponse
Le ping échoue : plus de tunnel, donc plus de route. Sur GW-A, wg show montre une poignée de main de plus en plus ancienne. À détecter par la supervision (S11) : un test de ping du côté distant, ou la date de dernière poignée de main. Relance avec sudo wg-quick up wg0.
3. Accès nomade. Un commercial doit accéder au réseau de l'agence A depuis son portable. Décris, sans le monter : ce qu'il faut créer sur le portable et sur GW-A, l'adresse à lui attribuer dans le tunnel (par exemple 10.99.0.10), les AllowedIPs côté portable pour n'acheminer que le réseau de l'agence, et un risque à traiter.
Éléments de réponse
Une paire de clés sur le portable et un nouveau bloc [Peer] sur GW-A (clé publique du portable, AllowedIPs = 10.99.0.10/32). Côté portable : Address = 10.99.0.10/32 et, pour le pair GW-A, AllowedIPs = 192.168.10.0/24, 10.99.0.1/32 (seul le trafic de l'agence passe par le VPN) ; Endpoint vers l'adresse publique de GW-A. Risques : portable perdu ou volé (révoquer sa clé sur GW-A), portable infecté qui apporte le problème dans le réseau (filtrage, postes à jour).
Pour aller plus loin
Tip
Le même tunnel en IPsec, dans le simulateur réseau. Télécharge TP-S10-ipsec-site-a-site.json et ouvre-le dans le simulateur avec Ouvrir. Deux routeurs Cisco relient deux agences : politique ISAKMP, clé pré-partagée, transform-set, crypto map, puis preuve par les compteurs de l'association de sécurité et par les trames ESP chiffrées de l'analyseur. Vérifier mon travail contrôle chaque point. Mode d'emploi : Utiliser les TP du simulateur. Le simulateur sert à comparer et à s'entraîner : il ne remplace pas le laboratoire réel pour une réalisation d'épreuve.
- Ajoute un troisième pair (agence C avec le réseau 192.168.30.0/24).
- Compare avec une configuration IPsec : réalise-la dans le simulateur réseau (voir l'encadré ci-dessous), puis compare par écrit avec WireGuard (nombre de paramètres, phases, lisibilité).
- Automatise le déploiement de
wg0.confavec Ansible (S08), en gardant la clé privée hors du dépôt (Ansible Vault).
Retour en entreprise (si ta situation le permet)
- Observer : l'entreprise a-t-elle des VPN (sites, nomades) ? Quelle technologie, quelle authentification, qui administre les accès ?
- Documenter : le plan d'adressage des sites reliés et la liste des utilisateurs nomades.
Rendu
Compte rendu PDF, nommé RENDU-B2A2-S10-NOM.pdf, contenant : le plan d'adressage, les wg0.conf sans les clés privées, la capture de wg show, le ping et le traceroute depuis PC-A, les deux captures tcpdump commentées (WAN et wg0), les réponses aux questions.
Bilan de la séance
Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise, ou Non évalué.
| Compétence du référentiel | Ce que j'ai fait dans cette séance | Niveau |
|---|---|---|
| B2.1 – Concevoir une solution d'infrastructure réseau | ||
| B2.2 – Installer, tester et déployer une solution d'infrastructure réseau | ||
| B3.4 – Garantir la disponibilité, l'intégrité et la confidentialité des services informatiques et des données |
Note
Les codes sont ceux du référentiel.
Je sais faire, sans aide :
- Distinguer VPN site à site et accès nomade ;
- Concevoir un plan d'adressage de sites reliés ;
- Monter un tunnel entre deux passerelles et le tester ;
- Prouver par capture que le trafic est chiffré ;
- Protéger les clés et filtrer le trafic ;
- Repérer qu'un tunnel est tombé.
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________