Outils pour utilisateurs

Outils du site


serveur_bind

BIND

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 :

// <tj>

logging {
category "unmatched" { "null"; };
category "default" { "default_syslog"; "default_debug"; };
};

// </tj>

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 {
              <ADRESSE_DU_MAITRE>;
      };
};

zone "0.168.192.in-addr.arpa" {
      type slave;
      file "/etc/bind/SLAVE/db.192.168.0";
      masters {
              <ADRESSE_DU_MAITRE>;
      };
};
:!: 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 {
  <ADRESSE_IP_DU_SLAVE>;
};
:!: 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

reverse

TSIG

authentifier un slave

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:

... <snip> ...
Key: 0jnu3SdsMvzzlmTDPYRceA==
... <snip> ...
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 <IP_DU_SLAVE> {
  keys {
      bindtest-netcave;
  };
};

sinon pour l'esclave:

server <IP_DU_MAITRE> {
  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 {
              <IP_DU_SLAVE>;
      };
};

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

Performance

serveur_bind.txt · Dernière modification : 2012/04/11 18:44 de thierry