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/24 08:20] yoannsysadmin:configurer-bind9 [2026/08/03 05:47] (Version actuelle) yoann
Ligne 1: Ligne 1:
 {{tag>sysadmin netadmin linux dns bind}} {{tag>sysadmin netadmin linux dns bind}}
  
-======= Configurer bind9 ======+======= Configurer BIND9 ======
  
 Installation du serveur de résolution de nom ISC BIND((Berkeley Internet Name Domain)). 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.+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 ===== 
  
 <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 racines. 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
  
-bind va être configuré en tant que serveur maître sur la zone **internal.** C'est lui qui fera autorité sur cette zone.+<code bash> 
 +systemclt restart named.service 
 +</code>
  
-Modifier le fichier de configuration ''**/etc/bind/named.conf.local**'' afin de déclarer la zone internal.+===== Créer une 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 ''glp.internal.''
  
 <file> <file>
-zone "internal"+zone "glp.internal"
         type master;          type master; 
-        file "/etc/bind/db.internal"; +        file "/etc/bind/db.glp.internal"; 
         allow-update { none; };         allow-update { none; };
 }; };
Ligne 48: 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.internal**'' contiendra la définition de la zone internal. 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.internal+touch db.glp.internal
 </code> </code>
  
Ligne 59: Ligne 178:
 ; ;
 $TTL    604800 $TTL    604800
-@       IN      SOA     ns.internal. contact.internal. ( +@       IN      SOA     ns1.glp.internal. contact.glp.internal. ( 
-                                      ; Serial+                                      ; Serial
                          604800         ; Refresh                          604800         ; Refresh
                           86400         ; Retry                           86400         ; Retry
Ligne 66: Ligne 185:
                          604800 )       ; Negative Cache TTL                          604800 )       ; Negative Cache TTL
 ; ;
-@        IN      NS      ns1.internal.+@        IN      NS      ns1.glp.internal. 
 +
 +gateway  IN      A       192.168.1.1
 ns1      IN      A       192.168.1.15 ns1      IN      A       192.168.1.15
-gateway  IN      A       192.168.1.1+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 =====
Ligne 85: Ligne 200:
 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.reverse.internal";+        allow-update { none; };
 }; };
 </file> </file>
Ligne 103: Ligne 219:
 ; ;
 $TTL    604800 $TTL    604800
-@       IN      SOA     ns1.lan. admin.lan. (+@       IN      SOA     ns1.glp.internal. admin.glp.internal. (
                               1         ; Serial                               1         ; Serial
                          604800         ; Refresh                          604800         ; Refresh
Ligne 109: Ligne 225:
                         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>
 named-checkzone 122.168.192.in-addr.arpa /etc/bind/db.reverse.glp.internal named-checkzone 122.168.192.in-addr.arpa /etc/bind/db.reverse.glp.internal
Ligne 142: 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 148: 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.1761294036.txt.gz · Dernière modification : 2025/10/24 08:20 de yoann