{"id":145,"date":"2002-09-27T16:43:00","date_gmt":"2002-09-27T15:43:00","guid":{"rendered":"http:\/\/almin.tf\/blog\/?p=145"},"modified":"2026-01-24T01:18:35","modified_gmt":"2026-01-24T00:18:35","slug":"bind9","status":"publish","type":"post","link":"https:\/\/almic.fr\/blog\/2002\/09\/27\/bind9\/","title":{"rendered":"BIND 9"},"content":{"rendered":"<p style=\"text-align: justify;\">BIND, Berkeley Internet Name Domain, est un serveur de noms (DNS) utile \u00e0 plusieurs niveaux.<\/p>\n<ul style=\"text-align: justify;\">\n<li>Si vous disposez d\u2019une IP fixe, il peut g\u00e9rer un nom de domaine, r\u00e9serv\u00e9 par exemple sur <a href=\"http:\/\/eu.org\">EU.org<\/a>.<\/li>\n<li>Il peut servir de cache DNS, ce qui est utile quand vous voulez vider le cache sans attendre la propagation standard d\u2019un nom de domaine (<i>rndc flush<\/i> en root), ou pour \u00e9viter de subir les pannes des serveurs DNS de votre FAI.<\/li>\n<li>Il peut enregistrer les adresses des machines qui utilisent un m\u00eame r\u00e9seau local, pour avoir quelque chose de plus mn\u00e9motechnique, et \u00e9viter d&rsquo;avoir \u00e0 taper des adresses IP.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Ce tutoriel a \u00e9t\u00e9 tenu \u00e0 jour jusqu\u2019au <b>10 octobre 2014<\/b>.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">Les commandes pr\u00e9fix\u00e9es d\u2019un # sont \u00e0 lancer en root. Les commandes pr\u00e9fix\u00e9es d\u2019un % sont \u00e0 lancer en simple utilisateur.<\/p>\n<h2>Cache DNS et r\u00e9seau local<\/h2>\n<p>Tout d&rsquo;abord, il faut installer BIND :<\/p>\n<p><code># apt-get install bind9<\/code><\/p>\n<p>BIND est configur\u00e9 par d\u00e9faut pour faire cache DNS.<\/p>\n<h4>Le fichier de configuration global<\/h4>\n<p style=\"text-align: justify;\">On va lui ajouter de quoi faire la convertion IP \u2192 nom de machine pour le r\u00e9seau local. Les modifications effectu\u00e9es par l&rsquo;administrateur doivent aller dans le fichier <i>\/etc\/bind\/named.conf.local<\/i>. On va rajouter une zone \u00ab\u00a0lan\u00a0\u00bb.<\/p>\n<pre>zone \"lan\" {\n    type master;\n    file \"\/etc\/bind\/local\/lan\";\n};\n\nzone \"168.192.in-addr.arpa\" {\n    type master;\n    file \"\/etc\/bind\/local\/lan.inv\";\n};<\/pre>\n<h4>Le fichier de configuration secondaire, sp\u00e9cifique au r\u00e9seau local<\/h4>\n<p style=\"text-align: justify;\">Nous allons ensuite passer \u00e0 configuration du DNS pour le r\u00e9seau local, dans le fichier <i>\/etc\/bind\/local\/lan<\/i>. Il faut savoir que les noms de machines doivent se terminer par un point. \u00ab\u00a0machine.\u00a0\u00bb signifie \u00ab\u00a0machine\u00a0\u00bb, mais \u00ab\u00a0machine\u00a0\u00bb d\u00e9signe \u00ab\u00a0machine.mondomaine.fr\u00a0\u00bb.<\/p>\n<pre>$TTL    86400\n\n@       IN      SOA    serveur. root.serveur. (\n    1\n    8H\n    2H\n    1W\n    1D\n)\n \n@           IN  NS      serveur.\n@           IN  A       192.168.0.254\n \nposte1          A       192.168.0.1\nposte2          A       192.168.0.2\nposte3          A       192.168.0.3\nposte4          A       192.168.0.4\nposte5          A       192.168.0.5\nposte6          A       192.168.0.6\nposte7          A       192.168.0.7\nposte8          A       192.168.0.8\n\nwebcache        CNAME   serveur<\/pre>\n<p>Cette partie demande quelques explications :<\/p>\n<ul style=\"text-align: justify;\">\n<li>TTL signifie \u00ab Time To Live \u00bb, la dur\u00e9e de vie des informations dans le cache des autres serveurs DNS. C&rsquo;est une dur\u00e9e exprim\u00e9e en secondes et elle repr\u00e9sente ici une journ\u00e9e.<\/li>\n<li>Dans la deuxi\u00e8me ligne on retrouve l&rsquo;h\u00f4te ou tourne le serveur de nom et l&#8217;email de l&rsquo;administrateur r\u00e9seau : \u00ab\u00a0root.localhost.\u00a0\u00bb \u2014 il faut remplacer le @ par un \u00ab\u00a0.\u00a0\u00bb.<\/li>\n<li>On a ensuite le num\u00e9ro de s\u00e9rie caract\u00e9risant la modification que l&rsquo;on est en train de faire. Dans le cas d&rsquo;un serveur ma\u00eetre qui r\u00e9percutera \u00e0 des esclaves, ce num\u00e9ro est l\u00e0 pour indiquer \u00e0 ces derniers qu&rsquo;ils doivent se mettre \u00e0 jour. Ici c\u2019est inutile, puisqu\u2019il s\u2019agit d\u2019une zone locale.<\/li>\n<li>Les 3 lignes suivantes sont d\u00e9nomm\u00e9es \u00ab\u00a0Refresh\u00a0\u00bb, \u00ab\u00a0Retry\u00a0\u00bb et \u00ab\u00a0Expire\u00a0\u00bb. \u00c0 l&rsquo;expiration du d\u00e9lai Refresh, un serveur esclave tentera de contacter son maitre. S&rsquo;il ne le trouve pas, il fera une nouvelle tentative au bout du d\u00e9lai Retry. Au bout du d\u00e9lai Expire, il consid\u00e9rera que son ma\u00eetre n&rsquo;est plus disponible.<\/li>\n<li>Ensuite nous avons la dur\u00e9e de vie minimum du cache.<\/li>\n<li>Nous indiquons apr\u00e8s quel h\u00f4te est le serveur de noms du domaine (\u00ab NS pour Name Server \u00bb).<\/li>\n<li>On passe ensuite \u00e0 la d\u00e9finition entre les noms d&rsquo;h\u00f4tes et leurs IP.<\/li>\n<li>On peut ajouter des alias entre noms d&rsquo;h\u00f4tes en utilisant CNAME, en pla\u00e7ant \u00e0 gauche le nouvel alias et \u00e0 droite le nom ayant \u00e9t\u00e9 d\u00e9fini sur une ligne A.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Pour v\u00e9rifier que vous n&rsquo;avez pas fait d&rsquo;erreur, utiliser la commande suivante :<\/p>\n<p><code>% \/usr\/sbin\/named-checkzone lan \/etc\/bind\/local\/lan<br \/>\nzone lan\/IN: loaded serial 1<br \/>\nOK<\/code><\/p>\n<h4>La r\u00e9solution inverse<\/h4>\n<p style=\"text-align: justify;\">Cr\u00e9ez le fichier <i>\/etc\/bind\/local\/lan.inv<\/i>.<\/p>\n<pre>$TTL    604800\n\n@       IN      SOA     serveur. root.serveur. (\n    1\n    8H\n    2H\n    1W\n    1D\n)\n\n@       IN  NS      serveur.\n\n254       PTR     serveur.lan.\n1         PTR     poste1.lan.\n2         PTR     poste2.lan.\n3         PTR     poste3.lan.\n4         PTR     poste4.lan.\n5         PTR     poste5.lan.\n6         PTR     poste6.lan.\n7         PTR     poste7.lan.\n8         PTR     poste8.lan.<\/pre>\n<h4>V\u00e9rification<\/h4>\n<p style=\"text-align: justify;\">Pour v\u00e9rifier que vous n&rsquo;avez pas fait d&rsquo;erreur, vous pouvez utiliser la commande suivante :<\/p>\n<p><code>% \/usr\/sbin\/named-checkconf<\/code><\/p>\n<p style=\"text-align: justify;\">Si elle ne renvoie rien, c&rsquo;est que le fichier de configuration global est valide.<\/p>\n<p>Ensuite lancez la commande suivante :<\/p>\n<p><code># service bind9 reload<\/code><\/p>\n<p style=\"text-align: justify;\">Il vaut mieux utiliser reload que restart, pour \u00e9viter de vider le cache de BIND. V\u00e9rifiez que tout s&rsquo;est bien pass\u00e9 en inspectant les logs.<\/p>\n<p><code>% tail -n 20 \/var\/log\/syslog<\/code><\/p>\n<p style=\"text-align: justify;\">Vous devriez voir appara\u00eetre \u00e0 la fin quelque chose comme\u00a0:<\/p>\n<p><code>Jan 30 01:11:54 serveur named[13221]: zone localhost\/IN: loaded serial 1<br \/>\nJan 30 01:11:54 serveur named[13221]: running<br \/>\nJan 30 01:11:54 serveur named[13221]: zone 168.192.in-addr.arpa\/IN: sending notifies (serial 1)<\/code><\/p>\n<p>Cela signifie que BIND est lanc\u00e9.<\/p>\n<p style=\"text-align: justify;\">Vous devriez pouvoir faire un ping sur les machines de votre r\u00e9seau local, ainsi que des h\u00f4tes ext\u00e9rieurs sur Internet.<\/p>\n<h4>Int\u00e9grer le serveur DNS au syst\u00e8me<\/h4>\n<p style=\"text-align: justify;\">Il ne reste plus qu&rsquo;\u00e0 \u00e9diter le fichier <i>\/etc\/resolv.conf<\/i>, pour utiliser le serveur que l&rsquo;on vient d&rsquo;installer :<\/p>\n<p><code>search lan<br \/>\nnameserver IP_SERVEUR<\/code><\/p>\n<p style=\"text-align: justify;\">Au cas o\u00f9, assurez-vous que votre <i>\/etc\/hosts.conf<\/i> est bien de la forme :<\/p>\n<p><code>order hosts,bind<br \/>\nmulti on<\/code><\/p>\n<h4>Conflit avec DHCP qui r\u00e9\u00e9crit \/etc\/resolv.conf<\/h4>\n<p style=\"text-align: justify;\">Si vous utilisez le DHCP, et que vos machines ont un client DCHP avec une configuration standard, ce dernier peut \u00e9craser le contenu de <i>\/etc\/resolv.conf<\/i> \u00e0 chaque lancement. Pour \u00e9viter ce comportement avec dhcp3-client, cr\u00e9er le fichier <i>\/etc\/dhcp3\/dhclient-enter-hooks.d\/resolv<\/i> :<\/p>\n<pre>make_resolv_conf() {\n        echo \"Nothing to do for \/etc\/resolv.conf\"\n}<\/pre>\n<h2>Gestion d&rsquo;un nom de domaine EU.org<\/h2>\n<h4>Retour au fichier de configuration global<\/h4>\n<p style=\"text-align: justify;\">\u00c9ditez \u00e0 nouveau <i>\/etc\/bind\/named.conf.local<\/i> pour y rajouter :<\/p>\n<pre>acl \"ns_secondaire\" {\n    IP_NS_SECONDAIRE;\n};\n \nzone \"domaine.fr.eu.org\" {\n    type master;\n    file \"\/etc\/bind\/masters\/domaine.fr.eu.org\";\n    allow-transfer { \"ns_secondaire\"; };\n    allow-query { any; };\n};<\/pre>\n<p style=\"text-align: justify;\">Voir plus bas pour la configuration d\u2019un serveur secondaire. Si vous n\u2019avez pas de deuxi\u00e8me serveur disponible, et si personne dans votre entourage ne peut faire NS secondaire, vous pouvez regarder du c\u00f4t\u00e9 de <a href=\"http:\/\/zoneedit.com\">zoneedit<\/a>.<\/p>\n<h4>Le fichier de zone<\/h4>\n<p style=\"text-align: justify;\">Il faut le cr\u00e9er, par exemple <i>\/etc\/bind\/masters\/domaine.fr.eu.org<\/i>.<\/p>\n<pre>$TTL 86400      ; 1 day\n \ndomaine.fr.eu.org.   IN  SOA ns.domaine.fr.eu.org. EMAIL. (\n    2006091001  ; serial\n    3H          ; refresh\n    1H          ; retry\n    1W          ; expire\n    3H          ; minimum\n)\n \n@         NS      ns.domaine.fr.eu.org.\n@         NS      ns_secondaire.\n \n@     IN  MX  10  ns.domaine.fr.eu.org.\n \n@         A       IP_NS_PRIMAIRE\nns        A       IP_NS_PRIMAIRE\nwww       CNAME   ns\nwebmail   CNAME   ns<\/pre>\n<h4>V\u00e9rification<\/h4>\n<p style=\"text-align: justify;\">Utilisez les commandes <i>\/usr\/sbin\/named-checkconf<\/i> et <i>\/usr\/sbin\/named-checkzone<\/i> pour v\u00e9rifier votre configuration. Une fois que tout est bon, dites \u00e0 BIND de prendre en compte vos modifications.<\/p>\n<p><code># service bind9 reload<\/code><\/p>\n<p style=\"text-align: justify;\">Pour finir, n&rsquo;oubliez pas d&rsquo;ouvrir le port 53 en TCP et en UDP si vous avez un firewall.<\/p>\n<h4>Serveur secondaire pour une zone<\/h4>\n<p style=\"text-align: justify;\">Voil\u00e0 un exemple de la configuration d\u2019un serveur en secondaire pour \u00ab\u00a0domaine.fr.eu.org\u00a0\u00bb. Dans <i>\/etc\/bind\/named.conf.local<\/i> rajoutez :<\/p>\n<pre>zone \"domaine.fr.eu.org\" {\n    type slave;\n    file \"\/etc\/bind\/slaves\/domaine.fr.eu.org\";\n    masters { IP_NS_PRIMAIRE; };\n};<\/pre>\n<p style=\"text-align: justify;\">Vous devez cr\u00e9er le r\u00e9pertoire <i>\/etc\/bind\/slaves\/<\/i>. Le fichier <i>\/etc\/bind\/slaves\/domaine.fr.eu.org<\/i> sera cr\u00e9\u00e9 et g\u00e9r\u00e9 par BIND, c&rsquo;est l&rsquo;endroit o\u00f9 sera copi\u00e9e la zone re\u00e7ue du serveur primaire.<\/p>\n<p style=\"text-align: justify;\">Ensuite on demande \u00e0 BIND de recharger sa configuration (sur le secondaire) :<\/p>\n<p><code># service bind9 reload<\/code><\/p>\n<p style=\"text-align: justify;\">En voulant ajouter une zone sur un secondaire, j\u2019ai d\u00e9j\u00e0 \u00e9t\u00e9 confront\u00e9 \u00e0 ce message d\u2019erreur dans les logs :<\/p>\n<p><code>[Jour] [Heure] [Hostname] named[5993]: client IP#PORT: received notify for zone 'domain.tld': not authoritative<\/code><\/p>\n<p style=\"text-align: justify;\">Apr\u00e8s avoir lanc\u00e9 les commandes <i>named-checkconf<\/i> et <i>named-checkzone<\/i> sur le primaire pour s\u2019assurer qu\u2019il n\u2019y a pas une typo quelque part, j\u2019ai demand\u00e9 au primaire de renotifier la zone :<\/p>\n<p><code># rndc notify domain.tld<\/code><\/p>\n<p>Mais le message d\u2019erreur \u00e9tait toujours l\u00e0, et le fichier n\u2019\u00e9tait pas cr\u00e9\u00e9 dans <i>\/etc\/bind\/slaves\/<\/i>. En fait, la commande <i>service bind9 reload<\/i> n\u2019avait pas suffit, j\u2019ai d\u00fb faire sur le secondaire :<\/p>\n<p><code># service bind9 stop<br \/>\n# service bind9 start<\/code><\/p>\n<h4>R\u00e9servation du nom de domaine<\/h4>\n<p style=\"text-align: justify;\">Maintenant que votre serveur DNS est fonctionnel, vous \u00eates fin pr\u00eat \u00e0 aller sur le <a href=\"http:\/\/www.eu.org\/form_n.html\">formulaire de cr\u00e9ation<\/a> sur EU.org. Vous y remplirez les champs :<\/p>\n<ul type=\"circle\" style=\"text-align: justify;\">\n<li>Mandatory email address ;<\/li>\n<li>Organization ;<\/li>\n<li>Administrative contact ;<\/li>\n<li>Pas le \u00ab Technical contact \u00bb<\/li>\n<li>Type of resource record: NS<\/li>\n<li>NS primaire (votre serveur) : le nom de domaine que vous voulez r\u00e9server suivi de l&rsquo;adresse IP du serveur ;<\/li>\n<li>Au moins un NS secondaire, avec le nom du domaine et l&rsquo;adresse IP du serveur.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">Il ne reste plus qu&rsquo;\u00e0 attendre la validation par les administrateurs d&rsquo;EU.org. Elle est manuelle, \u00e7a peut donc prendre un moment.<\/p>\n<h4>Prot\u00e9ger l&rsquo;acc\u00e8s \u00e0 votre serveur DNS<\/h4>\n<p style=\"text-align: justify;\">En l&rsquo;\u00e9tat, tout le monde peut se servir de votre serveur DNS. Ce dernier n\u2019a aucun int\u00e9r\u00eat par rapport \u00e0 celui d&rsquo;un FAI, mais autant prot\u00e9ger son acc\u00e8s.<\/p>\n<p style=\"text-align: justify;\">Dans <i>\/etc\/bind\/named.conf.local<\/i> rajoutez :<\/p>\n<pre>acl \"lan\" {\n     192.168.0.0\/16;\n};<\/pre>\n<p style=\"text-align: justify;\">Ensuite dans <i>\/etc\/bind\/named.conf.options<\/i> \u00e0 la fin du bloc options{} rajoutez :<\/p>\n<pre>allow-recursion {\n     \"lan\";\n     127.0.0.1\/8;\n     IP_PUBLIQUE\/32;\n};<\/pre>\n<h4>Le probl\u00e8me des lame-server qui envahissent les logs<\/h4>\n<p style=\"text-align: justify;\">\u00c0 cause de la mauvaise configuration de certains serveurs DNS, vous risquez de voir vos logs envahis par des choses du genre :<\/p>\n<p><code>Sep 10 00:58:02 serveur named[12588]: lame server resolving 'dns3.hull.ac.uk' (in 'hull.ac.UK'?): 149.170.39.92#53<br \/>\nSep 10 01:17:14 serveur named[29842]: lame server resolving 'www.ledvdclub.com' (in 'ledvdclub.COM'?): 194.150.236.5#53<\/code><\/p>\n<p style=\"text-align: justify;\">Pour \u00e9viter \u00e7a, vous pouvez ajouter ceci dans <i>\/etc\/bind\/named.conf.local<\/i> :<\/p>\n<pre>logging {\n    category lame-servers{ null; };\n};<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>BIND, Berkeley Internet Name Domain, est un serveur de noms (DNS) utile \u00e0 plusieurs niveaux. Si vous disposez d\u2019une IP fixe, il peut g\u00e9rer un nom de domaine, r\u00e9serv\u00e9 par exemple sur EU.org. Il peut servir de cache DNS, ce qui est utile quand vous voulez vider le cache sans attendre la propagation standard d\u2019un&hellip; <a class=\"continue\" href=\"https:\/\/almic.fr\/blog\/2002\/09\/27\/bind9\/\">Continue Reading BIND 9<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-145","post","type-post","status-publish","format-standard","hentry","category-hebergement","radius"],"_links":{"self":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":47,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":771,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/posts\/145\/revisions\/771"}],"wp:attachment":[{"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/media?parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/categories?post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/almic.fr\/blog\/wp-json\/wp\/v2\/tags?post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}