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 :
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.
- 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
- sous Debian wheezy
Installation
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.confconfig # 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
- 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.1Et 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: ;; ->>HEADERLes 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