Votre connexion Internet fonctionne mais impossible d'accéder à un site web ? Le problème vient probablement du DNS (Domain Name System). Le DNS est l'annuaire d'Internet : il traduit les noms de domaine lisibles (github.com) en adresses IP (140.82.121.4). Ce module vous apprend comment fonctionne le DNS et comment diagnostiquer ses problèmes, une compétence quotidienne en administration système.
TL;DR, L'essentiel en 30 secondes
Section intitulée « TL;DR, L'essentiel en 30 secondes »- Le DNS traduit les noms en IP :
github.com→140.82.121.4 dig +short domaine: obtenir l'IP d'un domaine- NXDOMAIN = domaine inexistant, SERVFAIL = problème serveur DNS
resolvectl status: voir quel DNS votre système utilise réellement
Je sais que c'est bon si...
Section intitulée « Je sais que c'est bon si... »-
dig +short google.comretourne une IP -
dig @8.8.8.8 mon-domaine.comfonctionne (test avec DNS externe) - Je sais interpréter NOERROR, NXDOMAIN et SERVFAIL
Commandes minimales à retenir
Section intitulée « Commandes minimales à retenir »# 1. Résoudre un nomdig +short github.com
# 2. Voir le DNS utiliséresolvectl status | head -20
# 3. Tester avec un DNS externedig @8.8.8.8 github.com +shortPrérequis
Section intitulée « Prérequis »- Module 3 complété : vous savez ce qu'est une adresse IP et un masque
- Module 5 complété : vous comprenez TCP/UDP et savez tester un port avec netcat
- Une machine Linux connectée à Internet
- Un terminal ouvert
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Pourquoi le DNS existe : l'annuaire qui traduit les noms en IP
- Comment fonctionne la résolution : resolver → root → TLD → autoritaire
- Les types d'enregistrements : A, AAAA, CNAME, MX, TXT
- Les commandes de diagnostic :
nslookupetdig - Les erreurs courantes : NXDOMAIN, SERVFAIL, timeout
- Cas pratiques : vérifier un domaine avant déploiement
Pourquoi le DNS existe-t-il ?
Section intitulée « Pourquoi le DNS existe-t-il ? »Imaginez devoir retenir 140.82.121.4 au lieu de github.com, ou 142.250.179.110 pour google.com. Impossible à l'échelle d'Internet avec ses milliards de sites.
Le DNS résout ce problème en créant un système de traduction distribué et hiérarchique. Pensez-y comme l'annuaire téléphonique mondial : vous cherchez un nom, vous obtenez un numéro.
Ce que le DNS fait concrètement
Section intitulée « Ce que le DNS fait concrètement »Quand vous tapez github.com dans votre navigateur :
- Votre système demande l'IP correspondante
- Le DNS répond
140.82.121.4 - Votre navigateur se connecte à cette IP
Cette traduction prend de quelques ms (réponse en cache) à parfois plus de 100 ms selon la distance au resolver, les retries, la validation DNSSEC ou le fallback TCP.
Comment fonctionne la résolution DNS ?
Section intitulée « Comment fonctionne la résolution DNS ? »Le DNS n'est pas un serveur unique mais une hiérarchie de serveurs spécialisés. Quand votre machine cherche une adresse, elle interroge plusieurs niveaux.
Les acteurs de la résolution
Section intitulée « Les acteurs de la résolution »-
Votre PC envoie une requête au resolver configuré
-
Le Resolver (ex: 8.8.8.8 de Google) fait le travail :
- Il consulte d'abord son cache
- Sinon, il interroge la hiérarchie DNS
-
Le serveur Root répond : "Pour
.com, demande à ce serveur TLD" -
Le serveur TLD (Top-Level Domain) répond : "Pour
github.com, demande à ce serveur autoritaire" -
Le serveur Autoritaire (les NS du domaine) donne la réponse finale
Pour connaître les serveurs autoritaires actuels d'un domaine :
Fenêtre de terminal dig NS github.com +short
Qui résout quoi ? Stub, récursif, autoritaire
Section intitulée « Qui résout quoi ? Stub, récursif, autoritaire »En production, comprendre qui fait quoi évite 80% des confusions :
| Acteur | Rôle | Exemple |
|---|---|---|
| Stub resolver | Envoie les requêtes à un récursif, ne fait aucune résolution lui-même | 127.0.0.53 (systemd-resolved), libc |
| Résolveur récursif | Interroge la hiérarchie DNS et met en cache | 8.8.8.8, 1.1.1.1, Unbound interne |
| Serveur autoritaire | Détient les enregistrements officiels d'une zone | ns1.example.com |
Le fichier /etc/resolv.conf
Section intitulée « Le fichier /etc/resolv.conf »Sur Linux, ce fichier configure les serveurs DNS utilisés par votre système :
cat /etc/resolv.confSortie typique :
nameserver 8.8.8.8nameserver 8.8.4.4search home.lanSignification :
| Directive | Rôle |
|---|---|
nameserver | Serveur DNS à interroger (jusqu'à 3) |
search | Domaine ajouté automatiquement aux noms courts |
Les types d'enregistrements DNS
Section intitulée « Les types d'enregistrements DNS »Le DNS ne stocke pas que des adresses IP. Il existe plusieurs types d'enregistrements selon l'information recherchée.
Les enregistrements essentiels
Section intitulée « Les enregistrements essentiels »| Type | Nom complet | Usage | Exemple |
|---|---|---|---|
| A | Address | Nom → IPv4 | github.com → 140.82.121.4 |
| AAAA | Quad-A | Nom → IPv6 | google.com → 2607:f8b0:4004::8a |
| CNAME | Canonical Name | Alias vers un autre nom | www.github.com → github.com |
| MX | Mail Exchange | Serveur mail du domaine | gmail.com → alt1.gmail-smtp-in.l.google.com |
| NS | Name Server | Serveurs DNS du domaine | github.com → ns1.p16.dynect.net |
| TXT | Text | Métadonnées diverses | SPF, DKIM, validation Let's Encrypt |
Diagnostiquer le DNS avec les commandes
Section intitulée « Diagnostiquer le DNS avec les commandes »Deux outils sont indispensables pour le diagnostic DNS : nslookup (simple) et dig (complet).
nslookup, Requêtes simples
Section intitulée « nslookup, Requêtes simples »nslookup permet des requêtes rapides et fonctionne sur Linux, macOS et Windows.
Syntaxe de base :
nslookup github.comSortie :
Server: 127.0.0.53Address: 127.0.0.53#53
Non-authoritative answer:Name: github.comAddress: 140.82.121.4Interroger un serveur DNS spécifique :
nslookup github.com 8.8.8.8Chercher un type d'enregistrement particulier :
nslookup -type=MX google.comgetent hosts, Ce que l'application voit vraiment
Section intitulée « getent hosts, Ce que l'application voit vraiment »dig interroge uniquement le DNS. Mais votre application peut résoudre via /etc/hosts, mDNS, ou NSS. Pour voir ce que le système retournera vraiment :
# Résolution système complète (hosts + DNS)getent hosts github.com
# IPv4 uniquementgetent ahostsv4 github.com
# IPv6 uniquementgetent ahostsv6 github.comdig, Requêtes avancées
Section intitulée « dig, Requêtes avancées »dig (Domain Information Groper) est l'outil de référence sous Linux. Il offre beaucoup plus de détails que nslookup.
dig github.comSortie :
; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> github.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; ANSWER SECTION:github.com. 60 IN A 140.82.121.4
;; Query time: 23 msec;; SERVER: 127.0.0.53#53(127.0.0.53);; WHEN: Thu Jan 23 10:30:00 CET 2025;; MSG SIZE rcvd: 55dig @8.8.8.8 github.comLa notation @8.8.8.8 force l'interrogation du DNS Google, utile pour comparer avec votre DNS local.
dig google.com MXSortie (extrait ANSWER SECTION) :
;; ANSWER SECTION:google.com. 300 IN MX 10 smtp.google.com.google.com. 300 IN MX 20 smtp2.google.com.Le nombre avant le serveur (10, 20) indique la priorité : plus petit = préféré.
dig +short github.comSortie :
140.82.121.4Idéal pour les scripts où vous voulez juste l'adresse IP.
Lire une réponse dig en détail
Section intitulée « Lire une réponse dig en détail »Voici comment interpréter les sections d'une réponse dig :
| Section | Contenu |
|---|---|
| HEADER | Status (NOERROR, NXDOMAIN, etc.) et compteurs |
| QUESTION | Ce qui a été demandé |
| ANSWER | La réponse (ex: l'IP) |
| AUTHORITY | Serveurs DNS faisant autorité |
| ADDITIONAL | Infos supplémentaires |
| Query time | Temps de réponse en ms |
| SERVER | Le serveur DNS interrogé |
Tracer la résolution complète
Section intitulée « Tracer la résolution complète »Pour simuler une résolution itérative depuis les root servers :
dig +trace github.comFlags dig essentiels en incident
Section intitulée « Flags dig essentiels en incident »Ces options sont précieuses lors d'un diagnostic :
# Timeout court pour tests rapidesdig example.com +time=1 +tries=1
# Forcer TCP (si UDP bloqué ou réponse tronquée)dig example.com +tcp
# Voir les infos DNSSECdig example.com +dnssec
# Combiner : test rapide via DNS Googledig @8.8.8.8 example.com +short +time=2Problèmes DNS courants et solutions
Section intitulée « Problèmes DNS courants et solutions »Les erreurs que vous rencontrerez
Section intitulée « Les erreurs que vous rencontrerez »| Erreur | Signification | Cause probable |
|---|---|---|
| NXDOMAIN | Domaine inexistant | Faute de frappe, domaine expiré, jamais enregistré |
| NODATA | Nom existe mais pas ce type | Demander AAAA alors que seul A existe |
| SERVFAIL | Échec du serveur | Voir encart ci-dessous |
| REFUSED | Requête refusée | Le serveur n'accepte pas vos requêtes (ACL) |
| Timeout | Pas de réponse | Problème réseau, firewall, serveur down |
Diagnostic pas à pas
Section intitulée « Diagnostic pas à pas »-
Vérifier la connectivité de base
Fenêtre de terminal ping 8.8.8.8Si ça échoue, le problème est réseau, pas DNS.
-
Tester avec un DNS public
Fenêtre de terminal dig @8.8.8.8 github.comSi ça fonctionne, votre DNS local est le problème.
-
Vérifier votre configuration DNS
Fenêtre de terminal cat /etc/resolv.confresolvectl status # sur systemd -
Vider le cache DNS local
Fenêtre de terminal # Sur systemd-resolvedsudo resolvectl flush-caches# Vérifier que le cache est vidéresolvectl statistics
La chaîne de caches
Section intitulée « La chaîne de caches »Quand "je vide le cache" ne suffit pas, c'est souvent parce que plusieurs niveaux cachent les réponses :
| Niveau | Cache | Comment vider |
|---|---|---|
| Navigateur | Cache interne (Chrome, Firefox) | Fermer/rouvrir, ou chrome://net-internals/#dns |
| OS / systemd-resolved | Cache local | sudo resolvectl flush-caches |
| Résolveur récursif | Cache partagé (ISP, entreprise) | Impossible côté client |
| CDN / Load balancer | Cache applicatif | Dépend de la plateforme |
Problèmes liés au cache
Section intitulée « Problèmes liés au cache »Le cache DNS peut causer des comportements inattendus :
# Voir les statistiques de cache (systemd)resolvectl statistics
# Vider le cachesudo resolvectl flush-caches
# Sur macOSsudo dscacheutil -flushcache && sudo killall -HUP mDNSResponderDNS et transport : UDP, TCP, EDNS0
Section intitulée « DNS et transport : UDP, TCP, EDNS0 »Par défaut, le DNS utilise UDP port 53 pour sa rapidité. Mais certaines situations nécessitent TCP :
Quand DNS bascule en TCP
Section intitulée « Quand DNS bascule en TCP »| Situation | Mécanisme |
|---|---|
| Réponse > 512 octets (sans EDNS0) | Le serveur met TC=1 (truncated), le client retry en TCP |
| Réponse > taille EDNS0 | Même mécanisme avec le buffer EDNS0 annoncé |
| Transfert de zone (AXFR) | Toujours TCP |
| Politique serveur | Certains serveurs forcent TCP |
Pannes "bizarres" liées au transport
Section intitulée « Pannes "bizarres" liées au transport »Si un domaine fonctionne parfois mais pas toujours :
# Tester en forçant TCPdig example.com +tcp
# Si TCP fonctionne mais UDP non → problème firewall/MTUSécurité DNS : DNSSEC, DoT, DoH
Section intitulée « Sécurité DNS : DNSSEC, DoT, DoH »Sans alourdir ce module, voici les concepts de sécurité DNS à connaître :
DNSSEC, Intégrité des réponses
Section intitulée « DNSSEC, Intégrité des réponses »DNSSEC (RFC 4033) permet de vérifier l'authenticité des réponses DNS via des signatures cryptographiques. Il protège contre le cache poisoning mais ne chiffre pas les requêtes.
# Voir si un domaine est signé DNSSECdig example.com +dnssec
# Vérifier la chaîne de confiancedig example.com +sigchase +trusted-key=/etc/trusted-key.keyDoT et DoH, Confidentialité des requêtes
Section intitulée « DoT et DoH, Confidentialité des requêtes »| Protocole | Port | Description |
|---|---|---|
| DoT (DNS over TLS) | 853 | Chiffrement TLS, RFC 7858 |
| DoH (DNS over HTTPS) | 443 | DNS dans HTTPS, RFC 8484 |
Ces protocoles chiffrent les échanges entre vous et le résolveur (pas au-delà). Ils empêchent l'espionnage de vos requêtes DNS par votre ISP ou un attaquant réseau.
Cas pratique dans un contexte d'administration
Section intitulée « Cas pratique dans un contexte d'administration »Vérifier qu'un site est accessible via DNS
Section intitulée « Vérifier qu'un site est accessible via DNS »Avant de signaler une panne, vérifiez que le DNS fonctionne :
# Le domaine est-il résolu ?dig +short production.company.com
# La réponse vient-elle du bon serveur ?dig @ns1.company.com production.company.com
# Comparer avec un DNS publicdig @8.8.8.8 production.company.comValider une configuration de domaine
Section intitulée « Valider une configuration de domaine »Lors d'un déploiement, vérifiez les enregistrements critiques :
# Record A (site principal)dig +short example.com A
# Record CNAME (sous-domaines)dig +short www.example.com CNAME
# Records MX (mail)dig example.com MX +short
# Records TXT (SPF, validation)dig example.com TXT +shortSurveiller le TTL avant une migration
Section intitulée « Surveiller le TTL avant une migration »# Voir le TTL actueldig example.com | grep -A1 "ANSWER SECTION"
# Résultat : example.com. 300 IN A 1.2.3.4# ↑ 300 secondes = 5 minutes de cacheTravaux pratiques
Section intitulée « Travaux pratiques »TP 1 : Exploration DNS de services réels
Section intitulée « TP 1 : Exploration DNS de services réels »-
Résolvez l'adresse de GitHub
Fenêtre de terminal dig github.com Adig github.com AAAANotez l'IPv4 et vérifiez si GitHub a une IPv6.
-
Examinez les serveurs mail de Google
Fenêtre de terminal dig google.com MXCombien de serveurs mail sont configurés ? Lequel a la priorité ?
-
Trouvez les serveurs DNS de github.com
Fenêtre de terminal dig github.com NSCes serveurs sont autoritaires pour le domaine.
-
Comparez les réponses de différents resolvers
Fenêtre de terminal dig @8.8.8.8 github.com +short # Googledig @1.1.1.1 github.com +short # Cloudflaredig @9.9.9.9 github.com +short # Quad9Les réponses sont-elles identiques ?
-
Tracez une résolution complète
Fenêtre de terminal dig +trace google.comIdentifiez les serveurs root, TLD et autoritaires dans la sortie.
TP 2 : Diagnostic d'un problème DNS simulé
Section intitulée « TP 2 : Diagnostic d'un problème DNS simulé »-
Simulez un mauvais serveur DNS
Fenêtre de terminal # Interroger un serveur qui n'existe pasdig @192.0.2.1 github.comObservez le timeout après ~5 secondes.
-
Testez un domaine inexistant
Fenêtre de terminal dig domaine-qui-nexiste-pas-12345.comRepérez le status
NXDOMAINdans la réponse. -
Mesurez les temps de réponse
Fenêtre de terminal dig github.com | grep "Query time"dig @8.8.8.8 github.com | grep "Query time"Comparez votre DNS local au DNS Google.
Testez vos connaissances
Section intitulée « Testez vos connaissances »Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Profil de compétences
Quoi faire maintenant
Ressources pour progresser
Des indices pour retenter votre chance ?
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications
À retenir
Section intitulée « À retenir »Le DNS est l'annuaire distribué d'Internet. Retenez ces points clés :
- Hiérarchie : Root (13 logiques, anycast mondial) → TLD → Autoritaire → Réponse
- Trois acteurs : Stub (local) → Résolveur récursif (fait le travail) → Autoritaire (détient la zone)
- Cache multi-niveaux : Navigateur, OS, résolveur, CDN, et negative caching pour NXDOMAIN
- Types courants : A (IPv4), AAAA (IPv6), CNAME (alias), MX (mail), TXT (métadonnées)
- Outils :
digpour le diagnostic DNS,getent hostspour voir ce que l'application résout - Transport : UDP par défaut, TCP si réponse tronquée (TC=1), EDNS0 pour buffers > 512
- SERVFAIL : Souvent DNSSEC ou timeouts, pas forcément "serveur down"
- Sécurité : DNSSEC = intégrité, DoT/DoH = confidentialité client-résolveur
FAQ : questions fréquentes sur le DNS
Section intitulée « FAQ : questions fréquentes sur le DNS »L'annuaire d'Internet
Le DNS (Domain Name System) traduit les noms de domaine lisibles (exemple.com) en adresses IP utilisables par les machines (93.184.216.34). C'est l'annuaire d'Internet : sans lui, il faudrait retenir des adresses IP pour chaque site.La résolution suit une hiérarchie :- Les serveurs racine (
.) orientent vers les TLD. - Les serveurs de TLD (
.com,.fr) orientent vers le domaine. - Les serveurs autoritaires du domaine donnent la réponse finale.
1.1.1.1, 8.8.8.8) fait toutes ces étapes pour vous et met le résultat en cache.dig, l'outil de référence
dig +short exemple.com # juste l'IP (enregistrement A)
dig MX exemple.com +short # serveurs mail (avec priorite)
dig @1.1.1.1 exemple.com # via un resolveur precis
dig -x 8.8.8.8 +short # resolution inverse (IP -> nom)
dig +trace exemple.com # suivre la delegation depuis la racine
dig et host viennent du paquet bind-utils (RHEL) ou dnsutils (Debian). nslookup reste disponible, mais l'ISC recommande de lui préférer dig ou host, plus modernes et lisibles.Adresse directe ou alias
| Type | Pointe vers | Usage |
|---|---|---|
| A | une adresse IPv4 | exemple.com -> 93.184.216.34 |
| AAAA | une adresse IPv6 | exemple.com -> 2606:... |
| CNAME | un autre nom | www -> exemple.com |
exemple.com sans préfixe), car l'apex porte déjà d'autres enregistrements obligatoires (NS, SOA).Le cache et le TTL
Chaque enregistrement DNS porte un TTL (Time To Live), en secondes : la durée pendant laquelle les résolveurs gardent la réponse en cache.Tant que le TTL n'a pas expiré, les résolveurs servent l'ancienne valeur, même si vous avez modifié l'enregistrement. D'où le délai de propagation.Bonnes pratiques pour une migration :- Baisser le TTL à l'avance (par exemple à 300 s) plusieurs heures avant le changement.
- Vider le cache local après coup :
resolvectl flush-caches # systemd-resolved
Vérifiez la propagation avec dig +short depuis plusieurs résolveurs.Deux rôles opposés
| Résolveur récursif | Serveur autoritaire | |
|---|---|---|
| Détient les données ? | non | oui, pour son domaine |
| Rôle | chercher la réponse | donner la réponse officielle |
| Exemples | box, 1.1.1.1, 8.8.8.8 |
serveurs DNS du domaine |
Chiffrer les requêtes DNS
Le DNS classique circule en clair sur le port 53 (UDP) : tout intermédiaire (FAI, Wi-Fi public) peut voir et modifier vos requêtes. Deux protocoles chiffrent ce trafic :| Protocole | Port | Particularité |
|---|---|---|
| DoT (DNS over TLS) | 853 | port dédié, facile à filtrer |
| DoH (DNS over HTTPS) | 443 | se fond dans le trafic HTTPS |
DNSOverTLS=), mais pas DoH (réservé aux navigateurs comme Firefox/Chrome, ou à un proxy dédié). Ces protocoles améliorent la confidentialité (le FAI ne voit plus les noms consultés) et l'intégrité (pas d'altération en transit). DoH est plus difficile à bloquer car indiscernable du HTTPS normal.Prochaines étapes
Section intitulée « Prochaines étapes »Troubleshooting réseau