Outils pour utilisateurs

Outils du site


sysadmin:configurer-bind9

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sysadmin:configurer-bind9 [2025/10/23 18:55] yoannsysadmin:configurer-bind9 [2026/08/03 05:47] (Version actuelle) yoann
Ligne 1: Ligne 1:
-{{tag>sysadmin netadmin linux dns}}+{{tag>sysadmin netadmin linux dns bind}}
  
-======= Configurer bind9 ======+======= Configurer BIND9 ====== 
 + 
 +Installation du serveur de résolution de nom ISC BIND((Berkeley Internet Name Domain)). 
 +Configuration minimale en tant que serveur faisant autorité sur la zone "internal"
 + 
 +<note> 
 +Il est recommandé d'utiliser ''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. 
 +</note> 
 + 
 + 
 +===== Environnement ===== 
 + 
 +^ Date         | 2026-07                       | 
 +^ Architecture | x86_64                        | 
 +^ Système      | Debian GNU/Linux 13 (trixie) 
 +^ Noyau        | 6.12.96+deb13-amd64           | 
 + 
 + 
 +===== Procédure =====
  
-Installation du serveur de nom ISC BIND((Berkeley Internet Name Domain)) sur la zone lan 
  
 <code bash> <code bash>
-apt-get install bind9 bind9-doc bind9utils+apt install -y bind9 bind9-doc bind9utils dnsutils
 </code> </code>
  
  
-Dans le fichier de configuration **''/etc/bind/named.conf.options''** définir les interfaces sur lesquelles le serveur bind sera à l'écoute en modifiant la ligne listen-on-v6.+Pour vérifier le fonctionnement du service :
  
-Écoute sur toutes les interfaces+<code bash> 
 +systemctl status named 
 + 
 +ss -lptun | grep named 
 +</code> 
 + 
 +Avec le paquet ''bind9utils'' on installe également le binaire **rndc**((**r**emote **n**ame **d**aemon **c**ontroller)) 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 : 
 + 
 +<code bash> 
 +# 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 
 +</code> 
 + 
 +===== A propos de la configuration ===== 
 + 
 +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 : 
 + 
 +<code bash> 
 +man -S 5 named.conf 
 +</code> 
 + 
 + 
 +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
 <file> <file>
-        listen-on-v6 { any; };+listen-on { any; }; 
 +listen-on-v6 { any; };
 </file> </file>
  
-Écoute sur la boucle locale+Spécifier une ou plusieurs adresses IPv4 et le port
 <file> <file>
-        listen-on-v6 { ::1; };+listen-on port 5353 { 127.0.0.1; 192.168.0.1; }; 
 +listen-on-v6 { none; };
 </file> </file>
  
-Le retrait de la déclaration **forwarders** permet d'éviter de s'appuyer sur les DNS du FAI. Dans ce cas bind interroge directement les DNS racine. On ne bénéficie plus du cache DNS du FAI mais on évite également ses DNS menteurs s'il existent.+Après toute modification de la configuration, vérifier la syntaxe avec la commande :
  
-Commenter les forwarders +<code bash> 
-<file+named-checkconf -z 
-        // forwarders { +</code
-        //      0.0.0.0; + 
-        // };+Puis recharger la configuration : 
 + 
 +<code bash> 
 +rndc reload 
 + 
 +# Alternative 
 +systemctl reload named.service 
 +</code> 
 + 
 + 
 +==== A propos du support d'IPv6 ==== 
 + 
 +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'' 
 + 
 +<code bash [highlight_lines_extra="7,16"]> 
 +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      
 + 
 +;; 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 
 +</code> 
 + 
 +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 
 + 
 +<file conf> 
 +
 +# run resolvconf? 
 +RESOLVCONF=no 
 + 
 +# startup options for the server 
 +OPTIONS="-u bind -4"
 </file> </file>
  
-===== Configuration en serveur maître =====+Relancer le service 
 + 
 +<code bash> 
 +systemclt restart named.service 
 +</code> 
 + 
 +===== Créer une zone =====
  
-bind va être configuré en tant que serveur maître sur la zone **lan.** C'est lui qui fera autorité sur cette zone.+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 lan.+Modifier le fichier de configuration ''**/etc/bind/named.conf.local**'' afin de déclarer la zone ''glp.internal.''
  
 <file> <file>
-zone "lan" { +zone "glp.internal" { 
         type master;          type master; 
-        file "/etc/bind/db.lan"; +        file "/etc/bind/db.glp.internal"; 
         allow-update { none; };         allow-update { none; };
 }; };
Ligne 47: Ligne 166:
 Remarque: Pour éviter qu'un tiers ne mette à jour dynamiquement votre zone DNS, utiliser la déclaration **allow-update** Remarque: Pour éviter qu'un tiers ne mette à jour dynamiquement votre zone DNS, utiliser la déclaration **allow-update**
    
-Le fichier ''**/etc/bind/db.lan**'' contiendra la définition de la zone lan. Créer le fichier+Le fichier ''**/etc/bind/db.glp.internal**'' contiendra la définition de la zone ''glp.internal''. Créer le fichier
 <code bash> <code bash>
-touch db.lan+touch db.glp.internal
 </code> </code>
  
Ligne 55: Ligne 175:
 <file> <file>
 ; ;
-; BIND fichier de données pour la zone lan+; BIND fichier de données pour la zone internal
 ; ;
 $TTL    604800 $TTL    604800
-@       IN      SOA     ns.lanadmin.lan. ( +@       IN      SOA     ns1.glp.internalcontact.glp.internal. ( 
-                      201305201         ; Serial+                                      ; Serial
                          604800         ; Refresh                          604800         ; Refresh
                           86400         ; Retry                           86400         ; Retry
Ligne 65: Ligne 185:
                          604800 )       ; Negative Cache TTL                          604800 )       ; Negative Cache TTL
 ; ;
-      IN      NS      ns.lan+       IN      NS      ns1.glp.internal
-ns      IN      A       192.168.1.15 +
-gw      IN      A       192.168.1.1+gateway  IN      A       192.168.1.1 
 +ns1      IN      A       192.168.1.15 
 +test     IN      A       192.168.1.20
 </file> </file>
  
- 
-Vérifier la syntaxe des fichiers de configuration: 
- 
-<code bash> 
-named-checkconf -z 
-</code> 
  
 ===== Créer la zone de recherche inversée ===== ===== Créer la zone de recherche inversée =====
  
-Cette zone va permettre au serveur DNS de convertir une adresse IP en nom. A nouveau modifier le fichier de configuration ''**/etc/bind/named.cof.local**'' pour ajouter la zone.+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.
  
 <file> <file>
 zone "1.168.192.in-addr.arpa" { zone "1.168.192.in-addr.arpa" {
         type master;         type master;
 +        file "/etc/bind/db.reverse.glp.internal";
         notify no;         notify no;
-        file "/etc/bind/db.192";+        allow-update { none; };
 }; };
 </file> </file>
  
-Ici c'est dans le fichier ''**db.192**'' 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.+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.
  
 <code bash> <code bash>
-cp db.127 db.192+cp db.127 db.reverse.internal
 </code> </code>
  
Ligne 102: Ligne 219:
 ; ;
 $TTL    604800 $TTL    604800
-@       IN      SOA     ns1.lan. admin.lan. ( +@       IN      SOA     ns1.glp.internal. admin.glp.internal. ( 
-                                      ; Serial+                                      ; Serial
                          604800         ; Refresh                          604800         ; Refresh
                           86400         ; Retry                           86400         ; Retry
                         2419200         ; Expire                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL                          604800 )       ; Negative Cache TTL
-; 
-@       IN      NS      ns1. 
  
-; ================= Serveurs ========================= +@       IN      NS      ns1.glp.internal.
-200     IN      PTR     ns1.lan. +
-201     IN      PTR     pi-stache.lan. +
-254     IN      PTR     gw.lan.+
  
 +1       IN      PTR     gateway.glp.internal.
 +15      IN      PTR     ns1.glp.internal.
 +20      IN      PTR     test.glp.internal.
 </file> </file>
  
 Vérifier la configuration et recharger les fichiers de configuration Vérifier la configuration et recharger les fichiers de configuration
 +
 <code bash> <code bash>
-root@kerberos:/etc/bindnamed-checkconf -z && service bind9 reload+named-checkzone 122.168.192.in-addr.arpa /etc/bind/db.reverse.glp.internal 
 + 
 +named-checkconf -z && systemctl reload named.service
 </code> </code>
  
Ligne 128: Ligne 246:
  
 <code bash> <code bash>
-yoann@hermes:~$ nslookup +nslookup 
 > set type=PTR > set type=PTR
 > 192.168.1.201 > 192.168.1.201
Ligne 139: Ligne 257:
  
 A propos de la RFC 1918 A propos de la RFC 1918
 +
 +
 +===== Utilisation du service par l’hôte =====
 +
 +:TODO_DOCUPDATE:
 +
 +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 :
 +
 +<code bash>
 +cat /etc/resolv.conf
 +</code>
 +
 +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 :
 +<code bash>
 +systemctl start named-resolvconf.service
 +
 +</code>
 +
 +
 +
 +===== Statistiques =====
 +
 +<note>
 +Les statistiques ne doivent pas être exposées sur une interface publique car elles peuvent fournir des informations importantes pouvant faciliter les attaques.
 +</note>
 +
 +Deux méthodes exposent les statistiques du serveur BIND :
 +  * le fichier ''named.stats'' ;
 +  * le serveur HTTP (recommandé).
 +
 +
 +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'' :
 +
 +<file>
 +statistics-channels { inet 127.0.0.1 port 8080 ; };
 +</file>
 +
 +Valider la syntaxe et relancer le service :
 +<code bash>
 +named-checkconf -z
 +systemctl reload named.service
 +</code>
 +
 +:TODO:
 +
 +  * voir paramètre ''query logging'' affiché par la commande **''rndc status''** ;
 +  * directive
 +
 +
 +<code bash>
 +rndc querylog on
 +</code>
  
 ===== Références ===== ===== Références =====
Ligne 145: Ligne 320:
   * http://www.linuxpedia.fr/doku.php/bind   * http://www.linuxpedia.fr/doku.php/bind
   * https://www.it-connect.fr/dns-avec-bind-9/   * https://www.it-connect.fr/dns-avec-bind-9/
 +  * [[https://www.it-connect.fr/linux-comment-configurer-un-serveur-dns-bind9-sur-un-reseau-deconnecte-dinternet/|Configurer BIND 9 comme résolveur sur un réseau local non connecté]]
 +  * [[https://blog.tips4tech.fr/creer-un-serveur-dns-avec-bind9/|Configurer un serveur DNS BIND (tips4tech.fr)]]
 +  * [[https://www.linuxbabe.com/debian/dns-resolver-debian-10-buster-bind9|Configurer bind9 comme resolveur DNS sous Debian10 (linuxbabe.com)(en)]]
 +  * [[https://kb.isc.org/docs/aa-00206|Désactiver IPv6 pour les requêtes récursives (isc.org) (en)]]
 +  * [[https://www.mybluelinux.com/bind-disabling-ipv6-responses-in-bind-dns-server/]]
 +  * [[https://philchen.com/2007/04/04/configuring-reverse-dns/|Configurer une zone inverse dans BIND9 (philchen.com) (en)]]
 +  * [[https://serverfault.com/questions/409190/how-to-properly-configure-bind-forward-zone-for-an-internal-dns-server#718162|Configurer un transfert pour une sous-zone du TLD "internal" (serverfault.com) (en) ]]
 +  * [[https://kb.isc.org/docs/monitoring-recommendations-for-bind-9|Recommandation pour la supervision d'une serveur BIND 9 (isc.org) (en)]]
 +  * [[https://access.redhat.com/solutions/477073|Accès aux statistiques du serveur DNS BIND (access.redhat.com) (en)]]
 +  * {{reversednspresentation.pdf|Configure reverse DNS in BIND}}
sysadmin/configurer-bind9.1761245733.txt.gz · Dernière modification : 2025/10/23 18:55 de yoann