DNS
| 🏠 Accueil | 📚 Index | 🐧 Linux | 🌐 Réseau | 🔒 Cybersécurité | 🖥️ Virtualisation | ✅ Checklists d'intervention | 📚 Tutoriels | 🤝 Services |
|---|
Objectif : comprendre comment le DNS fonctionne, connaître les principaux enregistrements, effectuer des tests et découvrir la configuration d'un serveur DNS sous Linux.
1. 📘 Qu'est-ce que le DNS ?
Le DNS (Domain Name System) est un système qui permet d'associer des noms de domaine à des informations nécessaires au fonctionnement des réseaux, notamment des adresses IP.
Les ordinateurs communiquent principalement à l'aide d'adresses IP. Il serait cependant difficile de mémoriser une adresse IP pour chaque site ou serveur.
Le DNS permet donc d'utiliser un nom plus facile à retenir.
Exemple :
Nom : www.exemple.fr Adresse : 192.0.2.10
L'adresse ci-dessus est réservée à la documentation et sert uniquement d'exemple.
Le DNS ne sert pas uniquement à trouver l'adresse d'un site web. Il permet également de localiser des serveurs de messagerie, de définir des alias et de publier des informations utilisées par différents services réseau.
2. 🧠 Comment fonctionne la résolution DNS ?
Lorsqu'un utilisateur saisit un nom de domaine dans son navigateur, son ordinateur doit obtenir les informations DNS nécessaires pour contacter le service demandé.
Les principales étapes
- Le navigateur ou le système recherche si une réponse est déjà disponible dans son cache.
- Si nécessaire, l'ordinateur interroge le résolveur DNS configuré sur le réseau.
- Le résolveur recherche la réponse dans son cache ou interroge d'autres serveurs DNS.
- Pour un nom public non présent dans son cache, il peut consulter successivement les serveurs racine, les serveurs du domaine de premier niveau, puis les serveurs faisant autorité.
- Le résolveur renvoie la réponse au client et peut la conserver en cache pendant la durée autorisée.
- Le navigateur utilise ensuite les informations obtenues pour contacter le service.
Schéma simplifié
┌──────────────────────┐
│ Utilisateur │
│ www.exemple.fr │
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Résolveur DNS │
│ Cache et recherches │
└──────────┬───────────┘
│ Si nécessaire
▼
┌──────────────────────┐
│ Serveurs DNS publics │
│ Racine, TLD, autorité│
└──────────┬───────────┘
│
▼
┌──────────────────────┐
│ Réponse DNS │
│ Adresse ou autre info│
└──────────────────────┘
3. 🏗️ Les différents rôles DNS
| Rôle | Fonction |
|---|---|
| Résolveur DNS | Recherche les réponses pour les clients, en utilisant son cache et, si nécessaire, d'autres serveurs. |
| Serveur faisant autorité | Fournit les réponses officielles pour les zones DNS dont il a la charge. |
| Serveur racine | Oriente les recherches vers les serveurs des domaines de premier niveau. |
| Serveur TLD | Gère les informations de délégation pour une extension comme .fr ou .com. |
| DNS primaire et secondaire | Désignent les rôles de serveurs faisant autorité pour une zone. Le secondaire conserve une copie synchronisée de cette zone. |
Un même logiciel peut assurer différents rôles, mais il est important de distinguer un serveur faisant autorité d'un résolveur récursif.
Bonne pratique : un serveur DNS public faisant autorité ne doit pas devenir un résolveur récursif ouvert à tous les internautes.
4. 🗂️ Les principaux enregistrements DNS
Les informations DNS sont stockées sous forme d'enregistrements, aussi appelés *Resource Records* (RR).
| Type | Fonction | Exemple |
|---|---|---|
| A | Associe un nom à une adresse IPv4. | www → 192.0.2.10
|
| AAAA | Associe un nom à une adresse IPv6. | www → 2001:db8::10
|
| CNAME | Définit un alias vers un autre nom DNS. | blog → serveur.exemple.fr.
|
| MX | Indique les serveurs chargés de recevoir les courriels d'un domaine. | 10 mail.exemple.fr.
|
| NS | Indique les serveurs DNS faisant autorité pour une zone. | ns1.exemple.fr.
|
| PTR | Permet une résolution inverse, d'une adresse IP vers un nom. | Nom associé à une adresse IP. |
| TXT | Contient des données textuelles, souvent utilisées pour la validation de domaines et la sécurité du courrier électronique. | SPF ou vérification de domaine. |
| SOA | Contient les informations principales de gestion d'une zone DNS. | Serveur principal, contact et numéro de série. |
| SRV | Indique le nom d'un serveur et le port d'un service donné. | Certains services d'annuaire. |
| CAA | Indique quelles autorités de certification sont autorisées à émettre des certificats pour un domaine. | Autorité de certification autorisée. |
Attention aux enregistrements CNAME
Un nom utilisant un CNAME est un alias vers un autre nom. Selon les règles DNS habituelles, il ne doit pas porter simultanément d'autres types d'enregistrements de données au même nom.
Un CNAME ne remplace pas les enregistrements MX du domaine et ne permet pas de définir directement une adresse IP.
5. ⏱️ Comprendre le TTL et le cache DNS
Le TTL (*Time To Live*) indique pendant combien de temps une réponse DNS peut être conservée en cache.
Exemple :
www.exemple.fr. 3600 IN A 192.0.2.10
Dans cet exemple, le TTL est de 3600 secondes, soit une heure.
- Un TTL élevé limite les requêtes répétées, mais les changements peuvent mettre plus de temps à être visibles.
- Un TTL faible permet une actualisation potentiellement plus rapide, mais augmente les requêtes DNS.
- Le cache explique pourquoi une modification DNS n'est pas nécessairement visible immédiatement partout.
Le délai réel dépend aussi des caches intermédiaires et de la configuration de la zone.
6. 🌍 DNS public et DNS privé
| Type | Utilisation | Exemple |
|---|---|---|
| DNS public | Publier les noms d'un domaine sur Internet. | www.mondomaine.fr
|
| DNS privé | Résoudre les noms des équipements d'un réseau interne. | serveur.lan
|
| DNS récursif | Effectuer les recherches DNS pour les clients. | Résolveur configuré sur un poste. |
| DNS faisant autorité | Fournir les données officielles d'une zone. | Serveur DNS hébergeant la zone d'un domaine. |
Un serveur DNS privé peut résoudre les noms des machines internes et transférer ou résoudre les requêtes externes selon sa configuration.
Attention : publier un nom DNS ne rend pas automatiquement un serveur accessible depuis Internet. Le routage, le pare-feu, les ports, l'adresse IP publique et la configuration du service restent déterminants.
7. 🐧 Installer un serveur DNS sous Ubuntu avec BIND9
BIND9 est un logiciel DNS largement utilisé sous Linux. Il peut servir à héberger des zones DNS faisant autorité et, selon sa configuration, à assurer des fonctions de résolution.
Cette section propose une zone privée de laboratoire.
Étape 1 : installer BIND9
sudo apt update sudo apt install bind9 bind9-utils dnsutils
Vérifiez le service :
sudo systemctl status bind9
Pour activer le démarrage automatique :
sudo systemctl enable --now bind9
Étape 2 : définir une zone DNS privée
Dans cet exemple, nous utiliserons le domaine de laboratoire :
pat-informatik.test
L'extension .test est réservée aux tests. Elle évite de prétendre configurer un domaine public réel.
Nous utiliserons également ces adresses d'exemple :
| Élément | Valeur |
|---|---|
| Serveur DNS | 192.168.1.20 |
| Serveur Web | 192.168.1.30 |
| Nom de zone | pat-informatik.test |
Adaptez les adresses IP à votre réseau.
Étape 3 : déclarer la zone
Ouvrez le fichier de configuration local :
sudo nano /etc/bind/named.conf.local
Ajoutez :
zone "pat-informatik.test" {
type master;
file "/etc/bind/db.pat-informatik.test";
};
Le terme master est employé dans de nombreuses configurations BIND9 pour désigner le serveur qui héberge la copie modifiable de la zone. Les versions et documentations récentes peuvent également utiliser la terminologie primaire/secondaire.
Étape 4 : créer le fichier de zone
Créez le fichier :
sudo nano /etc/bind/db.pat-informatik.test
Exemple de contenu :
$TTL 3600
@ IN SOA ns1.pat-informatik.test. admin.pat-informatik.test. (
2026102001 ; Serial
3600 ; Refresh
900 ; Retry
604800 ; Expire
3600 ; Negative Cache TTL
)
@ IN NS ns1.pat-informatik.test.
ns1 IN A 192.168.1.20
www IN A 192.168.1.30
serveur IN A 192.168.1.20
Explications :
$TTLdéfinit le TTL par défaut des enregistrements.SOAdéfinit les informations de gestion de la zone.NSindique le serveur DNS faisant autorité.Aassocie un nom à une adresse IPv4.Serialest le numéro de version de la zone. Il doit être incrémenté à chaque modification destinée à être publiée.
Le nom admin.pat-informatik.test. représente l'adresse de contact sous forme DNS : le premier point remplace le caractère @ dans cette notation. Il ne garantit pas l'existence d'une boîte mail.
Étape 5 : vérifier la configuration
Vérifiez la configuration générale :
sudo named-checkconf
Vérifiez la zone :
sudo named-checkzone pat-informatik.test /etc/bind/db.pat-informatik.test
Si les vérifications ne signalent aucune erreur, redémarrez BIND9 :
sudo systemctl restart bind9
Puis consultez son état :
sudo systemctl status bind9
Étape 6 : tester la résolution
Depuis le serveur DNS :
dig @127.0.0.1 www.pat-informatik.test
Ou depuis un autre poste autorisé :
dig @192.168.1.20 www.pat-informatik.test
La réponse attendue pour le nom de test est :
www.pat-informatik.test. 3600 IN A 192.168.1.30
Le résultat exact dépend du TTL restant et de la sortie de la commande. Le point important est que le nom retourne l'adresse attendue.
Important : cette zone est un exemple de DNS privé. Pour qu'elle fonctionne depuis les autres postes, ceux-ci doivent utiliser le serveur DNS approprié et le réseau doit autoriser les requêtes vers celui-ci.
8. 📧 DNS et messagerie électronique
Le DNS est indispensable au fonctionnement du courrier électronique.
Pour recevoir les courriels d'un domaine, les serveurs expéditeurs recherchent généralement ses enregistrements MX, puis résolvent les noms des serveurs de messagerie.
Exemple fictif :
exemple.fr. IN MX 10 mail.exemple.fr. mail IN A 192.0.2.25
L'adresse IP de cet exemple est réservée à la documentation. Pour un serveur de messagerie public, il faut utiliser les véritables adresses et noms de votre infrastructure.
Les enregistrements liés aux courriels
| Enregistrement | Utilité |
|---|---|
| MX | Désigne le serveur de réception du courrier. |
| A / AAAA | Résout le nom du serveur de messagerie en adresse IP. |
| PTR | Fournit la résolution inverse, souvent examinée par les systèmes antispam. |
| SPF (TXT) | Déclare les serveurs autorisés à envoyer du courrier pour le domaine. |
| DKIM (TXT) | Publie la clé publique permettant de vérifier une signature DKIM. |
| DMARC (TXT) | Définit une politique de traitement et de rapport pour les messages qui échouent aux contrôles SPF/DKIM alignés. |
Un enregistrement MX ne suffit pas à lui seul à assurer la réception du courrier : le serveur doit également être joignable, correctement configuré et capable de traiter les messages.
Pour une configuration complète, consultez aussi les pages Postfix et Dovecot.
9. 🧰 Commandes de diagnostic DNS
Sous Windows
Afficher la configuration réseau et les serveurs DNS :
ipconfig /all
Interroger un nom :
nslookup www.example.com
Interroger un serveur DNS précis :
nslookup www.example.com 1.1.1.1
Vider le cache DNS local :
ipconfig /flushdns
Sous Linux
Interroger un nom :
dig www.example.com
Afficher uniquement l'adresse IPv4 :
dig +short www.example.com A
Consulter les enregistrements MX :
dig example.com MX
Consulter les serveurs DNS faisant autorité :
dig example.com NS
Effectuer une résolution inverse :
dig -x 192.0.2.10
Interroger un serveur spécifique :
dig @192.168.1.20 www.pat-informatik.test
Si dig n'est pas installé sur Ubuntu :
sudo apt install dnsutils
Tester le port DNS
DNS utilise principalement UDP sur le port 53 et peut également utiliser TCP sur le port 53, notamment pour certaines réponses volumineuses et les transferts de zone.
Le test de résolution avec dig est généralement plus pertinent qu'un simple test de port, car il permet de vérifier la réponse DNS elle-même.
10. 🛠️ Dépannage : problèmes fréquents
| Symptôme | Cause possible | Solution |
|---|---|---|
| Le nom ne se résout pas | Nom incorrect ou enregistrement absent | Vérifier le nom et les enregistrements. |
| L'adresse retournée est ancienne | Réponse conservée en cache | Vérifier le TTL et attendre l'expiration du cache. |
| Le serveur ne répond pas | Service arrêté, pare-feu ou problème réseau | Vérifier le service, le routage et le port 53. |
| Un poste ne résout pas la zone privée | Il utilise un autre résolveur DNS | Vérifier la configuration DNS du poste. |
| Erreur au chargement d'une zone | Syntaxe incorrecte ou numéro de série non actualisé | Utiliser `named-checkconf` et `named-checkzone`. |
| Les courriels n'arrivent pas | Enregistrement MX incorrect ou serveur non joignable | Vérifier MX, A/AAAA, pare-feu et service de messagerie. |
| La résolution inverse échoue | Enregistrement PTR absent ou incorrect | Vérifier la zone inverse et l'autorité responsable. |
Journaux et service BIND9
Vérifier l'état du service :
sudo systemctl status bind9
Consulter les derniers journaux :
sudo journalctl -u bind9 --no-pager -n 100
Vérifier la configuration :
sudo named-checkconf sudo named-checkzone pat-informatik.test /etc/bind/db.pat-informatik.test
11. 🔒 Sécurité et bonnes pratiques
- Maintenir le logiciel DNS à jour.
- Limiter les transferts de zone aux serveurs secondaires autorisés.
- Ne pas exposer un résolveur récursif ouvert sur Internet.
- Séparer, si nécessaire, les zones internes et les zones publiques.
- Limiter les requêtes aux clients autorisés lorsque l'architecture le permet.
- Sauvegarder les fichiers de configuration et les fichiers de zone.
- Incrémenter le numéro de série SOA après chaque modification publiée.
- Surveiller les journaux et les erreurs de résolution.
- Protéger les interfaces d'administration.
- Comprendre le rôle de DNSSEC, qui permet de vérifier l'authenticité et l'intégrité des données DNS lorsqu'il est correctement déployé.
À retenir : DNSSEC ne chiffre pas les requêtes DNS. Le chiffrement du transport DNS relève notamment de mécanismes comme DNS over TLS ou DNS over HTTPS, lorsque le client et le résolveur les prennent en charge.
12. 📝 Checklist de vérification
- [ ] Le serveur DNS est installé et son service fonctionne.
- [ ] La configuration passe les contrôles de syntaxe.
- [ ] Les enregistrements A et AAAA sont cohérents avec les adresses utilisées.
- [ ] Les enregistrements MX désignent les bons serveurs de messagerie.
- [ ] Les enregistrements NS et SOA sont corrects pour la zone.
- [ ] Les clients utilisent le bon résolveur DNS.
- [ ] Les règles du pare-feu autorisent les échanges nécessaires.
- [ ] Les zones et fichiers de configuration sont sauvegardés.
- [ ] Les transferts de zone et la récursion sont limités selon le rôle du serveur.
- [ ] Les changements de zone sont testés avant leur mise en production.
13. 📚 Ressources et documentation
- RFC 1034 — Concepts et fonctions du DNS
- RFC 1035 — Mise en œuvre et spécification DNS
- Site officiel de BIND
- Documentation BIND 9
- Registre des paramètres DNS de l'IANA