Aller au contenu

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
  1. GW-A : 10.99.0.1 ; GW-B : 10.99.0.2 ; un /30 contient 4 adresses dont 2 utilisables (les deux extrémités) ; port UDP 51820.
  2. 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 :

VBoxManage modifyvm GW-A --nic3 nat
VBoxManage modifyvm GW-B --nic3 nat

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 :

echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-routage.conf
sudo sysctl --system

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 :

ping -c 4 192.168.20.1
traceroute -n 192.168.20.1

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.conf avec 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 : ______________________