sommaire
DNS & Bind
Avancé

liens utiles:
http://www.isc.org/products/BIND/

Le fichier de configuration de la version simple était relativement basique.

Ajoutons les logs:

Pour cela il faut ajouter la section suivante dans /etc/named.conf:

logging {
        channel fichier_log {
                file "/var/log/dns.log";
                severity info;
                print-time yes;
                print-severity yes;
                print-category yes;
        };
        category client { fichier_log; };
        category queries { fichier_log; };
};


file: le fichier qui va héberger les logs
severity: à choisir parmi (critical | error | warning | notice | info | debug [level] |  dynamic ) : info est suffisant la majorité du temps
print-time yes;    affiche date et heure
print-severity yes;  affiche la "severity" pairs en compte par le
severity info;
print-category yes;  affiche le type d'action comme par exemple "queries"

category client { fichier_log; };
category queries { fichier_log; };

Ne loggue que les category client (requêtes des clients) et queries

une entrée typique:
03-Jun-2013 14:25:18.205 queries: info: client 217.70.177.55#26244: view externe: query: fredaria.org IN SOA -E

Utilisons RNDC pour administrer named:

Un serveur DNS garde les informations en cache donc son arret entraine une perte des données. Grace à rndc on pourra recharger les fichiers de zones sans devoir stopper named.

Pour cela il faut ajouter la directive "controls" dans /etc/named.conf

include "/etc/rndc.key";

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

"include" permet d'ajouter la clé rndc génénré par : dnssec-keygen -a hmac-md5 -b 256 -n HOST rndc-key 
Cette clé secrète ne doit pas figurer directement dans le fichier /etc/named.conf lisible par tous.
Il fau tmaintenant créer le fichier /etc/rndc.key contenant:

key "rndc-key" {
        algorithm hmac-md5;
        secret "votre_clé";
};

Maintenant un rndc reload permet de recharger les fichiers de zones et de configuration sans perdre le cache dns
plus d'infos via man rndc et rndc --help


Les vues:

Les vues permettent de donner une réponse à des requêtes différentes en fonction de qui interroge votre serveur DNS.
Un exemple simple de mis en oeuvre de cette fonctionnalité serait d'avoir une vue "interne" et une "externe"

Les clients de votre LAN serait dans la vue interne et recevraient en réponse de leur requêtes les ips du LAN
Les clients externes (internet par exemple) auraient les réponses avec les ips publiques de votre infrastructure

Pour cela il faut ajouter/modifier  /etc/named.conf :

acl "clients_LAN" {
        192.168.0/24;
        192.168.1/24;
        127.0.0.0/24;
};

view "interne" {
        match-clients { "clients_LAN
"; };
        recursion yes;


        zone "fredaria.org." in {
                type master;
                file "db.fredaria.interne";
        };

        
        zone "0.168.192.in-addr.arpa" in {
                type master;
                file "db.192.168.0";
        };

        zone "0.0.127.in-addr.arpa" in {
                type master;
                file "db.127.0.0";
        };


        zone "." in {
                type hint;
                file "db.cache";
        };

};

view "externe" {
        match-clients { any; };
        recursion no;

        zone "fredaria.org." in {
                type master;
                file "db.fredaria.externe";
                allow-transfer { none; };
        };


        zone "27.7.226.78.in-addr.arpa" {
                type master;
                file "db.78.226.7.27.externe";
        };

        zone "." in {
                type hint;
                file "db.cache";
        };

};

=> tous les clients de l'ACL
clients_LAN auront accès aux fichiers de zones de la vue "interne":
db.fredaria.interne
db.192.168.0
db.127.0.0
db.cache

Tous les autres auront accès aux zone de la vue "externe":
db.fredaria.externe
db.78.226.7.27.externe
db.cache

Il reste maintenant à ajouter les fichiers de zones manquants pour finaliser la configuration

Il est à noter aussi la directive: "
recursion yes" dans la vue "interne": cela permet aux client de déléguer les requêtes dns au serveur dns. Dans la vue "externe" "recursion" est à "no" pour que le serveur dns ne puisse pas servir comme serveur de nom globale mais qu'il ne réponde qu'aux requêtes sur les zones où il a autorité.