You are on page 1of 6

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

Ingnu
Libert !

Installer et configurer un serveur DNS


Catgories : Crer son propre cloud 5 fvrier 2012 Le deuxime article de cette nouvelle rubrique traite logiquement de la mise en place dun serveur DNS. moins que vous nayez recours loutil de gestion de vos DNS propos par votre registrar et quil ne vous bride pas, vous devrez passer par ltape du serveur DNS, dautant quil nous permettra par la suite de faire bien dautres choses que simplement faire pointer un domaine sur une IP Nous utiliserons le serveur bind. Nous allons tout dabord linstaller sur le serveur principal en tant que matre. Si vous disposez dun second serveur, vous pourrez le configurer en tant quesclave pour assurer la continuit du service.

Important! Pour la suite de notre article (et pour tous les articles venir), nous considrerons que vous tes lheureux possesseur du domaine exemple.fr, et que vous disposez de deux serveurs ayant les adresses IP 1.1.1.1 et 2.2.2.2. Si vous navez quun seul serveur disposition, vous naurez besoin de faire que de petits ajustements qui nempcheront pas le systme de fonctionner correctement. Vous pouvez galement installer temporairement bind sur votre propre machine pour passer les tests de validation.

Pare-feu
Tout dabord, reprenons le script de pare-feu que nous avons configur prcdemment. nano /scripts/firewall Entre les lignes : ##### Configuration personnalise ##### Et : ##### Fin : Configuration personnalise ##### Rajoutez les lignes suivantes : ${IPT} -A SERVICES -p tcp --dport 53 -j ACCEPT ${IPT} -A SERVICES -p udp --dport 53 -j ACCEPT Nous ouvrons donc le port 53 en TCP et en UDP. Normalement, seul le protocole UDP est utilis pour les requtes, mais le protocole TCP est utilis galement pour les transferts de zones dont nous aurons besoin plus tard. Il est donc important douvrir les connexions aux deux types de protocoles, moins que vous ne configuriez pas un serveur esclave. Nous pourrions galement spcifier directement ladresse du serveur esclave afin dviter toute demande de transfert directement depuis iptables : ${IPT} -A SERVICES -p tcp --dport 53 -s 2.2.2.2 -j ACCEPT

1 sur 6

09/05/2012 16:04

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

${IPT} -A SERVICES -p udp --dport 53 -j ACCEPT

Serveur matre
Pour installer bind, rien de plus simple : apt-get install bind9 dnsutils Le paquet dnsutils contient notamment les outils nslookup et dig, qui nous serviront par la suite tester notre installation. Rendez-vous dans le rpertoire de configuration de bind : cd /etc/bind /etc/init.d/bind9 stop

Important! Rflexe acqurir : toujours stopper un processus en cours dexcution avant den modifier la configuration. Cela vite quelques surprises du genre configuration qui revient son tat prcdent une fois le service relanc. On cr le fichier le dfinition de notre domaine : nano db.exemple.fr $TTL @ 86400 IN

SOA

ns.exemple.fr. postmaster.exemple.fr. ( 2012020501 2D ; Refresh 15M ; Retry 3W ; Expire 86400 ) ; Negative Cache TTL IN IN IN NS NS A A A ns.exemple.fr. ns2.exemple.fr. 1.1.1.1 1.1.1.1 2.2.2.2

ns ns2

IN IN

Notice Les domaines se terminent par un . ! Quelques explications simposent. Dans la ligne relative au SOA, on dclare le serveur DNS autoritaire pour la zone (ns.exemple.fr) et ladresse email du responsable (postmaster.exemple.fr, le @ de ladresse tant remplac par un . ). Ensuite, on attribue un numro de srie au fichier ; ce numro ne sinvente pas : il sagit de la date (au format YYYYMMDD) suivi dun nombre compris entre 00 et 99. Pour plus de clart, on va appeler ce nombre la cl . Si vous disposez de plusieurs domaines, vous pouvez utiliser le premier chiffre de la cl comme identifiant pour un domaine particulier (par exemple, jattribuerai toujours un 1 au domaine exemple.fr, et un 2 au domaine exemple2.fr ), tandis que le second chiffre de la cl vous servira indenter les modifications survenues dans ce fichier pour le jour donn. Par exemple, vous faites 4 modifications sur le fichier db.exemple.fr, et 7 sur le fichier db.exemple2.fr, en date daujourdhui. Vous pouvez attribuer les numros de srie suivants vos fichiers : 2012020514 et 2012020527. Notice Noubliez jamais de modifier le numro de srie chaque modification du fichier !

2 sur 6

09/05/2012 16:04

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

Important! Si vous ne disposez que dun seul serveur, vous pouvez omettre les lignes relatives au deuxime serveur DNS (ns2.exemple.fr et son adresse associe 2.2.2.2). Cependant, vous ne passerez pas les tests de validation si votre registrar a recours au ZoneCheck de lAFNIC, qui exige que vous ayez deux serveurs DNS configurs. Vous devriez installer temporairement un serveur bind sur votre propre machine en suivant le tutoriel relatif la mise en place dun serveur esclave. Les valeurs suivantes (refresh, retry, etc.) devraient convenir la majorit des situations. Nous dfinissons ensuite les deux serveurs DNS associs au nom de domaine : ns.exemple.fr. et ns2.exemple.fr. Ensuite, nous indiquons que le serveur principal a pour adresse IP 1.1.1.1, puis nous associons les adresses 1.1.1.1 et 2.2.2.2 aux deux serveurs de noms. Une fois que vous avez adapt cet exemple votre propre domaine, vous pouvez enregistrer et fermer. Thoriquement, dans une installation de base de bind sur une debian stable, le fichier named.conf contient la ligne suivante : include "/etc/bind/named.conf.local"; Si ce nest pas le cas, rajoutez-l : echo "include \"/etc/bind/named.conf.local\";" >> named.conf Et modifiez le fichier named.conf.local : nano named.conf.local Ce fichier va contenir les directives de configuration pour un domaine particulier, en loccurrence, exemple.fr (et/ou exemple2.fr). Cest une bonne pratique de configuration laquelle passe la majorit des applications, cela permet de clarifier les choses, et de sy retrouver facilement. Mettez donc le contenu suivant dans ce fichier : zone "exemple.fr" { type master; file "/etc/bind/db.exemple.fr"; }; On dfini notre instance de bind comme tant matre pour ce domaine, et on lui indique le fichier de configuration correspondant. Enregistrez et fermez ce fichier une fois modifi. Redmarrez ensuite bind, pour procder quelques tests : /etc/init.d/bind9 restart nslookup exemple.fr Vous devriez obtenir la sortie suivante : Server: 127.0.0.1 Address: 127.0.0.1#53 Name: exemple.fr Address: 1.1.1.1 Vous noterez qu cause de la propagation des DNS, votre domaine nest peut tre pas encore disponible depuis lextrieur. Nhsitez pas tester (en utilisant la mme commande) rgulirement depuis une machine qui nhberge pas le serveur bind. Si la commande prcdente vous retourne une sortie similaire, cest que votre domaine est correctement configur (du point de vue de bind en tout cas). En ltat actuel des choses, bind devrait donc tre en mesure de rpondre des requtes portant sur votre domaine, bien quencore aucun domaine utile ne soit cr.

3 sur 6

09/05/2012 16:04

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

Serveur esclave
Pour faire fonctionner deux instances de bind sur le modle de matre/esclave, on commence par complter un peu la configuration du serveur matre. On reste donc sur la mme machine, pour crer une cl de transfert : dnssec-keygen -a HMAC-MD5 -b 512 -n HOST <localhost>.exemple.fr. dnssec-keygen est un outil livr avec bind. Grce la commande suivante, on gnre une cl en utilisant lalgorithme HMAC-MD5, dune longueur de 512 bits, pour un hte particulier (-n HOST), en loccurrence, celui indiqu la fin. Remplacez <localhost> par le nom dhte du serveur. Par exemple, jai appel mon serveur minerva , sur le domaine ingnu.fr. La commande qui sapplique mon cas devient donc : dnssec-keygen -a HMAC-MD5 -b 512 -n HOST minerva.ingnu.fr.

Important! Notez toujours le point la fin du domaine. On gnre une cl pour un hte donn, mais dnssec-keygen permet bien dautres choses que nous nutiliserons pas ici. Notamment, vous pouvez choisir un algorithme diffrent, ou crer une cl pour toute une zone. Pour lheure, nous souhaitons avoir la possibilit de transfrer de manire scurise les donnes de zones (dans notre exemple, le fichier db.exemple.fr) de notre serveur matre vers le serveur esclave que nous configurerons plus tard. Cette commande est donc suffisante pour le moment. A lissue de lexcution de cette commande (qui peut durer une vingtaine de secondes), deux nouveaux fichiers ont t crs. Ils commencent par la lettre K majuscule, et portent respectivement lextension .key et .private. Le premier fichier contient une ligne quil est possible de rajouter dans un fichier de zone, tandis que le second contient quelques dtails sur la cration de la cl. Nous nutiliserons dans notre cas prcis aucun des deux dans son tat actuel. Cependant, il peut tre utile de les conserver pour un usage ultrieur. La seule chose qui nous intresse est la cl en elle-mme qui figure dans les deux fichiers. Utilisez la commande cat sur le fichier .private, et copiez la cl qui apparatra. Crez ensuite le fichier transfer.conf : nano transfer.conf key "TRANSFER" { algorithm hmac-md5; secret "la cl que vous avez copi"; }; server 2.2.2.2 { keys { TRANSFER; }; }; Dans ce fichier, nous ajoutons une cl au trousseau de bind, qui ne sera destine quau transfert des zones entre le matre et lesclave. Si un cas se prsente o nous devrons diffuser dautres cls, nous en gnrerons de nouvelles, pour viter toute interfrence. Ensuite, nous affectons cette cl au serveur esclave, 2.2.2.2. Incluez ce fichier votre configuration, puis modifiez le fichier named.conf.local : echo "include \"/etc/bind/transfer.conf\" >> /etc/bind/named.conf nano named.conf.local zone "exemple.fr" { type master; file "/etc/bind/db.exemple.fr"; allow-transfer { 2.2.2.2; };

4 sur 6

09/05/2012 16:04

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

}; Nous avons rajout la ligne allow-transfer { 2.2.2.2; }; qui nous permet dviter que nimporte qui puisse transfrer nos zones sur son serveur. Redmarrez bind : /etc/init.d/bind9 restart Dsormais, lorsque le serveur matre redmarrera, il notifiera automatiquement le(s) serveur(s) esclave(s) de tout changement, et initiera le transfert des zones de manire scurise. Passons maintenant la configuration du serveur esclave proprement parl. Sur la machine qui hbergera ce serveur, installez bind : apt-get install bind9 dnsutils Nous avons cr le fichier transfer.conf sur le serveur matre. Le mme fichier doit tre cr sur la machine esclave, avec une petite nuance. cd /etc/bind /etc/init.d/bind9/stop nano transfer.conf key "TRANSFER" { algorithm hmac-md5; secret "la cl que vous avez copi"; }; server 1.1.1.1 { keys { TRANSFER; }; }; Vous noterez quil sagit exactement du mme fichier, y compris la mme cl, mais que ladresse IP de la clause server change. Dans la configuration du serveur esclave, cest ladresse IP du serveur matre quil faut indiquer. Ensuite, comme pour la configuration du serveur matre, on ajouter ce fichier la configuration de bind : echo "include \"/etc/bind/transfer.conf\" >> /etc/bind/named.conf Modifions ensuite le fichier named.conf.local pour y ajouter la configuration de votre (vos) domaine(s) : zone "exemple.fr" { type slave; file "/var/cache/bind/db.exemple.fr"; masters { 1.1.1.1; }; allow-notify { 1.1.1.1; }; }; Nous indiquons ici que le fichier de zone db.exemple.fr, une fois transfr, sera stock dans le dossier /var/cache/bind, qui devrait dj tre cr. Si ce nest pas le cas, il faut le crer, et donc tous les cas, lui attribuer les bons droits : mkdir -p /var/cache/bind chown -R bind:bind /var/cache/bind chmod -r 644 /var/cache/bind Il suffit maintenant de redmarrer bind pour que les modifications soient prises en compte. /etc/init.d/bind9 restart Consultez immdiatement les journaux utiliss par bind : tail -100 /var/log/syslog

5 sur 6

09/05/2012 16:04

Installer et configurer un serveur DNS Ingnu

http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

Il se peut que vous y trouviez une erreur propos de lheure qui nest pas synchronise. Installez sur les deux serveurs le paquet ntpdate, puis synchronisez les horloges avant de redmarrer bind : apt-get install ntpdate ntpdate 0.fr.pool.ntp.org /etc/init.d/bind9 restart Testez maintenant votre serveur : nslookup > server 127.0.0.1 Default server: 127.0.0.1 Address: 127.0.0.1#53 > exemple.fr Server: 127.0.0.1 Address: 127.0.0.1#53 Name: exemple.fr Address: 1.1.1.1 Vous disposez dsormais de lune des pices matresses de votre propre serveur. La configuration de base que nous avons mis en place aujourdhui va tre complte et scurise au fil des articles venir, pour quau final, vous disposiez dune solution complte vous permettant de vous affranchir des services offerts par Google, Twitter, facebook et bien dautres. Le serveur que nous allons monter avec ces articles va vous permettre de reprendre le contrle de vos donnes. Alors bientt pour le prochain article, qui traitera de la deuxime pierre angulaire de votre Cloud personnel et Libre : le serveur mail. Sources : http://oreilly.com/catalog/dns4/chapter/ch11.html Mots-Cls : bind, dns Lien Permanent pour cet article : http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/

1 ping
Cration de sa propre autorit de certification Ingnu
6 fvrier 2012 3 h 23 min (UTC 1)

[...] Installer et configurer un serveur DNS [...]

6 sur 6

09/05/2012 16:04

You might also like