DNS &
Bind
Avancé
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.0db.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é.