Lab DHCP et DNS : configurer dnsmasq pour un petit réseau dans le navigateur

Ce lab donne à chaque élève un petit réseau dans sa propre VM Ubuntu : un serveur et deux ordinateurs, pc1 et pc2, qui démarrent sans aucune adresse. Le serveur exécute dnsmasq sans rien de configuré, et l’élève écrit le seul fichier qui lui fait distribuer des adresses et répondre aux noms du lab. Rien n’est installé sur l’ordinateur de l’élève, et un script note le résultat : vous n’avez pas à lire chaque machine.

Ce que les élèves apprennent

Comment un ordinateur obtient une adresse et trouve un nom. DHCP : une plage où attribuer des baux, la durée d’un bail, le routeur et le serveur DNS que le serveur indique à chaque client, et une adresse fixe pour un ordinateur choisi d’après son adresse matérielle (MAC). DNS : répondre à un nom à partir d’un enregistrement de la configuration du serveur, et refuser tous les autres noms, le serveur n’ayant nulle part où les transmettre. Ils voient aussi les vrais outils : dnsmasq sur le serveur, dhclient et dig sur les clients, ip pour lire le résultat et tcpdump pour observer la conversation.

Le réseau et la tâche

Le serveur est en 10.0.10.1 et pc1 et pc2 sont sur le même commutateur, chacun avec une adresse matérielle fixe que donne le README. L’élève écrit /etc/dnsmasq.d/lab.conf pour que le serveur attribue des adresses d’une plage donnée pendant douze heures, indique aux clients un routeur et un serveur DNS donnés, donne toujours à pc2 une adresse donnée, réponde à files.lab et printer.lab avec des adresses données et ne réponde à rien d’autre. Le README indique chaque valeur et ne donne ni noms d’options ni lignes de configuration.

Le lancer dans votre navigateur

Les labs VM se donnent comme une tâche de lab dans un module, et l’exemple est sur la page du lab. La machine est petite : un processeur, 1 Go de mémoire et 10 Go de disque.

  1. Ajouter le lab. Dans un module que vous enseignez, ajoutez une tâche et choisissez la carte « Lab VM Ubuntu ». La page affiche une courte description de la machine au lieu d’un fichier compose.
  2. Partir de l’exemple. La page propose des labs prêts à l’emploi pour commencer. Choisissez DHCP and DNS with dnsmasq. Utiliser un exemple remplace le texte, et « Annuler » rétablit le vôtre.
  3. Publier et démarrer votre propre copie. Publiez, puis « Démarrer ». Le script d’installation du lab installe dnsmasq, le client DHCP, dig et tcpdump à partir de l’archive d’Ubuntu et construit les trois machines au premier démarrage de la VM, en quelques secondes.
  4. Ouvrir le terminal. Ouvrez son terminal et lisez README.md dans le dossier personnel : il indique ce que le serveur doit faire et ne donne aucune réponse.

Une leçon de base sur ce lab

DHCP and DNS Basics est une petite leçon qui se fait dans ce lab, une VM Ubuntu : chaque étape est expliquée et a un bouton Exécuter qui tape sa commande dans le terminal de la machine et montre ce qu’elle a affiché. L’élève découvre les trois machines et voit que les clients n’ont pas d’adresse, demande une adresse à pc1 sans rien obtenir, demande un nom au serveur qui refuse, et lit le fichier de configuration, qui est vide.

La leçon se limite à regarder autour et laisse à l’élève la tâche propre au lab, écrire la configuration : elle ne donne donc aucune réponse. Elle est volontairement petite : elle montre à un enseignant ce qu’est une leçon qui se fait dans un lab, et le lab fait le reste. Copiez-la dans un module à vous pour la modifier.

Comment il est noté

Le lab a une vérification. Elle s’exécute sur une copie de la machine enregistrée après un démarrage à neuf : elle ne voit donc que ce que l’élève a enregistré. Elle arrête le dnsmasq en cours, en lance un à partir des fichiers enregistrés dans /etc/dnsmasq.d, efface les deux clients et leur fait redemander une adresse avec le vrai client DHCP. Puis elle lit le résultat : chaque client a une adresse dans la plage, le routeur, le serveur DNS et le bail de douze heures demandés, pc2 a son adresse fixe, et les deux noms se résolvent vers les bonnes adresses alors que les autres noms sont refusés ou introuvables. Des adresses saisies à la main sur les clients, un joker qui répond à tous les noms, des noms mis dans /etc/hosts et un dnsmasq lancé à la main avec un fichier jamais enregistré ne réussissent pas, et la première ligne de ce que la vérification a affiché dit quelle partie et pourquoi.

  1. Le distribuer. Attribuez le lab comme n’importe quelle tâche, avec une échéance si vous le souhaitez. Chaque élève reçoit sa propre VM, conservée d’une session à l’autre.
  2. Lancer la vérification. Sur la ligne d’un élève dans la liste de la classe, appuyez sur « Lancer la vérification ». Elle démarre une copie de sa machine enregistrée, sans rien enregistrer en retour, exécute le script de vérification du lab en root et indique s’il a réussi, ce qu’il a affiché et quand. L’élève n’est pas informé du résultat.
  3. Noter. Lisez la première ligne de ce que la vérification a affiché : elle nomme la première chose qui n’est pas correcte et dit pourquoi. Renvoyez le travail avec un motif s’il demande un complément.

La définition sur GitHub

Le fichier est la définition complète du lab, le texte même que la plateforme exécute : taille, script d’installation, README et vérification. Copiez-le et changez les adresses et les noms, dans l’installation et la vérification à la fois, pour faire le vôtre.

Questions fréquentes

Le lab a-t-il besoin d’un second serveur DHCP ou d’un vrai routeur ?
Non. Le serveur et les clients sont des espaces de noms réseau reliés par un commutateur virtuel dans la VM de l’élève, et le routeur indiqué aux clients n’est qu’une adresse du bail. Il n’y a aucun autre serveur DHCP en concurrence.
Peut-on chercher un nom extérieur au lab ?
Non. La VM n’atteint que l’archive d’Ubuntu, PyPI, npm et GitHub, et le serveur DNS du lab n’a nulle part où transmettre un nom : le lab demande donc que tout nom autre que les deux siens soit refusé ou introuvable.
Que vérifie le lab DHCP et DNS ?
La vérification démarre dnsmasq à partir des fichiers enregistrés, fait redemander une adresse aux deux clients et lit le résultat. Chaque client doit avoir une adresse dans la plage, le routeur, le serveur DNS et le bail de douze heures, pc2 doit avoir son adresse fixe, et les deux noms du lab doivent être résolus alors que les autres noms sont refusés.