Installation et configuration d'un serveur Bind9 primaire (Master)

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

BIND (Berkeley Internet Name Domain) est le serveur DNS le plus utilisé sur Internet, spécialement sur les systèmes de type Unix. Il est présentement maintenu par Internet Systems Consortium.

Une nouvelle version de BIND (BIND 9) a été réécrite afin de résoudre certains problèmes architecturaux du code initial et d'ajouter le support de DNSSEC (DNS Security Extensions).

2 Installation

Pour installer Bind9, c'est assez simple :

Command apt-get
aptitude install bind9 dnsutils

Sur OpenBSD, bind est installé de base.

3 Configuration

3.1 host.conf

Voici comment configurer le fichier /etc/host.conf :

Configuration File /etc/host.conf
order hosts,bind
multi on

Nous venons donc dire ici qu'il faut d'abord regarder dans le fichier host et ensuite dans Bind quand des requêtes son effectuées depuis le serveur.

Note : pas besoin de cette modification pour OpenBSD

3.2 rndc.conf

3.2.1 Introduction aux clefs TSIG

Les signatures de transaction ("TSIG", transaction signatures) constituent une forme plus simple de sécurité DNS. Elles utilisent des fonctions de hachage cryptographique pour générer des pseudo-signatures de paquets DNS. La valeur de hachage est une combinaison des données DNS réelles, d'horodates pour éviter des attaques de type "réexécution" et d'un secret partagé entre le client et le serveur. Etant donné que les deux entités intervenant dans la recherche DNS doivent connaître le secret partagé, les signatures TSIG ne peuvent vraiment être mises en oeuvre que dans des environnements où les systèmes sont sous contrôle administratif commun et où la confidentialité du secret partagé peut absolument être garantie. Dans le cas d'ENUM, cela signifie qu'elles peuvent et doivent être utilisées parmi les serveurs de noms de niveau 0 ENUM. Elles peuvent par exemple être utilisées pour valider les transferts de zone ou les demandes de mise à jour dynamique, ces fonctions étant restreintes aux clients supposés de confiance car ils connaissent le secret partagé.

3.2.2 Création d'une clef TSIG

Si vous êtes sour OpenBSD, nous allons nous simplifier un peu la vie, et pour que ce tuto ai les mêmes chemins partout, nous allons créer un lien symbolique :

Command ln
ln -s /var/named/etc /etc/bind

Nous allons générer une clef TSIG :

Command dnssec-keygen
cd /etc/bind
dnssec-keygen -a hmac-md5 -b 512 -n HOST simba

  • Remplacez le nombre de bits par ce que vous souhaitez et mettez votre nom d'hôte.
  • Remplacez simba par le nom de votre serveur sur lequel est installé Bind.

Une fois générer (ceci peut prendre quelques minutes), vous vous retrouvez avec 2 fichiers :

  • La clef qu'il faut déplacer dans le dossier de bind.
  • Le fichier rndc.conf à créer.

Voici mes 2 fichiers générés :

  • Ksimba.+157+18808.key
  • Ksimba.+157+18808.private

Déplacons dans un premier temps la clef et affectons lui les bons droits :

Command
mv Ksimba.+157+18808.key /etc/bind/rndc.key
chmod 640 /etc/bind/rndc.key

Debian :

chown root:bind /etc/bind/rndc.key

OpenBSD :

chown root:named /etc/bind/rndc.key

Si j'affiche le contenu de l'autre fichier, j'ai la clef qui va s'afficher (celle qui va servir à renseigner les fichiers suivants) :

Command cat
$ cat Ksimba.+157+18808.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: a4fGtm0fB4zO+4KfqH/zNZ3nPq+ThM5yUCEE7AqzEVI=
Bits: AAA=

Ensuite créons le fichier /etc/bind/rndc.conf et insérons la clef :

Configuration File /etc/bind/rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "a4fGtm0fB4zO+4KfqH/zNZ3nPq+ThM5yUCEE7AqzEVI=";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};

3.3 named.conf

Configuration File /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
 
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

3.4 named.conf.local

La section acl permet de définir les listes d'accès réutilisables dans d'autres sections du fichier de configuration. La définition suivante permet de définir les clients internes :

Configuration File /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

// Acl definition

acl "zoneinterne" {
        // Plage d'IP autorisée a faire des requetes DNS
        192.168.0.0/24;
        10.8.0.0/24;
        127.0.0.1;
};

acl "srvsecondaires" {
        // Mon serveur secondaire
        x.x.x.x;
        // Gandi (qui propose un dns secondaire)
        217.70.177.40;
};

Définissons toute la partie de logs :

Configuration File /etc/bind/named.conf.local
// Logs
 
logging {
        channel xfer-log {
                file "/var/log/bind.log";
                print-category yes;
                print-severity yes;
                print-time yes;
                severity info;
        };  
        category xfer-in { xfer-log; };
        category xfer-out { xfer-log; };
        category notify { xfer-log; };
};

Ajoutons un peu de sécurité pour limiter l'administration à distance. Si vous souhaitez ne rien autoriser, mettez la section controls vide :

Configuration File /etc/bind/named.conf.local
// TSIG Security | RNDC Key

key "rndc-key" {
      algorithm hmac-md5;
      secret "a4fGtm0fB4zO+4KfqH/zNZ3nPq+ThM5yUCEE7AqzEVI=";
};

controls {
      inet 127.0.0.1 port 953
              allow { 127.0.0.1; "srvsecondaires"; } keys { "rndc-key"; };
};

3.5 named.conf.default-zones

Idéalement, construisez un fichier de zone/vue (à inclure dans named.conf pour chacune de vos zones). Mais pour un soucis de simplicité, nous allons tout laisser dans le même ici.

Les sections view définissent des comportements du serveur sur la base de l'adresse IP du client qui envoie la requête, permettant de différencier les réponses DNS. On définit ainsi deux vues :

  • une correspondant aux clients de la zone interne et DMZ : il faut réactiver la récursion pour ces requêtes, ainsi que permettre de résoudre tous les noms possible (zone ".").
  • une autre correspondant aux requêtes en provenance de l'extérieur (par exemple Internet). Il faut autoriser le requêtes que pour la zone ou le serveur DNS est l'autorité :
Configuration File /etc/bind/named.conf.default-zones
view "interne" {

    // These are the clients that see this view
    match-clients {
        zoneinterne;
    };

    // Recursion permited for zoneinterne ACL subnets
    recursion yes;
    allow-recursion {
        zoneinterne;
    };  

    // prime the server with knowledge of the root servers
    zone "." {
        type hint;
            file "/etc/bind/db.root";
        };

    // be authoritative for the localhost forward and reverse zones, and for
    // broadcast zones as per RFC 1912

    zone "deimos.fr" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.deimos.fr.local";
    };

    zone "mavro.fr" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.mavro.fr.local";
    };

   zone "localhost" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.local";
   };

   zone "127.in-addr.arpa" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.127";
   };

   zone "0.in-addr.arpa" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.0";
   };

   zone "255.in-addr.arpa" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.255";
   };

   zone "0.168.192.in-addr.arpa" {
        type master;
        notify no;
        allow-update { none; };
        file "/etc/bind/db.0.168.192.inv.local";
   };
};

Passons maintenant à notre zone externe qui elle sera visible par toutes les personnes de l'extérieur :

Configuration File /etc/bind/named.conf.default-zones
view "externe" {
        match-clients {
                any;
        };
        // Recursion not permited for World Wide Web
        recursion no;

        zone "deimos.fr" {
                type master;
                notify yes;
                allow-update { none; };
                allow-transfer { "rndc-key"; };
                file "/etc/bind/db.deimos.fr";
        };

        zone "mavro.fr" {
                type master;
                notify yes;
                allow-update { none; };
                allow-transfer { "rndc-key"; };
                file "/etc/bind/db.mavro.fr";
        };

        zone "localhost" {
                type master;
                notify yes;
                allow-update { none; };
                file "/etc/bind/db.local";
        };

        zone "127.in-addr.arpa" {
                type master;
                notify yes;
                allow-update { none; };
                file "/etc/bind/db.127";
        };

        zone "0.in-addr.arpa" {
                type master;
                notify yes;
                allow-update { none; };
                file "/etc/bind/db.0";
        };

        zone "255.in-addr.arpa" {
                type master;
                notify yes;
                allow-update { none; };
                file "/etc/bind/db.255";
       };

        zone "0.168.192.in-addr.arpa" {
                type master;
                notify yes;
                allow-update { none; };
                allow-transfer { "rndc-key"; };
                file "/etc/bind/db.0.168.192.inv";
        };
};

3.6 named.conf.options

Voici le contenu :

Configuration File /etc/bind/named.conf.options
options {
    directory "/var/cache/bind";
 
    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
 
    // If your ISP provided one or more IP addresses for stable 
    // nameservers, you probably want to use them as forwarders.  
    // Uncomment the following block, and insert the addresses replacing 
    // the all-0's placeholder.
 
    // Force other DNS to answer
    //forwarders {
    //      212.27.32.176;
    //      212.27.32.177;
    //};
 
    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    // Avoid Bind Cache Poisoning
    dnssec-enable yes;
    dnssec-validation auto;
 
    allow-query {
             any;
    };  
 
    // Security version
    // Check with : dig -t txt -c chaos VERSION.BIND @<dns.server.com>
    version "Microsoft 2008 DNS Server";
 
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

Vous pouvez rajouter ce type d'options pour améliorer la sécurité :

Configuration File /etc/bind/named.conf.options
   allow-recursion { none; };      // désactivation des requêtes recursives (et donc du DNS cache Poisonning)
   allow-transfer { none; };       // désactivation du transfert de zone
 
   notify no;                      // désactivation des notifications de changement de zones
   zone-statistics no;             // désactivation des statistiques
   interface-interval 0;           // désactivation de la recherche de nouvelles interfaces
   max-cache-size 20M;             // taille max du cache

Dans le cas où vous souhaitez faire des redirections de domaines (ex: google.com --> une machine de votre réseau local) :

Configuration File /etc/bind/named.conf.options
zone "google.com" {
   type forward;
   forwarders {
      192.168.0.17;      // Mon DNS primaire 
      192.168.0.30;      // Mon DNS secondaire
   };
   forward only;
};

On peut également mettre ceci :

Configuration File /etc/bind/named.conf.options
 zone "128.168.192.in-addr.arpa" {
    type forward;
    forwarders {
       192.168.128.99;
    };
    forward only;
 };

3.7 db.deimos.fr

Voici le contenu de mon fichier dont le contenu sera à disposition de tout le monde :

Configuration File /etc/bind/db.deimos.fr
$TTL    604800
@       IN      SOA     simba.deimos.fr. root.deimos.fr.  (

Remplacez le premier champs par le FQDN de votre machine, et le second correspond au mail de l'admin (ici root@deimos.fr). L'écriture de l'adresse mail est un peu spéciale, mais elle fonctionne.

Configuration File /etc/bind/db.deimos.fr
        2010301201 ; Serial (date + incrementation)

Note : par convention, le serial est de la forme AAAAMMJJRR (AAAA : année, MM : mois, JJ : jour, RR : révision).

Configuration File /etc/bind/db.deimos.fr
         7200       ; Refresh
         3600       ; Retry
         1209600    ; Expire
         604800     ; Negative Cache TTL
         )
 
                 NS      mufasa.deimos.fr.
                 A       88.162.130.192
                 NS      ns6.gandi.net.
                 NS      shenzi.deimos.fr.
                 MX      5 mufasa.deimos.fr.
                 MX      10 shenzi.deimos.fr.
                 TXT     "v=spf1 ip4:192.168.0.0/24 a mx ~all exp=getlost.deimos.fr"
 getlost         TXT     "You are not allowed to send a message from this domain"
 _deimos.fr      TXT     "t=y; o=-;"
 m1._deimos.fr   TXT     "g=; k=rsa; p=;...IWWiAyklt5FDmS2U7QIDAQAB..."

Pour la partie TXT, je vous laisse voir d'autres articles qui traitent du SPF.

Configuration File /etc/bind/db.deimos.fr
localhost       A       127.0.0.1
mufasa          A       82.232.191.145
shenzi          A       88.191.130.125
ns6             A       217.70.177.40

mail            CNAME   mufasa
jabber          CNAME   mufasa
server          CNAME   mufasa
serveur         CNAME   mufasa
sftp            CNAME   mufasa
www             CNAME   mufasa
blocnotesinfo   CNAME   mufasa
infos           CNAME   mufasa
webmail         CNAME   mufasa
nagios          CNAME   mufasa

Tout ceci corresponds à vos enregistrements A, Noms canoniques etc...

3.8 db.deimos.fr.local

Ceci est donc pour la zone interne, mettez tout ce que vous voulez sans restrictions...

Configuration File /etc/bind/db.deimos.fr.local
$TTL    604800
@       IN      SOA     simba.deimos.fr. root.deimos.fr.  (
        2010301201 ; Serial (date + incrementation)
        7200       ; Refresh
        3600       ; Retry
        1209600    ; Expire
        604800     ; Negative Cache TTL
        )   
 
                NS      simba.deimos.fr.
                A       192.168.110.3
                MX      5 mufasa.deimos.fr.
                MX      10 shenzi.deimos.fr.
 
localhost       A       127.0.0.1
mufasa          A       192.168.0.254
shenzi          A       192.168.20.4
ns6             A       217.70.177.40
 
rafiki          A       192.168.110.1
simba           A       192.168.110.3
sarabi          A       192.168.99.10
 
www             CNAME   rafiki
www1            CNAME   rafiki
www2            CNAME   shenzi
 
blocnotesinfo   CNAME   www 
blog            CNAME   www 
webmail         CNAME   www 
nagios          CNAME   www 
git             CNAME   www 
gitweb          CNAME   www 
phpmyadmin      CNAME   www 
 
backuppc        CNAME   sarabi

3.9 db.0.168.192.inv

Si maintenant nous souhaitons du reverse DNS :

Configuration File /etc/bind/db.0.168.192.inv
$TTL    604800
@       IN      SOA     simba.deimos.fr. root.deimos.fr.     (
        2010301201 ; Serial (date + incrementation)
        7200       ; Refresh
        3600       ; Retry
        1209600    ; Expire
        604800     ; Negative Cache TTL
        )
 
                NS      simba.deimos.fr.
                A       88.162.130.192
                A       88.191.31.89
                NS      ns6.gandi.net.
                NS      shenzi.deimos.fr.
                MX      5 simba.deimos.fr.
                MX      10 shenzi.deimos.fr.
                TXT     "v=spf1 ip4:192.168.0.0/24 a mx ~all exp=getlost.deimos.fr"
getlost         TXT     "You are not allowed to send a message from this domain"
 
1               PTR     localhost
2               PTR     simba
3               PTR     ns6.gandi.net
4               PTR     shenzi.deimos.fr

Les PTR doivent aller du plus petit au plus grand e fonction des priorités.

3.10 db.0.168.192.inv.local

Maintenant, le reverse DNS pour le local :

Configuration File /etc/bind/db.0.168.192.inv.local
$TTL    604800
@       IN      SOA     simba.deimos.fr. root.deimos.fr.     (
        2010301201 ; Serial (date + incrementation)
        3600       ; Refresh
        7200       ; Retry
        1209600    ; Expire
        604800     ; Negative Cache TTL
        )
 
                NS      simba.deimos.fr.
                MX      5 simba.deimos.fr.
 
1               PTR     localhost
2               PTR     simba
3               PTR     serveur
4               PTR     earth
5               PTR     wind
6               PTR     water
10              PTR     kiss
11              PTR     imprimante
30              PTR     psp
31              PTR     pocket
32              PTR     ldap

4 Vérification

Il ne reste plus qu'à redémarrer le service et vérifier les logs :

Command
/etc/init.d/bind9 restart

$ tail -100 /var/log/syslog 
Jun 10 22:44:20 deimos named[9641]: starting BIND 9.4.1 -u bind
Jun 10 22:44:20 deimos named[9641]: found 2 CPUs, using 2 worker threads
Jun 10 22:44:20 deimos named[9641]: loading configuration from '/etc/bind/named.conf'
Jun 10 22:44:20 deimos named[9641]: no IPv6 interfaces found
Jun 10 22:44:20 deimos named[9641]: listening on IPv4 interface eth0, 192.168.0.1#53
Jun 10 22:44:20 deimos named[9641]: listening on IPv4 interface lo, 127.0.0.1#53
Jun 10 22:44:20 deimos named[9641]: listening on IPv4 interface tun0, 10.8.0.1#53
Jun 10 22:44:20 deimos named[9641]: listening on IPv4 interface bond0, 192.168.0.2#53
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 254.169.IN-ADDR.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 2.0.192.IN-ADDR.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 255.255.255.255.IN-ADDR.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: D.F.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 8.E.F.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: 9.E.F.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: A.E.F.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: automatic empty zone: view interne: B.E.F.IP6.ARPA
Jun 10 22:44:20 deimos named[9641]: command channel listening on 127.0.0.1#953
Jun 10 22:44:20 deimos named[9641]: zone 0.in-addr.arpa/IN/interne: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone 127.in-addr.arpa/IN/interne: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone 0.168.192.in-addr.arpa/IN/interne: loaded serial 2006031801
Jun 10 22:44:20 deimos named[9641]: zone 255.in-addr.arpa/IN/interne: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone mavro.fr/IN/interne: loaded serial 2006031801
Jun 10 22:44:20 deimos named[9641]: zone localhost/IN/interne: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone deimos.fr/IN/interne: loaded serial 2006110401
Jun 10 22:44:20 deimos named[9641]: zone 0.in-addr.arpa/IN/externe: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone 127.in-addr.arpa/IN/externe: loaded serial 1
Jun 10 22:44:20 deimos named[9641]: zone 0.168.192.in-addr.arpa/IN/externe: loaded serial 2006102701
Jun 10 22:44:20 deimos named[9641]: zone 255.in-addr.arpa/IN/externe: loaded serial 1
Jun 10 22:44:21 deimos named[9641]: zone mavro.fr/IN/externe: loaded serial 2007040103
Jun 10 22:44:21 deimos named[9641]: zone localhost/IN/externe: loaded serial 1
Jun 10 22:44:21 deimos named[9641]: zone deimos.fr/IN/externe: loaded serial 2007040101
Jun 10 22:44:21 deimos named[9641]: running

Ici aucunes erreurs, donc tout est bon :-)

5 FAQ

5.1 Quels dossiers et droits pour le chroot du Bind ?

Voici les commandes à effectuer :

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run
mv /etc/bind /var/lib/named/etc
ln -s /var/lib/named/etc/bind /etc/bind
mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

5.2 named : invalid command from 127.0.0.1: bad auth

Comment ça se fait que tous mes fichiers de conf contiennent la même clef RNDC, et pourtant, je me tappe ce type d'erreur. Comment ça se fait ?

La raison est simple, Bind doit certainement être déjà lancé. Donc un petit coup de :

Command netstat
netstat -auntp 

Et là on doit se rendre compte que ça tourne déjà. Donc un petit coup de kill sur les PID correspondant et on relance le service Bind :

Command pkill
pkill named

5.3 Pourquoi je ne peux faire faire d'enregistrements avec un "_" ?

Les versions de bind dès 9.3 intègrent maintenant de manière plus précise le contrôle de la validité des nom de domaines. Ils ne peuvent en occurence plus contenir de _ (0x5f dans la ASCII table), comme le stipulent le RFC 1035. C'est toutefois bien dommage pour moi parce que j'ai plusieurs domaines contenant des _.

Message d'erreur produit :

Mar  6 07:48:08 dns3 named[25459]: pri/rags.ch.hosts:25: wisteria_lane.rags.ch: bad owner name (check-names)
Mar  6 07:48:08 dns3 named[25459]: zone rags.ch/IN: loading master file pri/rags.ch.hosts: bad owner name (check-names)

Voici donc un petit patch qui résoud le problème :

name_with_underscore.patch :
 
--- lib/dns/name.c.orig 2006-03-06 17:44:30.000000000 +0100
+++ lib/dns/name.c      2006-03-06 17:45:07.000000000 +0100
@@ -261,7 +261,7 @@
        return (ISC_FALSE);
 }
 
-#define hyphenchar(c) ((c) == 0x2d)
+#define hyphenchar(c) ((c) == 0x2d || (c) == 0x5f)
 #define asterchar(c) ((c) == 0x2a)
 #define alphachar(c) (((c) >= 0x41 && (c) <= 0x5a) \
                      || ((c) >= 0x61 && (c) <= 0x7a))

5.4 zone 'deimos.fr' allows updates by IP address, which is insecure

Vous avez peut être des erreurs de logs dans ce genre :

Oct  2 17:29:03 star1 named[5120]: zone 'deimos.fr' allows updates by IP address, which is insecure 

Ce qui tout simplement signifie que votre clef RNDC n'est pas utilisée. Pour l'utiliser avec les ACL, il suffit donc de rajouter ses serveurs secondaires dans la partie "controls" et n'autoriser les updates (au niveau des zones) qu'avec la clef RNDC :

Configuration File /etc/bind/named.conf
...
controls {
      inet 127.0.0.1 port 953 
              allow { 127.0.0.1; secondaryinternaldns; } keys { "rndc-key"; };
};
...
       zone "deimos.fr" {
               type master;
               notify yes;
               allow-update { key "rndc-key"; };
               file "/etc/bind/db.deimos.fr";
       };
...

Maintenant redémarrez votre serveur DNS et il n'y a plus de problèmes, les échanges se font cryptés :-)

5.5 too many timeouts resolving 'mycompany.com/MX' (in 'eu'?): disabling EDNS

Cette erreur peut apparaitre pour la résolution de nom trop longue du à la taille des packets UDP. Ceci peut s'avérer très génant, surtout pour la réception d'email qui peut prendre quelques heures. La solution consisite à rajouter cette ligne :

Configuration File named.conf.options
...
edns-udp-size 1460;
...

Il ne reste plus qu'a redémarrer le service bind. Si le problème persiste essayez de baisser la taille (passez de 1460 à 500 par exemple) , il existe des moyens pour tester tout ça grâce à la commande dig.
Utilisez la par exemple comme ceci jusqu'à ne plus avoir de timeout :

Command dig
dig +norec +dnssec mycompany.com MX @my_dns_server
dig +dnssec +norec +ignore dnskey MX @my_dns_server

5.6 zone deimos.fr/IN/internalview: journal rollforward failed: journal out of sync with zone

Le serveur a du être arréter sauvagement, le fichier de zone a été éditer manuellement sans que la zone ai été freezée. Pour résoudre ce problème :

  • Arrêter le serveur bind
  • Supprimer les fichiers journaux (*.jnl dans "/etc/bind")
  • Redémarrer le serveur bind

5.7 Comment vider mon cache ?

Pour vider son cache bind :

Command rndc
rndc flush

6 Ressources

Serveur DNS sous OpenBSD
Installing An Ubuntu DNS Server With BIND
http://fr.wikipedia.org/wiki/BIND
http://fr.gentoo-wiki.com/HOWTO_Bind
http://www.zytrax.com/books/dns/
http://brocas.org/blog/post/2006/06/22/14-de-la-securite-d-une-architecture-dns-d-entreprise
http://groups.google.com/group/comp.protocols.dns.bind/browse_thread/thread/cfa8c63ec6bd08d6?pli=1