Aller au contenu

TP – Serveur DNS Bind9

BTS SIO SISR 1re année – Bloc 2 – S08

Note

But. Situation : Comment les utilisateurs joignent-ils un serveur par son nom, et pourquoi un câble de secours peut-il faire tomber tout le réseau ?

Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes (« J'anticipe »). Puis tu testes et tu notes ce que tu constates. Tu comprends ce que fait chaque commande (« Je comprends »). Un bilan de compétences clôt la séance. Les parties de services (Linux, Windows Server) se font sur des machines virtuelles réelles ; le simulateur réseau sert aux manipulations d'équipements réseau.

Tip

TP prêt à ouvrir dans le simulateur réseau. Télécharge TP-S08-dns.json, puis ouvre-le dans le simulateur avec Ouvrir. Il couvre la zone techpro.local : enregistrements A et alias CNAME, résolution directe et inverse. Il complète le TP Bind9 ci-dessous, qui reste à faire sur la machine virtuelle Debian. Le bouton Vérifier mon travail contrôle ta configuration, Charger la correction montre une solution. Sur matériel ou sur Packet Tracer, suis les étapes ci-dessous. Mode d'emploi : Utiliser les TP du simulateur.

III. TP Linux : Serveur DNS Bind9

A. Installation de Bind9

# Mettre à jour et installer
sudo apt update
sudo apt install bind9 bind9utils bind9-doc -y

# Vérifier que le service tourne
sudo systemctl status bind9
# Attendu : Active: active (running)

# Vérifier qu'il écoute sur le port 53
ss -tlnup | grep 53

B. Configuration des Options Globales

sudo nano /etc/bind/named.conf.options

Remplacer le contenu par :

options {
    directory "/var/cache/bind";

    // Forwarders : à qui déléguer les requêtes qu'on ne sait pas résoudre
    forwarders {
        8.8.8.8;      // DNS Google primaire
        8.8.4.4;      // DNS Google secondaire
    };

    // Autoriser la récursion pour notre réseau local uniquement
    allow-recursion { 127.0.0.1; 192.168.10.0/24; };

    // Accepter les requêtes de notre réseau
    allow-query { any; };

    dnssec-validation auto;
    listen-on { any; };
};

C. Déclarer les Zones Locales

sudo nano /etc/bind/named.conf.local

Ajouter à la fin du fichier :

// Zone directe : techpro.local (nom → IP)
zone "techpro.local" {
    type master;
    file "/etc/bind/db.techpro.local";
};

// Zone inverse : 192.168.10.0/24 (IP → nom)
zone "10.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.10.rev";
};

D. Créer le Fichier de Zone Directe

sudo nano /etc/bind/db.techpro.local

Contenu à saisir :

;
; Fichier de zone directe : techpro.local
; Créé le 2024-11-20 - BTS SIO SISR
;
$TTL 3600        ; TTL par défaut : 1 heure

; === SOA - Début de zone ===
@   IN  SOA ns1.techpro.local. admin.techpro.local. (
                2024112001  ; Serial YYYYMMDDNN - INCRÉMENTER à chaque modif
                3600        ; Refresh : toutes les heures
                900         ; Retry : 15 min en cas d'échec
                604800      ; Expire : 7 jours
                3600 )      ; Negative TTL : 1 heure

; === NS - Serveur(s) de noms ===
@       IN  NS  ns1.techpro.local.

; === A - Enregistrements nom vers IP ===
ns1         IN  A   192.168.10.1    ; Ce serveur DNS
www         IN  A   192.168.10.50   ; Serveur web
mail        IN  A   192.168.10.51   ; Serveur mail
srv-fichier IN  A   192.168.10.20   ; Serveur de fichiers
srv-nas     IN  A   192.168.10.10   ; NAS

; === CNAME - Alias ===
web         IN  CNAME   www         ; "web.techpro.local" = alias de "www.techpro.local"
intranet    IN  CNAME   www
ftp         IN  CNAME   srv-fichier

J'anticipe. Tu modifies un enregistrement dans la zone mais tu oublies d'incrémenter le numéro de série. Quel effet sur un serveur secondaire ? ______________________

Éléments de réponse

Le serveur secondaire compare les numéros de série : s'il est identique, il considère que la zone n'a pas changé et ne recopie pas la modification. Il faut incrémenter le numéro de série à chaque modification.


E. Créer le Fichier de Zone Inverse

sudo nano /etc/bind/db.192.168.10.rev

Contenu à saisir :

;
; Fichier de zone inverse : 192.168.10.0/24
; Zone : 10.168.192.in-addr.arpa
;
$TTL 3600

@   IN  SOA ns1.techpro.local. admin.techpro.local. (
                2024112001
                3600
                900
                604800
                3600 )

@   IN  NS  ns1.techpro.local.

; === PTR - Enregistrements IP vers nom ===
; Format : dernier octet IN PTR nom-complet.
1   IN  PTR ns1.techpro.local.
10  IN  PTR srv-nas.techpro.local.
20  IN  PTR srv-fichier.techpro.local.
50  IN  PTR www.techpro.local.
51  IN  PTR mail.techpro.local.

F. Appliquer les Permissions et Vérifier la Syntaxe

# Appliquer les bonnes permissions (bind doit pouvoir lire les fichiers)
sudo chown bind:bind /etc/bind/db.techpro.local
sudo chown bind:bind /etc/bind/db.192.168.10.rev

# Vérifier la syntaxe du fichier de configuration principal
sudo named-checkconf
# Si aucune sortie = OK (les erreurs s'affichent, le silence = succès)

# Vérifier la syntaxe des fichiers de zone
sudo named-checkzone techpro.local /etc/bind/db.techpro.local
# Attendu : zone techpro.local/IN: loaded serial 2024112001
#           OK

sudo named-checkzone 10.168.192.in-addr.arpa /etc/bind/db.192.168.10.rev
# Attendu : zone 10.168.192.in-addr.arpa/IN: loaded serial 2024112001
#           OK

NE PAS redémarrer Bind9 si named-checkzone affiche des erreurs — corriger d'abord !


G. Démarrer et Recharger Bind9

# Redémarrer le service
sudo systemctl restart bind9

# Vérifier l'état
sudo systemctl status bind9
# Attendu : Active: active (running)

# Si le service était déjà en route et qu'on veut recharger les zones
# sans couper le service (recommandé en production)
sudo rndc reload

Activer au démarrage :

sudo systemctl enable bind9


H. Configurer le Client DNS

Pour que la VM elle-même utilise son propre serveur DNS :

# Méthode simple : modifier /etc/resolv.conf
# ATTENTION : ce fichier est souvent régénéré automatiquement
sudo nano /etc/resolv.conf

Contenu :

nameserver 127.0.0.1       # Utiliser le serveur local
nameserver 8.8.8.8         # Serveur de secours (Internet)
search techpro.local       # Domaine de recherche par défaut


I. Tester le Serveur DNS

# === TEST ZONE DIRECTE (A records) ===

# dig : outil complet
dig @127.0.0.1 www.techpro.local A

# Sortie attendue :
# ;; ANSWER SECTION:
# www.techpro.local.  3600  IN  A  192.168.10.50

dig @127.0.0.1 mail.techpro.local A
dig @127.0.0.1 web.techpro.local A        # Doit retourner l'IP de www (CNAME)
dig @127.0.0.1 srv-nas.techpro.local A

# === TEST ZONE INVERSE (PTR records) ===

dig @127.0.0.1 -x 192.168.10.50           # Résolution inverse de .50
dig @127.0.0.1 -x 192.168.10.1            # Résolution inverse du serveur NS

# === TEST AVEC nslookup ===

nslookup www.techpro.local 127.0.0.1
nslookup 192.168.10.50 127.0.0.1          # Résolution inverse

# === TEST AVEC host ===

host www.techpro.local 127.0.0.1
host 192.168.10.50 127.0.0.1

# === TEST ALIAS CNAME ===

dig @127.0.0.1 web.techpro.local          # Doit montrer CNAME vers www
dig @127.0.0.1 intranet.techpro.local

# === TEST RÉSOLUTION INTERNET (Forwarder) ===

dig @127.0.0.1 www.google.fr              # Notre serveur doit forwarder vers 8.8.8.8

Analyser une réponse dig :

; <<>> DiG 9.18.x <<>> @127.0.0.1 www.techpro.local A
;; QUESTION SECTION:
;www.techpro.local.         IN  A

;; ANSWER SECTION:
www.techpro.local.  3600    IN  A   192.168.10.50
   ↑ nom FQDN        ↑TTL       ↑type ↑IP réponse

;; AUTHORITY SECTION:
techpro.local.      3600    IN  NS  ns1.techpro.local.

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)     ← Serveur interrogé
;; WHEN: ...
;; MSG SIZE rcvd: 75

Flags importants :
qr  = Query Response (c'est une réponse)
aa  = Authoritative Answer (le serveur fait autorité) (OK)
rd  = Recursion Desired (le client a demandé la récursion)
ra  = Recursion Available (le serveur supporte la récursion)

Je comprends. Quelle différence entre dig nom et dig -x adresse ? Dans quel fichier de zone chaque réponse est-elle trouvée ? ______________________

Éléments de réponse

dig nom interroge la zone directe (nom vers IP, enregistrement A). dig -x adresse interroge la zone inverse (IP vers nom, enregistrement PTR).


J. Consulter les Logs Bind9

# Logs en temps réel (très utile pour déboguer)
sudo journalctl -u bind9 -f

# Ou chercher dans syslog
sudo tail -f /var/log/syslog | grep named