====== Installation d'un serveur DNS bind9 ====== Ce guide a pour but d'expliquer comment installer et configurer un serveur DNS bind9 dans son réseau local. Une des raisons pour laquelle j'ai voulu installer ça chez moi, c'est simplement pour pouvoir gérer deux vues. Une vue interne qui ne sera utilisée que depuis mon réseau local, puis une vue externe pour que le monde extérieur (Internet) accède à mon domaine.\\ En effet, chez moi j'utilise une Freebox en tant que modem/routeur et celle-ci ne dispose pas de boucle locale pour effectuer le routage nécessaire. Ainsi, si j'essaye d'accéder à mon nom de domaine depuis l'intérieur de mon réseau local alors je tombais désespérément sur le serveur web de la Freebox. Et comme je n'avais pas vraiment envie de modifier le fichier ''/etc/hosts'' de tous les clients à chaque fois, l'utilisation d'un serveur DNS personnel m'a bien plu. Cette installation a été réalisée sur Gentoo Linux, mais le fonctionnement reste le même pour toute les distributions bien entendu. ===== Pré-requis ===== * Une machine sous GNU/Linux qui tourne 24/7 * Un nom de domaine chez votre registrar préféré * Quelqu'un qui vous servira de DNS secondaire Ce dernier point est très important.\\ Dans mon cas, je ne gère qu'un seul DNS, le master (maître). Ayant pris mon nom de domaine chez OVH, je me suis dis qu'ils pouvaient alors agir en tant que DNS secondaire. Et bien en fait non ! Pour la simplement et bonne raison que la machine utilisée pour faire DNS primaire n'est pas sur leur réseau.\\ Merci OVH donc ... Heureusement qu'il existe des [[http://www.google.fr/search?q=free+secondary+dns|services sympas]] pouvant être utilisés comme DNS secondaire.\\ Personnellement, j'ai choisi [[https://puck.nether.net/dns/|PUCK]]. Aucune raison particulière de mon choix, PURK est simple et ça marche. ===== Installation ===== emerge net-dns/bind net-dns/bind-tools Pour l'utilisation que j'en ai, j'ai laissé les USE par défaut.\\ Suite à l'installation, un répertoire ''/etc/bind/'' est créé. ===== Configuration du serveur ===== ==== named.conf ==== Le fichier ''/etc/bind/named.conf'' est le fichier de configuration général. C'est dans ce fichier qu'on va définir les vues, les zones, etc. Dans mon cas, je prendrai l'exemple de la configuration de mon propre domaine, à savoir ''gromez.fr''. options { directory "/var/bind"; listen-on-v6 { none; }; listen-on port 53 { 127.0.0.1; 192.168.0.1; 82.235.193.167; }; pid-file "/var/run/named/named.pid"; }; view "internal" { match-clients { 192.168.0.0/24; localhost; }; recursion yes; zone "gromez.fr" { type master; file "pri/gromez.fr.internal"; allow-transfer { any; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "pri/gromez.fr.reverse.internal"; allow-update { any; }; }; }; view "external" { match-clients { any; }; recursion no; zone "." IN { type hint; file "named.ca"; }; zone "127.in-addr.arpa" IN { type master; file "pri/127.zone"; allow-update { none; }; notify no; }; zone "gromez.fr" { type master; notify yes; file "pri/gromez.fr.external"; allow-query { any; }; allow-transfer { 204.42.254.5; }; // puck.nether.net }; }; logging { channel default_syslog { file "/var/log/named/named.log" versions 3 size 5m; severity debug; print-time yes; print-severity yes; print-category yes; }; category default { default_syslog; }; }; //Mettre un texte explicatif// ==== Zone interne : gromez.fr.internal ==== La zone interne est à définir dans le fichier ''/etc/bind/pri/gromez.fr.internal'' $TTL 1d @ IN SOA ns.gromez.fr. admin.gromez.fr. ( 2010030101 ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum @ IN MX 0 gromez.fr. @ IN TXT "v=spf1 ip4:82.235.193.167/32 mx ptr mx:mail.gromez.fr ~all" @ IN NS ns.gromez.fr. @ IN NS puck.nether.net. @ IN A 192.168.0.1 ns IN A 192.168.0.1 ion IN A 192.168.0.1 alf IN A 192.168.0.10 meuhmeuh IN A 192.168.0.11 toto IN CNAME gromez.fr. tata IN CNAME gromez.fr. titi IN CNAME gromez.fr. //Mettre un texte explicatif// ==== Zone reverse interne : gromez.fr.reverse.internal ==== La zone reverse interne est à définir dans le fichier ''/etc/bind/pri/gromez.fr.reverse.internal''\\ Une zone reverse (inverse) permet de renvoyer le FQDN à partir d'une adresse IP. $TTL 1d @ IN SOA ns.gromez.fr. admin.gromez.fr. ( 2010022706 ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum @ IN NS ns.gromez.fr. @ IN NS puck.nether.net. 1 IN PTR ion.gromez.fr. 10 IN PTR alf.gromez.fr. 11 IN PTR meuhmeuh.gromez.fr. //Mettre un texte explicatif// ==== Zone externe : gromez.fr.external ==== La zone externe est à définir dans le fichier ''/etc/bind/pri/gromez.fr.external'' $TTL 1d @ IN SOA ns.gromez.fr. admin.gromez.fr. ( 2010030101 ; serial 3h ; refresh 1h ; retry 1w ; expiry 1d ) ; minimum @ IN MX 0 gromez.fr. @ IN TXT "v=spf1 ip4:82.235.193.167/32 mx ptr mx:mail.gromez.fr ~all" @ IN NS ns.gromez.fr. @ IN NS puck.nether.net. @ IN A 82.235.193.167 ns IN A 82.235.193.167 toto IN CNAME gromez.fr. tata IN CNAME gromez.fr. titi IN CNAME gromez.fr. //Mettre un texte explicatif// ===== Configuration des clients ===== Pour que les clients du réseau local puissent désormais utiliser le serveur DNS fraîchement installé, il faut pour cela modifier le fichier ''/etc/resolv.conf'' search gromez.fr nameserver 192.168.0.1 La première ligne ''search gromez.fr'' indique sur quel domaine chercher. Ainsi, si je fais une requête ''toto'', on va d'abord chercher à savoir si ''toto.gromez.fr'' existe. La seconde ligne sert quant à elle à indiquer l'adresse de notre serveur DNS local. {{keywords>dns server bind bind9 free freebox ovh domain name puck}}