Installer un serveur DNS qui peut être économe en mémoire : NDS

Cet article illustre le paramétrage du serveur DNS NDS, ou NDS3. Ici le choix de ce serveur, à la place de bind9 réside dans la faible consommation mémoire possible. Il est donc candidat à l'intégration dans mon raspberri pi. sources :
  • http://linuxaria.com/howto/how-to-install-nsd-instead-of-bind-as-name-server-on-linux-to-save-memory?lang=en
  • http://blog.regolithmedia.com/install-nsd-dns-in-a-low-memory-vps
  • http://www.nlnetlabs.nl/projects/nsd/
  • http://www.nlnetlabs.nl/projects/nsd/nsd-memsize.html
  • Installation

    • sous Debian wheezy
apt-get install nsd3

Configuration en mode maîtres

Contrairement à ce que l'on lit parfois sur lenet, la machine faisant office de serveur DNS primaire, n'a pas besoin elle même de faire parti du domaine.
C'est à dire que si on veux offrir le DNS pour le domaine toto.fr, la commande hostname -f peux renvoyer kywyxy.net
On part aussi du principe que notre DNS estenregistré chez bookmyname, et que le serveur de bookmyname sera notre DNS secondaire.

Configuration principale

La base de la configuration de NDS est dans le fichier /etc/nds3/nds.conf
config # grep -v '#' /etc/nsd3/nsd.conf |grep '.'
server:
    hide-version: yes
    ip4-only: yes
    identity: " "
    logfile: "/var/log/nsd.log"
    server-count: 1
    tcp-count: 10
    zonesdir: "/etc/nsd3/zones"
zone:
        name: "ledomaine.fr"
        zonefile: "ledomaine.fr.zone"
Ce fichier est découpé en 2 parties. La première server concerne uniquement la configuration proprement dite du serveur.

partie serveur

  • hide-version : on ne veux pas que nds, dise qui il est
  • ip4-only : facultatif, son pendant ipv6 existe bien-sur. "Utile" sur certains petits VPS
  • identity : personnellement je vide la chaîne de caractères, mais y a rien de particulier à ce niveau.
  • logfile : utile au début, mais après on peux mettre cette ligne en commentaire et les erreurs serons envoyées à syslog
La suite concerne une "optimisation" pour les petites machines. NDS peux consommer beaucoup de mémoire si on le bride pas un peu. Sur le site du projet, il y a un calculateur de ressources en fonction des paramètres.
  • server-count: 1 : nombre de processus en attente.
  • tcp-count: 10 : nombre de connexions simultanées en TCP sur le serveur.
  • zonesdir: "/etc/nsd3/zones" : Répertoire qui contiendra les fichiers des zones.

partie zone

On reproduit autant de paragraphe zone, que l'on a de domaines à gérer sur le serveur.
  • name: le domaine à gérer
  • zonefile: le fichier dans le répertoire zonesdir qui contient la configuration du domaine
Une zone
Le code d'une zone est aussi simple :
config # cat /etc/nsd3/zones/ledomaine.fr.zone
$ORIGIN ledomaine.fr.     ; default zone domain
$TTL 86400                  ; default time to live

@ IN SOA ns1.ledomaine.fr. admin.ledomaine.fr. (
           2014022201  ; serial number
           28800       ; Refresh
           7200        ; Retry
           864000      ; Expire
           86400       ; Min TTL
           )
           NS ns1.ledomaine.fr.
           NS ns-slave.free.org.
@               IN  NS  ns1.ledomaine.fr.
@               IN  A  62.4.17.xxx
ns1             IN  A  62.4.17.xxx
photos       IN     CNAME    ledomaine.fr.
;#(serveur DNS secondaire de bookmynamese nome: ns-slave.free.org il a comme IP 88.191.249.137

Remarques

  • 2014022201 ; serial number Une bonne pratique est de mettre le numéro de série au format YYYYMMDDxx ou xxest un numéro d'incrément. Cela permet de suivre les versions du fichier et c'est, en gros, ce numéro d'incrément qui est utilisé entre le maître et le secondaire pour se synchroniser.
  • Ici on utilise comme serveur DNS secondaire celui de bookmyname
  • C'est fini !

    Pour prendre en compte nos modifications :

config # service nsd3 rebuild
service nsd3 rebuild
Building nsd3 zones....
Reloading nsd3....
Ce qui équivaut à :
nsdc rebuild;/etc/init.d/nsd3 restart

Pour tester, sans attendre les réplications des DNS :

desktop alexandre # cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 62.4.17.xxx
nameserver 89.2.0.1
Et les commandes à taper depuis notre desktop :
alexandre@desktop ~ $ dig ledomaine.fr

; > DiG 9.8.4-rpz2+rl005.12-P1 > ledomaine.fr
;; global options: +cmd
;; Got answer:
;; ->>HEADER

Les règles iptables

iptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
Vus : 4117
Publié par Alexandre LUCAZEAU : 35