====== BIND ======
Ou DNS ou "named"
Lien: http://zero202.free.fr/cs61-dns/html/ar01s03.html
===== installer =====
==== package ====
# aptitude update
# aptitude install bind9
==== configurer ====
Par defaut, je crois que tout est permis.
=== mon reseau ===
Restreindre les droits d'interrogation... \\
Pour cela, il faut editer le fichier **''/etc/bind/named.conf.options''**, et:\\
Configurer son reseau:
Limiter les droits:
// zone local
acl mylan {
127.0.0.1;
10.22.0.0/24;
};
Où "10.22.0.0/24" est "mon" reseau local.
Puis dans la section **"options"**, faire en sorte d'avoir:
allow-notify {
none;
};
allow-transfer {
none;
};
allow-query {
mylan;
};
allow-recursion {
mylan;
};
Ainsi, il n'y a que "mylan" qui peut utiliser "mon" DNS, et les autres droits seront definis ultérieurement au cas par cas.
=== log ===
Pour qu'on puisse voir des trucs pertinents dans les logs, on peut ajouter dans le fichier **''/etc/bind/named.conf.options''** :
//
logging {
category "unmatched" { "null"; };
category "default" { "default_syslog"; "default_debug"; };
};
//
==== Zone ====
=== master ===
| :!: il faut preparer les fichiers "db" au préalable ! |
Il faut editer le fichier: **''/etc/bind/named.conf.local''**
On declare une **zone** locale, dont on est maitre.
Soit la zone de conversion "nom" en "ip":
zone "thierry-jaouen.local" {
type master;
file "/etc/bind/LOCAL/db.thierry-jaouen.local";
allow-query {
mylan;
};
};
Soit la zone inverse, de conversion "ip" en "nom":
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/LOCAL/db.192.168.0";
allow-query {
mylan;
};
};
En fait, la section "allow-query" est inutile parce ce que redondante avec la declaration de la section **"options"**.
=== slave ===
| :!: il faut preparer les fichiers "db" au préalable ! |
Il faut editer le fichier: **''/etc/bind/named.conf.local''**
Imaginons un autre serveur DNS, qui va relayer les zone "master" vu ci-dessus.\\
Pour cela, on declare un "slave", c'est a dire une zone qui va recuperer les informations auprés d'un "master".
== sur le SLAVE ==
zone "thierry-jaouen.local" {
type slave;
file "/etc/bind/SLAVE/db.thierry-jaouen.local";
masters {
;
};
};
zone "0.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/SLAVE/db.192.168.0";
masters {
;
};
};
| :!: Bien s'assurer que le user "bind" a le droit d'ecrire dans le repertoire "SLAVE" |
Si nécessaire:
# cd /etc/bind
# mkdir SLAVE
# chown root:bind SLAVE
# chmod g+sw SLAVE
# ls SLAVE -ld
drwxrwsr-x 2 root bind 4096 2009-01-25 01:32 SLAVE
== sur le MASTER ==
Modifier les zones concernés, afin qu'elles autorisent le "transfert" de zone ! Donc, ajouter:
allow-transfer {
;
};
| :!: La securité tient simplement aux adresses IP ! c'est mince. \\ Voir la section suivant pour l'authentification. |
=== Notify ===
Lien: http://docstore.mik.ua/orelly/networking_2ndEd/dns/ch10_03.htm
En l'etat, les mises a jour des zones seront faites en fonction du paramètre "refresh" (dans le SOA)...
Si on veut une "notification" rapide de la mise a jour d'une zone, alors, dans le fichier "SOA" du maitre, il faut ajouter les "slaves". Par exemple:
SOA ....
...
NS ns.thierry-jaouen.fr
NS ns-slave1.xxxxxxx.xxx
NS ns-slave2.xxxxxxx.xxx
"ns-slave1" et "ns-slave2" seront notifiés des modifications du maitres: en retour, ils devront interroger le maître pour ce mettre a jour.
Lorsqu'on a un "slave" intermediare qui doit notifier une modification a un autre slave, en cascade, il faut ajouter dans la déclaration de cette zone "slave":
type slave;
...
also-notify { ip-d-un-autre-slave; };
...
==== Delegate Zone ====
Le but: déléguer un sous domaine a un autre DNS, ainsi que le reverse.
Exemple de sous-domaine:
univers.thierry-jaouen.local
Afin que ca fonctionne bien, surtout pour le reverse , on doit attribuer une tranche d'un reseau, comme:
192.168.16.192/28
... ce qui délègue l'usage des ip 192.168.16.192 a 192.168.16.207.
=== zone ===
Lien: http://www.zytrax.com/books/dns/ch9/delegate.html
=== reverse ===
Lien: http://www.zytrax.com/books/dns/ch9/reverse.html
==== TSIG ====
=== authentifier un slave ===
Lien: [[http://www.cyberciti.biz/faq/unix-linux-bind-named-configuring-tsig/]]
== generer key ==
Dans un répertoire du maitre (ou de l'esclave), taper ça:
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rndc-key
Ca va créer 2 fichiers avec de droles de noms (par exemple):
-rw------- 1 root bind 81 2009-01-27 23:14 Krndc-key.+157+26049.private
-rw------- 1 root bind 52 2009-01-27 23:14 Krndc-key.+157+26049.key
Mais peu importe: on veut juste extraire la clé qui est dedans, et puis effacer ces fichiers ! Exemple:
... ...
Key: 0jnu3SdsMvzzlmTDPYRceA==
... ...
== fichier key ==
Sur le maitre et sur le slave, on peut faire comme cela:
# cd /etc/bind
# mkdir keys
# chown root:bind keys
# chmod o-rx keys
# cd keys
Creer un fichier , par exemple **''bindtest-netcave.key''** et y mettant dedans:
key "bindtest-netcave" {
algorithm hmac-md5;
secret "0jnu3SdsMvzzlmTDPYRceA==";
};
== named.conf.local ==
Inserer enfin la configuration suivante dans ''bind'' (dans "named.conf.local" ou ailleurs) :
include "/etc/bind/keys/bindtest-netcave.key";
et puis pour le maitre:
server {
keys {
bindtest-netcave;
};
};
sinon pour l'esclave:
server {
keys {
bindtest-netcave;
};
};
Le reste ne change pas. C'est a dire qu'on a toujours, un peu plus loin (juste aprés par exemple):\\
Pour le maitre par exemple:
zone "underworld.local" {
type master;
file "/etc/bind/LOCAL/db.underworld.local";
allow-query {
10.22.0/24;
};
allow-transfer {
;
};
};
Si j'ai bien compris, la declaration "server" s'applique partout où l'on retrouve la même IP...?
===== Tips =====
==== Vider le cache pour tout ====
Sans redemarrer:
# rndc flush
==== Vider cache pour 1 domaine ====
Lien: http://www.bortzmeyer.org/vider-cache-resolveur.html
A tester:
# rndc flushname www.free.fr
==== dump cache ====
Lien: http://ubuntuforums.org/showthread.php?t=903651
Voir un etat du cache bind:
# rndc dumpdb -cache
Et regarder dans le fichier là:
/var/cache/bind/named_dump.db
==== reload etc... ====
Il y a 2 manières de recharger la config:
# /etc/init.d/bind9 reload
Reloading domain name service...: bind.
Ou bien:
# rndc reload
server reload successful
==== CIDR ====
Liens:
*http://fr.wikipedia.org/wiki/Domain_Name_System
===== Performance =====
Tester les perfs: http://www.bortzmeyer.org/performances-serveur-dns.html
Limiter les DoS: http://www.bortzmeyer.org/rate-limiting-dns-open-resolver.html