Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Chercher un nom, étape par étape (DNS)

Après cette leçon: Je peux chercher un nom avec dig et dire quel enregistrement a répondu.

Leçon de 55 min11 commandesLab DHCP et DNS : configurer dnsmasq pour un petit réseau dans le navigateur

La page qui s'ouvrait pour une seule personne

Un technicien du support reçoit un appel. La page web de la boutique s'ouvre sur un portable et pas sur un autre. Les deux sont sur le même réseau.

La cause est une vieille ligne dans un petit fichier du second portable. Elle répond pour le nom avant que personne n'interroge le réseau.

Cette leçon montre où une machine cherche, et comment lire ce qui revient.

À la fin de cette leçon

Remarque

Je peux chercher un nom avec dig et dire quel enregistrement a répondu.

Mots clés

MotCe que ça veut direExemple
Résolveurla partie d'une machine qui cherche les noms
Fichier hostsune courte liste de noms et d'adresses sur la machine elle-même/etc/hosts
CNAMEun enregistrement qui dit que ce nom est un autre nom
TTLle nombre de secondes pendant lesquelles une réponse peut être gardée300
NXDOMAINla réponse qui dit que ce nom n'existe pas
Zoneles noms dont un serveur DNS a la chargeboutique.test

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Une machine cherche à deux endroits

Avant d'interroger le réseau, une machine lit son fichier hosts. Si le nom y est, cette réponse l'emporte. Ensuite seulement le résolveur interroge un serveur DNS.

Un fichier /etc/nsswitch.conf fixe l'ordre. Le mot files désigne le fichier hosts, et dns le serveur.

Lire l'ordre que la machine suit

Commande
grep '^hosts' /etc/nsswitch.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Chercher un nom comme le font les programmes

Commande
getent hosts localhost

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Un serveur DNS répond avec des enregistrements

Un serveur DNS détient une zone, les noms dont il a la charge. Chaque nom a des enregistrements, et chaque réponse porte un TTL : un résolveur peut la garder aussi longtemps.

Ici vous lancez un petit serveur à vous pour une boutique inventée. Il écoute sur le port 5300, sur cette machine seulement, et détient une zone, boutique.test.

Lancer un serveur d'essai pour la boutique

Commande
sudo dnsmasq --conf-file= --no-hosts --no-resolv --port=5300 --listen-address=127.0.0.1 --bind-interfaces --local-ttl=300 --local=/boutique.test/ --host-record=boutique.test,10.20.30.40 --host-record=courrier.boutique.test,10.20.30.50 --cname=www.boutique.test,boutique.test --mx-host=boutique.test,courrier.boutique.test,10 --txt-record=boutique.test,v=demo

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple : interroger avec dig

Vous tapezIl demandeIl affiche
dig +short @127.0.0.1 -p 5300 boutique.testL'enregistrement A10.20.30.40
dig +noall +answer ... www.boutique.testLe nom et ses enregistrementsUne ligne CNAME, puis la ligne A
dig +short ... boutique.test MXQui reçoit le courrier10 courrier.boutique.test.
dig +short ... -x 10.20.30.40Quel nom porte cette adresseboutique.test.

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Demander l'adresse de la boutique

Commande
dig +short @127.0.0.1 -p 5300 boutique.test

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Suivre la chaîne depuis le nom www

Commande
dig +noall +answer @127.0.0.1 -p 5300 www.boutique.test

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demander qui reçoit le courrier

Commande
dig +short @127.0.0.1 -p 5300 boutique.test MX

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demander quel nom porte une adresse

Commande
dig +short @127.0.0.1 -p 5300 -x 10.20.30.40

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le statut dit ce qui a mal tourné

Chaque réponse a un statut. NOERROR veut dire que le serveur a répondu. NXDOMAIN veut dire que le nom n'existe pas dans une zone que le serveur détient.

REFUSED veut dire que le serveur ne répondra pas du tout pour ce nom. Votre serveur d'essai ne détient que boutique.test et n'a personne d'autre à interroger.

Demander un nom absent de la zone

Commande
dig @127.0.0.1 -p 5300 rien.boutique.test | grep status

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demander un nom d'une autre zone

Commande
dig @127.0.0.1 -p 5300 boutique.invalid | grep status

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

On croit souvent que dig et ping cherchent un nom de la même façon. Ce n'est pas le cas. dig interroge un serveur DNS et rien d'autre. La plupart des programmes, ping compris, lisent d'abord le fichier hosts. Un nom peut marcher dans un navigateur et ne rien montrer avec dig.

Voir les deux façons en désaccord

Commande
dig +short @127.0.0.1 -p 5300 localhost

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une vraie recherche descend étiquette par étiquette

Sur Internet, aucun serveur ne connaît tous les noms. Un résolveur interroge la racine, puis le serveur de la terminaison, puis celui de l'entreprise.

Le labo n'a pas d'Internet : ce tableau est lu et pas exécuté. Il montre les questions pour www.boutique.exemple.

Exemple : chercher www.boutique.exemple

ÉtapeLe résolveur interrogeLa réponse
1Un serveur racineInterrogez les serveurs de la terminaison .exemple
2Un serveur de .exempleInterrogez les serveurs de boutique.exemple
3Un serveur de boutique.exemplewww vaut 203.0.113.20, gardé 300 secondes
4Personne, pendant 300 secondesLe résolveur répond depuis sa mémoire

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Arrêter le serveur d'essai

Commande
sudo pkill -f '[-]-port=5300'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour aller plus loin : l'en-tête de dig

Lancez de nouveau dig @127.0.0.1 -p 5300 boutique.test, serveur d'essai démarré, et lisez tout l'en-tête.

Trouvez la ligne des drapeaux et les nombres de questions et de réponses. Demandez ensuite rien.boutique.test et comparez les nombres. Lequel a changé ?