Réseaux & Télécoms PDF Gratuit

Cours de DNS avec Bind9 en PDF (Intermédiaire)

DNS avec Bind9 sous Linux : Ce qu'il faut savoir. Le DNS (Domain Name System) est un service réseau fondamental (port 53 UDP/TCP) qui traduit les noms de domaine en adresses IP, permettant ainsi la navigation sur Internet.

Sommaire du support PDF

PageContenu
1Introduction au DNS et principes
2Installation de Bind9
3Configuration des zones
4Enregistrements DNS (A, MX, CNAME, PTR)
5Architecture Maître/Esclave et transferts
6Sécurisation et tests
7FAQ et public cible
8Annexes : commandes et vérifications

🎯 Objectifs du tutoriel PDF

  • Installation de Bind9 : Étapes pour installer le serveur DNS sur un système Linux.
  • Configuration des zones : Comment définir et gérer les zones DNS pour votre domaine.
  • Enregistrements DNS : Types d'enregistrements (A, MX, CNAME, etc.) et leur utilisation.
  • Dépannage DNS : Méthodes pour résoudre les problèmes courants liés au DNS.

Programme du tutoriel PDF : Configuration Bind9

  • Options principales
  • Déclaration de toutes les zones
  • Zone de recherche directe à ajouter
  • Zone de recherche inversée
  • Exemples d'enregistrements de type A
  • Déclaration d'enregistrements de type PTR

Installation rapide

sudo apt update && sudo apt install bind9 bind9utils bind9-doc

Le tutoriel est particulièrement adapté aux distributions Debian et Ubuntu Server. Compatible avec Debian 11/12 et Ubuntu 22.04/24.04, il s'appuie sur l'arborescence de configuration standard /etc/bind et les paquets disponibles dans ces versions.

Types de serveurs DNS

  • Serveur Maître (Master)
  • Serveur Esclave (Slave)
  • Serveur Cache

Configurer Bind9 en tant que résolveur cache (serveur récursif) optimise la navigation locale en stockant les réponses externes. Activez la récursion et restreignez-la aux réseaux de confiance via les options de configuration (par exemple dans /etc/bind/named.conf.options ou /etc/bind/named.conf.local), définissez des forwarders si nécessaire et limitez allow-recursion aux plages d'adresses internes pour éviter les usages abusifs.

Différence fondamentale : une requête récursive demande au serveur DNS d'effectuer la résolution complète jusqu'à obtenir la réponse finale, alors qu'une requête itérative demande au serveur une réponse partielle (ou une référence) pour que le client interroge ensuite d'autres serveurs. Comprendre cette distinction aide à configurer correctement récursion, forwarders et caches.

Architecture maître/esclave

Dans une architecture maître/esclave, le serveur maître héberge les fichiers de zone éditables tandis que les esclaves récupèrent les zones par transfert (AXFR/IXFR) pour assurer la redondance et la disponibilité. Les déclarations de zone se trouvent généralement dans /etc/bind/named.conf.local : chaque zone comporte son fichier de données pour la résolution directe et la résolution inverse (PTR). Configurez des clés TSIG pour authentifier les transferts de zone et ajustez les ACL pour limiter les sources autorisées aux échanges de zone.

Remarque : Debian fournit par défaut des modèles de fichiers de zone dans /etc/bind tels que /etc/bind/db.local et /etc/bind/db.127 — utilisez-les comme base pour vos zones localhost et reverse avant d'adapter les enregistrements à votre domaine.

Vérification et sécurisation du service Bind9

Validez la configuration et les fichiers de zone avant de recharger le service. Utilisez named-checkconf pour détecter des erreurs de syntaxe dans les fichiers de configuration et named-checkzone pour contrôler la cohérence d'une zone donnée. Combinez ces vérifications avec des règles de pare-feu bloquant l'accès non autorisé au port 53, la limitation des transferts de zone et la surveillance des logs pour réduire les risques d'abus. Testez la résolution locale et distante pour confirmer le comportement attendu.

Vérification des fichiers de zone : exécutez named-checkconf puis named-checkzone exemple.com /etc/bind/zones/db.exemple.com pour valider la syntaxe et l'intégrité des enregistrements.

Gestion du service Bind9

Après toute modification des fichiers de configuration ou des zones, redémarrez le service Bind9 et vérifiez son état pour s'assurer que le démon est opérationnel et sans erreurs.

sudo systemctl restart bind9
sudo systemctl status bind9

Si le service refuse de démarrer, relancez les vérifications (named-checkconf, named-checkzone) puis consultez les journaux système pour identifier la cause du blocage.

Validation de la résolution avec dig

Utilisez dig pour tester la résolution directement contre votre serveur local et analyser la section ANSWER renvoyée. La commande suivante interroge votre serveur Bind9 en local pour le type A du domaine de test :

dig @localhost exemple.com A

Vous pouvez aussi utiliser nslookup pour des vérifications rapides. Ces outils permettent de confirmer que les enregistrements A, MX ou PTR sont bien publiés et que les transferts de zone (AXFR) fonctionnent entre maîtres et esclaves lorsque configurés.

Configuration des forwarders et du cache DNS

Pour déléguer la résolution des noms non résolus localement vers des serveurs publics ou upstream, configurez des forwarders dans /etc/bind/named.conf.options. Exemple :

options {
    directory "/var/cache/bind";
    recursion yes;
    allow-recursion { localnets; };
    forwarders {
        8.8.8.8;
        8.8.4.4;
    };
    dnssec-validation auto;
};

Ce réglage active la récursion pour les réseaux de confiance, définit des serveurs forwarders et conserve un cache local pour accélérer les réponses. Ajustez les adresses et les ACL selon votre topologie.

Configuration de la résolution inverse (Reverse DNS)

La résolution inverse associe une adresse IP à un nom de domaine via un enregistrement PTR. Pour une plage IPv4 192.0.2.0/24, déclarez une zone inverse dans /etc/bind/named.conf.local et créez un fichier de zone (par exemple /etc/bind/zones/db.192).

Exemple de déclaration de zone (dans /etc/bind/named.conf.local) :

zone "2.0.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/db.192";
};

Exemple minimal de /etc/bind/zones/db.192 (remplacez les valeurs par les vôtres) :

$TTL 86400
@   IN  SOA ns1.exemple.com. admin.exemple.com. (
        2026032101 ; serial
        3600       ; refresh
        1800       ; retry
        604800     ; expire
        86400 )    ; minimum
    IN  NS  ns1.exemple.com.
1   IN  PTR host1.exemple.com.
2   IN  PTR host2.exemple.com.

Après création, validez avec named-checkzone 2.0.192.in-addr.arpa /etc/bind/zones/db.192 puis rechargez Bind9.

Sécurisation avancée du serveur DNS

Renforcez l'isolation de Bind9 en combinant contrôles d'accès, chroot et profil AppArmor. Sur Debian/Ubuntu, activez le profil AppArmor fourni pour limiter les paths accessibles par le processus Bind9 et réduisez la surface d'attaque. Le recours au mode chroot (ou à une configuration équivalente d'isolation) limite les fichiers visibles par le démon et réduit l'impact d'une compromission.

Autres mesures recommandées : restreindre allow-transfer aux esclaves autorisés, utiliser TSIG pour sécuriser les transferts de zone, désactiver la récursion sur les serveurs exposés au public et tenir les paquets Bind9 à jour. Surveillance et journaux (syslog/journal) permettent de détecter des comportements suspects.

👤 Public cible du tutoriel PDF

  • Public cible : Administrateurs système et toute personne souhaitant comprendre la gestion des DNS sous Linux (niveau intermédiaire).
  • Prérequis : Connaissances de base en administration Linux et en réseaux.

FAQ du tutoriel PDF

Qu'est-ce que Bind9 ?

Bind9 est un logiciel de serveur DNS largement utilisé sur les systèmes Unix/Linux pour publier des zones, répondre aux requêtes et assurer la résolution de noms au sein d'un réseau ou sur Internet.

Comment configurer une zone DNS ?

Déclarez la zone dans /etc/bind/named.conf.local, créez le fichier de zone avec les enregistrements requis (A, MX, PTR pour la résolution inverse) puis validez avec named-checkzone avant de recharger le service.

Commandes de diagnostic : dig, nslookup, host

OutilUsage typiqueAvantage
digdig @serveur domaine typeSortie détaillée et scriptable, utile pour analyser sections ANSWER/QUESTION/ADDITIONAL.
nslookupnslookup domaine serveurSimple et interactif, pratique pour tests rapides.
hosthost domaine serveurPrésentation concise, conversion inverse et recherche rapide.