User Tools

Site Tools


informatique:logiciels:bind

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
informatique:logiciels:bind [2018/01/31 08:54] – créée pteuinformatique:logiciels:bind [2022/10/10 08:42] (current) – [Consulter les stats] rndc stats pteu
Line 1: Line 1:
 ======Bind====== ======Bind======
  
-bind est un serveur DNS libre.+bind est un serveur DNS libre. Il peut fonctionner indifféremment comme résolveur (il résout les requêtes qui lui sont envoyées) ou serveur faisant autorité (il gère les enregistrements d'une domaine). 
 + 
 + 
 +=====A propos du DNS===== 
 + 
 +Liste des TLDs (Top-Level Domains) valides : [[https://data.iana.org/TLD/tlds-alpha-by-domain.txt|tlds-alpha-by-domain.txt]] (maintenu par l'IANA), page Wikipedia : [[https://fr.wikipedia.org/wiki/Liste_des_domaines_Internet_de_premier_niveau|Liste des domaines Internet de premier niveau]]
  
  
 =====Installation===== =====Installation=====
  
-C'est du grand classique sous Debian :+C'est du grand classique sous Debian :
 <code bash> <code bash>
 aptitude install bind9 aptitude install bind9
Line 16: Line 21:
 =====Fichiers de conf===== =====Fichiers de conf=====
  
-  * **named.conf** : C'est le fichier de conf principal, il se trouve donc dans la racine de bind càd dans ''/etc/bind/''. Avec le paquet de Debian 8 (1:9.9.5.dfsg-9+deb8u4) il ne contient que des include d'autres fichiers de conf. +  * **named.conf** : C'est le fichier de conf principal, il se trouve donc dans la racine de bind càd dans ''/etc/bind/''. Avec le paquet de Debian 8 (1:9.9.5.dfsg-9+deb8u4 actuellement) il ne contient que des include d'autres fichiers de conf : 
-  * **named.conf.options** : contient les paramètres de la directive ''options {}'' +    * **named.conf.options** : contient les paramètres de la directive ''options {}'' 
-  * **named.conf.local** : comme toujours pour les fichiers ''*.conf.local'' c'est ici que vous devez ajouter votre configuration car c'est un fichier qui ne sera pas écrasé par les mises à jour du paquet.+    * **named.conf.local** : comme toujours pour les fichiers ''*.conf.local'' c'est ici que vous devez ajouter votre configuration car c'est un fichier qui ne sera pas écrasé par les mises à jour du paquet
 +    * **named.conf.log** : contient la configuration de la journalisation de bind. Elle est suffisamment configurable pour justifier un fichier à elle seule ! 
 + 
 + 
 +======Configuration====== 
 + 
 +<WRAP center round important 60%> 
 +Par soucis de sécurité, il n'est pas recommandé, bien que techniquement possible, de configurer bind en tant que résolveur ET serveur DNS faisant autorité. 
 +</WRAP> 
 + 
 + 
 +=====En tant que résolveur===== 
 + 
 +Comme indiqué plus haut, bind peut être configuré en tant que **résolveur** ; il servira alors à résoudre les demandes de résolution de machines clientes, mais ne contient aucun enregistrement. Il conserve cependant les résultats de ses précédentes requêtes dans un cache pour une durée déterminée par sa configuration ou le TTL de ceux-ci. 
 + 
 +<code bash> 
 +// déclaration d'une plage d'IP pour le réseau local 
 +acl LAN { 192.168.0.0/24; }; 
 + 
 +options { 
 +   // on ne veut répondre qu''aux IPs du réseau local (et localhost) 
 +   allow-query { 127.0.0.1; LAN; }; 
 +   // seul notre LAN peut requêter notre cache DNS 
 +   allow-query-cache { 127.0.0.1; LAN; }; 
 +   // résolutions récursives ? 
 +   recursion yes; 
 +   allow-recursion { 127.0.0.1; LAN; }; 
 + 
 +   listen-on-v6 { none; };   # désactive l'IPv6 
 +    
 +   // optionnel : si on veut décharger la résolution récursive à d'autres serveurs 
 +   // comme celui d'un FAI par exemple (ici ceux de Free) 
 +   //forwarders { 
 +   //   212.27.40.240; 
 +   //   212.27.40.241; 
 +   //}; 
 +}; 
 +</code> 
 + 
 + 
 +=====En DNS faisant autorité===== 
 + 
 +Bind peut également être configuré en serveur de nom **faisant autorité (authoritative)**. Cela signifie qu'il contient la liste des enregistrements d'une zone dont il a la charge. Il communique ces informations soit aux résolveurs DNS, soit via des transfert de zone dans le cas de multiples serveurs. L'exemple suivant consiste à configurer la zone toto.
  
 Par convention on déclarera les zones dans ''named.conf.local'' ; les enregistrements de ces zones seront définis dans des fichiers spécifiques. Par convention on déclarera les zones dans ''named.conf.local'' ; les enregistrements de ces zones seront définis dans des fichiers spécifiques.
Line 28: Line 75:
   allow-update { none; };   allow-update { none; };
 }; };
 +
 # résolution inverse # résolution inverse
 zone "0.168.192.in-addr.arpa" { zone "0.168.192.in-addr.arpa" {
Line 36: Line 84:
 </code> </code>
  
-Ici les tables de résolution DNS sont disposées dans des fichiers unitaires, dans le dossier spécifié par la directive ''directory "/var/cache/bind";'' (sous debian), dans **named.conf.options**.+Les tables des enregistrements DNS sont disposées dans des fichiers unitaires, dans le dossier spécifié par la directive ''directory "/var/cache/bind";''
 + 
 +====Enregistrements de la zone==== 
 + 
 +Ce fichier contient les enregistrements de la zone toto ; il sert à résoudre un nom en une adresse IP (titi.toto -> 192.168.0.2).
  
-====db.toto==== 
 ''/var/cache/bind/db.toto'' : ''/var/cache/bind/db.toto'' :
-  ; zone .toto +<code bash> 
-  $TTL  604800 +; zone .toto 
-  @ IN  SOA ns.toto. root.toto. ( ;DNS et mail de l'admin de la zone +$TTL  604800 
-    2008071602  ; Serial +@ IN  SOA ns.toto. root.toto. ( ;DNS et mail de l''admin de la zone 
-    8H          ; Refresh +  2008071602  ; Serial 
-    2H          ; Retry +  8H          ; Refresh 
-    1000H       ; Expire +  2H          ; Retry 
-    2D )        ; Negative Cache TTL +  1000H       ; Expire 
-  +  2D )        ; Negative Cache TTL 
-  @ IN NS ns ; serveur DNS de la zone +
-  ;@ IN MX 10 mail ; serveur de mail primaire (priorite minimale) +@ IN NS ns ; serveur DNS de la zone 
-  ;@ IN MX 20 mail2 ; serveur de mail secondaire +;@ IN MX 10 mail ; serveur de mail primaire (priorite minimale) 
-  titi       IN A 192.168.0.2 +;@ IN MX 20 mail2 ; serveur de mail secondaire 
-  ; alias +titi       IN A 192.168.0.2 
-  ns    IN CNAME titi+; alias 
 +ns    IN CNAME titi 
 +</code>
  
 +====Résolution inverse====
  
-====db.192.168.0====+Ce fichier contient les enregistrement inverses, qui servent à résoudre une IP en nom (192.168.0.2 -> titi.toto).
 ''/var/cache/bind/db.192.168.0'' ''/var/cache/bind/db.192.168.0''
-  ; zone inverse .toto +<code bash> 
-  $TTL  604800 +; zone inverse .toto 
-  @ IN  SOA ns.toto. root.toto. ( +$TTL  604800 
-    2         ; Serial +@ IN  SOA ns.toto. root.toto. ( 
-    604800    ; Refresh +  2         ; Serial 
-    86400     ; Retry +  604800    ; Refresh 
-    2419200   ; Expire +  86400     ; Retry 
-    604800 )  ; Negative Cache TTL +  2419200   ; Expire 
-  @ IN NS titi. +  604800 )  ; Negative Cache TTL 
-  2 IN PTR titi +@ IN NS titi. 
 +2 IN PTR titi 
 +</code>
  
 =====Validation===== =====Validation=====
Line 78: Line 133:
 </code> </code>
  
-Pour valider la configuration zone ".toto" :+Pour valider la configuration de la zone ".toto" :
 <code bash> <code bash>
 named-checkzone toto. /var/cache/bind/db.toto named-checkzone toto. /var/cache/bind/db.toto
Line 95: Line 150:
  
  
 +=====Manipuler le cache=====
  
-=====Problèmes rencontrés=====+Pour consulter le cache DNS de bind, il faut le dumper : 
 +<code bash> 
 +rndc dumpdb -cache 
 +</code> 
 + 
 +Le dump est enregistré dans le fichier texte ''/var/cache/bind/named_dump.db'' (sous Debian en tout cas). 
 + 
 +Pour vider le cache : 
 +<code bash> 
 +rndc flush 
 +rndc reload 
 +</code> 
 + 
 + 
 +=====Consulter les stats===== 
 + 
 +Il faut générer le fichier de stats avec la commande : 
 +<code bash> 
 +rndc stats 
 +</code> 
 + 
 +On peut ensuite les consulter dans le fichier **/var/named/data/named_stats.txt** (par défaut) 
 + 
 +=====Vues===== 
 + 
 +ref : https://kb.isc.org/docs/aa-00851 
 + 
 +======Problèmes rencontrés======
  
-====rndc====+=====rndc=====
  
 Après la mise en place d'un second LAN, mon serveur DNS refusait les requêtes émises par les machines du nouveau LAN qui ne sont pas dans le même adressage que lui. Après la mise en place d'un second LAN, mon serveur DNS refusait les requêtes émises par les machines du nouveau LAN qui ne sont pas dans le même adressage que lui.
Line 141: Line 224:
 Si ''rndc reload'' renvoie une erreur et qu'il n'est plus possible de faire un ''/etc/init.d/bind9 stop'', il faut killer le serveur bind puis le relancer. Et **là** il prend en compte la conf. Si ''rndc reload'' renvoie une erreur et qu'il n'est plus possible de faire un ''/etc/init.d/bind9 stop'', il faut killer le serveur bind puis le relancer. Et **là** il prend en compte la conf.
  
-====NS has no address records (A or AAAA)====+=====NS has no address records (A or AAAA)=====
  
 Lors du chargement de ma zone inverse j'ai eu le message d'erreur : ''zone 0.168.192.in-addr.arpa/IN: NS 'ns.0.168.192.in-addr.arpa' has no address records (A or AAAA)''. Le problème venait de la ligne de la déclaration inverse du NS (dans ''db.192.168.0'') à laquelle il manquait le point en fin de nom (titi) : Lors du chargement de ma zone inverse j'ai eu le message d'erreur : ''zone 0.168.192.in-addr.arpa/IN: NS 'ns.0.168.192.in-addr.arpa' has no address records (A or AAAA)''. Le problème venait de la ligne de la déclaration inverse du NS (dans ''db.192.168.0'') à laquelle il manquait le point en fin de nom (titi) :
Line 153: Line 236:
 </code> </code>
  
-=====Liens=====+======Tips====== 
 + 
 +=====Forcer l'update d'une zone===== 
 + 
 +Pour force un serveur DNS slave à recharger une zone existante (ex : domain.tld), lorsque ses enregistrements ont un TTL trop long , il existe plusieurs méthodes : 
 +<code bash> 
 +# (Schedules an immediate refresh for the specified zone (i.e., an SOA query to the zone's master) 
 +rndc refresh domain.tld 
 + 
 +# (reloads the nameserver ; can specify some domain names or zones in args) 
 +rndc reload domain.tld 
 + 
 +# (Immediately retransfers the specified zone without checking the serial number) 
 +rndc retransfer domain.tld 
 +</code> 
 + 
 +La zone entière est alors intégralement mise à jour (transférée) depuis le master DNS. 
 + 
 +NB : Si on utilise des vues, il faut ajouter ''IN <view_name>'', par exemple pour reload la vue //external//
 +<code bash> 
 +rndc reload domain.tld IN external 
 +</code> 
 + 
 +Pour prendre en compte une nouvelle zone : 
 +<code bash> 
 +rndc reconfig 
 +</code> 
 +======Liens======
  
   * http://www.linux-france.org/article/memo/dns/ [[http://www.linux-france.org/article/memo/dns.old/dns.html (ancienne version)]]   * http://www.linux-france.org/article/memo/dns/ [[http://www.linux-france.org/article/memo/dns.old/dns.html (ancienne version)]]
   * http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/s1-bind-configuration.html   * http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/s1-bind-configuration.html
   * http://www.morot.fr/spip.php?article1   * http://www.morot.fr/spip.php?article1
 +  * liste des options du named.conf : https://www.zytrax.com/books/dns/ch7/statements.html
informatique/logiciels/bind.1517388866.txt.gz · Last modified: 2018/01/31 08:54 by pteu