exercice

Routage OSPF à trois routeurs

par Éric Lalitte · version 1 · 04/11/2026 · 5 téléchargements

Trois routeurs FRR en triangle doivent s'échanger leurs routes en OSPF pour que le serveur web (lan1) et le serveur DNS (lan2) se joignent. Les vérifications sont faites depuis les routeurs et depuis une sonde cachée placée sur lan1.

Niveau
intermédiaire
Durée
60 min
Machines
r1 (routeur), r2 (routeur), r3 (routeur), web (serveur), dns (serveur) + 1 cachée
Segments
lan1, lan2, l12, l13, l23
Vérifications
5 (8 points)
Variantes par élève
lan1, lan2, domaine
Mots-clés
bind9dnsfrrnginxospfrouteurserveur
Nom du lab
ospf

Importer dans votre VM

Onglet Catalogue de l'interface web de la VM, ou en ligne de commande :

curl -o ospf.zip https://featherlab.lalitte.com/api/v1/labs/ospf/archive/
featherlab import ospf.zip

Ou téléchargez l'archive et faites « Importer un lab… » dans l'interface.

Énoncé

Lab ospf

Trois routeurs FRR en triangle (OSPF, zone 0), un serveur web et un serveur DNS sur deux réseaux.

        lan1 {{ lan1 }}              lan2 {{ lan2 }}
   web .10 ── r1 ──── l12 ──── r2 ── dns .53
                \               /
                l13           l23
                  \           /
                       r3
Machine Rôle Adresses
r1 routeur 10.0.12.1, 10.0.13.1, {{ lan1
r2 routeur 10.0.12.2, 10.0.23.2, {{ lan2
r3 routeur 10.0.13.3, 10.0.23.3 ; loopback 10.255.0.3
web nginx {{ lan1
dns bind9, zone {{ domaine }} {{ lan2

Lancer et détruire

featherlab up ospf      # environ 3 minutes
featherlab status ospf
featherlab down ospf

Ouvrir un shell sur une machine : incus exec --project lab-ospf r1 -- sh (routeurs Alpine) ou incus exec --project lab-ospf web -- bash (serveurs).

À essayer

Voisins et routes OSPF :

incus exec --project lab-ospf r1 -- vtysh -c "show ip ospf neighbor"
incus exec --project lab-ospf r3 -- vtysh -c "show ip route ospf"

Chemin et services, depuis le serveur web :

incus exec --project lab-ospf web -- traceroute -n {{ lan2 | hote(53) }}   # r1 → r2 → dns
incus exec --project lab-ospf web -- getent hosts www.{{ domaine }}
incus exec --project lab-ospf dns -- curl -s http://web.{{ domaine }}/

Panne d'un lien : couper l12 et regarder le trafic passer par r3.

incus exec --project lab-ospf r1 -- ip link set eth1 down
incus exec --project lab-ospf web -- traceroute -n {{ lan2 | hote(53) }}   # r1 → r3 → r2 → dns
incus exec --project lab-ospf r1 -- ip link set eth1 up

Les liens entre routeurs utilisent des timers OSPF courts (hello 1 s, dead 4 s) pour que les pannes se voient vite.

Exercice et vérifications

Le dossier contient un exercice.yaml : le lab sert d'exercice de référence (tout est déjà configuré, toutes les vérifications passent). Une machine cachée, sonde, est placée sur lan1 comme un poste client ; elle n'apparaît pas dans l'interface élève et sert à tester le DNS et le web depuis lan1.

featherlab verifier ospf          # score, une ligne par vérification
featherlab verifier -v ospf       # avec la sortie des vérifications échouées

Pour en faire un vrai exercice : retirer la configuration que l'élève doit produire (par exemple la ligne fichiers: de r3, ou web/index.html), décrire le travail attendu ici, et garder les vérifications.

Variantes par élève : exercice.yaml déclare trois variables (lan1, lan2, domaine). Dans une classe, chaque élève reçoit ses propres valeurs ; lab.yaml, ce README, les fichiers DNS et web et les vérifications sont des gabarits ({{ '{{ lan1 | hote(10) }}' }}, {{ '{{ domaine }}' }}). Déployé directement (featherlab up ospf), le lab prend les valeurs par défaut.

Limites

Les serveurs n'ont pas accès à Internet une fois déployés : leur eth0 est sur le réseau du lab. Pour ajouter un paquet, l'ajouter dans lab.yaml puis featherlab down ospf && featherlab up ospf.