Première rédaction de cet article le 26 février 2014
J'ai déjà parlé ici du serveur de noms nsd, le logiciel actuellement le plus rapide pour servir des zones DNS. Un reproche souvent fait à NSD est son côté très statique. Pour ajouter ou retirer une zone, voire simplement pour changer l'adresse IP d'un serveur maître, il faut redémarrer complètement le serveur. La version 4 de NSD, sortie il y a peu, règle ce problème.
Avec la version 4, NSD dispose enfin d'un logiciel de contrôle,
nsd-control
(équivalent du
unbound-control
d'Unbound, du rndc
de
BIND ou du knotc
de Knot). Cela permet des choses triviales comme :
% sudo nsd-control status version: 4.0.1 verbosity: 1 ratelimit: 200
Mais on peut aussi avoir des informations par zone. Un des serveurs de
nom d'eu.org
utilise ainsi NSD 4 depuis deux mois :
% sudo nsd-control zonestatus eu.org zone: eu.org state: ok served-serial: "2014022601 since 2014-02-26T09:43:38" commit-serial: "2014022601 since 2014-02-26T09:43:38"
On a aussi des statistiques (ici, juste après un démarrage du serveur) :
% sudo nsd-control stats num.queries=27 num.type.A=18 num.type.MX=4 num.type.TXT=1 num.type.AAAA=2 num.type.SRV=1 ... num.rcode.NOERROR=26 num.rcode.NXDOMAIN=1 ... num.edns=19 ... num.udp=24 num.udp6=3 num.tcp=0 num.tcp6=0 ...
Mais tout ceci est en lecture seule. L'important est qu'on peut
aussi modifier la configuration du serveur en vol. Je modifie le
nsd.conf
pour diminuer la tolérance du limiteur
de trafic (rrl-ratelimit: 100
) puis :
% sudo nsd-control reconfig reconfig start, read /etc/nsd/nsd.conf ok % sudo nsd-control status version: 4.0.1 verbosity: 1 ratelimit: 100
Et j'ai la nouvelle valeur.
Et si je veux ajouter une zone à servir ? On peut simplement
l'ajouter à nsd.conf
et faire un
nsd-control reconfig
:
% sudo nsd-control reconfig reconfig start, read /etc/nsd/nsd.conf ok % sudo nsd-control zonestatus ... zone: example.com state: refreshing served-serial: none commit-serial: none
Et, très peu de temps après :
% sudo nsd-control zonestatus example.com zone: example.com state: ok served-serial: "2014022601 since 2014-02-26T10:17:27" commit-serial: "2014022601 since 2014-02-26T10:17:27"
Et le serveur va alors répondre avec autorité aux requêtes DNS concernant cette zone.
Mais il existe une autre méthode, plus adaptée aux gens qui gèrent
plein de zones à la configuration identique. Avec cette seconde
méthode, on n'ajoute pas la zone dans nsd.conf
.
Il faut qu'il existe dans
le nsd.conf
un pattern
indiquant les paramètres de la zone. On pourra ensuite ajouter la zone
dynamiquement en se référant à ce pattern
. Voici
un exemple de pattern nommé
personalslave
:
pattern: name: personalslave allow-notify: 2001:db8:cafe::1:53 NOKEY request-xfr: AXFR 2001:db8:cafe::1:53 NOKEY
Et la création d'une zone qui ne sera pas dans
nsd.conf
:
% sudo nsd-control addzone example.org personalslave ok % sudo nsd-control zonestatus example.org zone: example.org pattern: personalslave state: ok served-serial: "2014022400 since 2014-02-26T10:26:40" commit-serial: "2014022400 since 2014-02-26T10:26:40"
La détruire est aussi simple :
% sudo nsd-control delzone example.org ok
Il y a encore plein de choses à voir mais je vous laisse déjà vous amuser avec cela.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)