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.
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 services sympas pouvant être utilisés comme DNS secondaire.
Personnellement, j'ai choisi PUCK. Aucune raison particulière de mon choix, PURK est simple et ça marche.
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éé.
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
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
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
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
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.