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
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
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
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
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 :
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