====== 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