Installation du serveur de résolution de nom ISC BIND1). Configuration minimale en tant que serveur faisant autorité sur la zone “internal”.
internal comme TLD pour assurer la résolution de noms sur nos réseaux privés pour éviter tout conflit avec lan utilisé par le protocole mdns.
| Date | 2026-07 |
|---|---|
| Architecture | x86_64 |
| Système | Debian GNU/Linux 13 (trixie) |
| Noyau | 6.12.96+deb13-amd64 |
apt install -y bind9 bind9-doc bind9utils dnsutils
Pour vérifier le fonctionnement du service :
systemctl status named ss -lptun | grep named
Avec le paquet bind9utils on installe également le binaire rndc2) qui permet de contrôler le service via le port TCP 953.
Invoquer la commande sans arguments pour obtenir la liste des options disponibles. Quelques exemples :
# Etat du serveur rndc status # Recharger la configuration rndc reload # Activer/désactiver la journalisation des requêtes rndc querylog ON rndc querylog OFF # Vider le cache rndc flush # Augmente la verbosité des logs (à chaque appel ou en spécifiant le niveau) rndc trace # Dump des statistiques (par défaut dans /var/cache/bind/named.stats) rndc stats
Sans surprise, les fichiers de configuration du service BIND se trouvent dans le dossier /etc/bind. Le fichier de configuration principal /etc/bind/named.conf inclus les fichiers :
/etc/bind/named.conf.options définir les options globales (à compléter) ;/etc/bind/named.conf.local définir les zones gérées par ce serveur (à compléter) ;/etc/bind/named.conf.root-hints importation des serveurs DNS racines ;Les nombreuses options de paramétrage sont détaillées dans la documentation :
man -S 5 named.conf
Dans le fichier de configuration /etc/bind/named.conf.options on peut définir précisément les interfaces IPv4 ou IPv6 sur lesquelles le serveur bind sera à l'écoute.
Écouter sur toutes les interfaces
listen-on { any; };
listen-on-v6 { any; };
Spécifier une ou plusieurs adresses IPv4 et le port
listen-on port 5353 { 127.0.0.1; 192.168.0.1; };
listen-on-v6 { none; };
Après toute modification de la configuration, vérifier la syntaxe avec la commande :
named-checkconf -z
Puis recharger la configuration :
rndc reload
# Alternative
systemctl reload named.service
Si IPv6 est utilisé seulement sur le réseau local et que le serveur BIND ne peut pas joindre les serveurs racines ou les forwarders via ce protocole, les réponses aux requêtes peuvent être très longues et comporter des erreurs de type SERVFAIL
dig @127.0.0.1 www.google.fr A ; <<>> DiG 9.20.26-1~deb13u1-Debian <<>> @127.0.0.1 www.google.fr A ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 20789 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ; COOKIE: 819fa453655def6b010000006a6f289ecc0afcf6f9ae8ce2 (good) ;; QUESTION SECTION: ;www.google.fr. IN A ;; Query time: 255 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) (UDP) ;; WHEN: Sun Aug 02 13:23:10 CEST 2026 ;; MSG SIZE rcvd: 70
Dans ce cas, il faut paramétrer le service sans support du protocole IPv6.
Modifier le fichier /etc/default/named et ajouter l'option -4 pour forcer BIND à utiliser seulement la pile IPv4
# # run resolvconf? RESOLVCONF=no # startup options for the server OPTIONS="-u bind -4"
Relancer le service
systemclt restart named.service
Nous allons créer la zone glp.internal. et définir le serveur en tant que serveur maître sur celle-ci : C'est lui qui fera autorité sur cette zone.
Modifier le fichier de configuration /etc/bind/named.conf.local afin de déclarer la zone glp.internal.
zone "glp.internal" {
type master;
file "/etc/bind/db.glp.internal";
allow-update { none; };
};
Remarque: Pour éviter qu'un tiers ne mette à jour dynamiquement votre zone DNS, utiliser la déclaration allow-update
Le fichier /etc/bind/db.glp.internal contiendra la définition de la zone glp.internal. Créer le fichier.
touch db.glp.internal
Il contiendra les définitions suivantes
;
; BIND fichier de données pour la zone internal
;
$TTL 604800
@ IN SOA ns1.glp.internal. contact.glp.internal. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.glp.internal.
;
gateway IN A 192.168.1.1
ns1 IN A 192.168.1.15
test IN A 192.168.1.20
Cette zone va permettre au serveur DNS de convertir une adresse IP en nom. A nouveau modifier le fichier de configuration /etc/bind/named.conf.local pour ajouter la zone de recherche inversée.
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.reverse.glp.internal";
notify no;
allow-update { none; };
};
Ici c'est dans le fichier db.reverse.internal que seront définies les entrées de la zone. Utiliser un fichier existant en modèle pour créer le nouveau fichier de zone.
cp db.127 db.reverse.internal
Modifier le fichier de zone inversé /etc/bind/db.192. Attention a bien modifier l'entrée SOA, le nom du serveur doit correspondre à la zone lan. A chaque entrée A du fichier de zone lan doit correspondre un enregistrement PTR.
;
; BIND reverse data file
;
$TTL 604800
@ IN SOA ns1.glp.internal. admin.glp.internal. (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS ns1.glp.internal.
1 IN PTR gateway.glp.internal.
15 IN PTR ns1.glp.internal.
20 IN PTR test.glp.internal.
Vérifier la configuration et recharger les fichiers de configuration
named-checkzone 122.168.192.in-addr.arpa /etc/bind/db.reverse.glp.internal named-checkconf -z && systemctl reload named.service
Avec nslookup en passant l'adresse IP directement en paramètre ou en mode interactif en restreignant le type de réponses à PTR:
nslookup > set type=PTR > 192.168.1.201 Server: 192.168.1.200 Address: 192.168.1.200#53 201.1.168.192.in-addr.arpa name = pi-stache.lan. >
A propos de la RFC 1918
Une fois le service correctement paramétré, on peut configurer l’hôte pour qu'il utilise ce serveur DNS.
Pour afficher quel serveur DNS est utilisé par défaut sur le système :
cat /etc/resolv.conf
Les commentaires du fichiers indiquent quel service à définit le contenu du fichier (en général le client DHCP).
Le fichier /etc/resolv.conf doit maintenant indiquer l'adresse de notre serveur BIND :
systemctl start named-resolvconf.service
Deux méthodes exposent les statistiques du serveur BIND :
named.stats ;
Pour activer le service d'export des statistiques via HTTP, ajouter la directive statistics-channels dans le fichier de configuration /etc/bind/named.conf.local :
statistics-channels { inet 127.0.0.1 port 8080 ; };
Valider la syntaxe et relancer le service :
named-checkconf -z
systemctl reload named.service
query logging affiché par la commande rndc status ;rndc querylog on