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
Prochaines étapes
Section intitulée « Prochaines étapes »Troubleshooting réseau