BIND, Berkeley Internet Name Domain, est un serveur de noms (DNS) utile à plusieurs niveaux.
Ce tutoriel est tenu à jour régulièrement. Dernière révision : 10 octobre 2014.
Les commandes préfixées d’un # sont à lancer en root. Les commandes préfixées d’un % sont à lancer en simple utilisateur.
Tout d’abord, il faut installer BIND :
# apt-get install bind9
BIND est configuré par défaut pour faire cache DNS.
On va lui ajouter de quoi faire la convertion IP → nom de machine pour le réseau local. Les modifications effectuées par l’administrateur doivent aller dans le fichier /etc/bind/named.conf.local. On va rajouter une zone « lan ».
zone "lan" { type master; file "/etc/bind/local/lan"; }; zone "168.192.in-addr.arpa" { type master; file "/etc/bind/local/lan.inv"; };
Nous allons ensuite passer à configuration du DNS pour le réseau local, dans le fichier /etc/bind/local/lan. Il faut savoir que les noms de machines doivent se terminer par un point. « machine. » signifie « machine », mais « machine » désigne « machine.mondomaine.fr ».
$TTL 86400 @ IN SOA serveur. root.serveur. ( 1 8H 2H 1W 1D ) @ IN NS serveur. @ IN A 192.168.0.254 poste1 A 192.168.0.1 poste2 A 192.168.0.2 poste3 A 192.168.0.3 poste4 A 192.168.0.4 poste5 A 192.168.0.5 poste6 A 192.168.0.6 poste7 A 192.168.0.7 poste8 A 192.168.0.8 webcache CNAME serveur
Cette partie demande quelques explications :
Pour vérifier que vous n’avez pas fait d’erreur, utiliser la commande suivante :
% /usr/sbin/named-checkzone lan /etc/bind/local/lan
zone lan/IN: loaded serial 1
OK
Créez le fichier /etc/bind/local/lan.inv.
$TTL 604800 @ IN SOA serveur. root.serveur. ( 1 8H 2H 1W 1D ) @ IN NS serveur. 254 PTR serveur.lan. 1 PTR poste1.lan. 2 PTR poste2.lan. 3 PTR poste3.lan. 4 PTR poste4.lan. 5 PTR poste5.lan. 6 PTR poste6.lan. 7 PTR poste7.lan. 8 PTR poste8.lan.
Pour vérifier que vous n’avez pas fait d’erreur, vous pouvez utiliser la commande suivante :
% /usr/sbin/named-checkconf
Si elle ne renvoie rien, c’est que le fichier de configuration global est valide.
Ensuite lancez la commande suivante :
# service bind9 reload
Il vaut mieux utiliser reload que restart, pour éviter de vider le cache de BIND. Vérifiez que tout s’est bien passé en inspectant les logs.
% tail -n 20 /var/log/syslog
Vous devriez voir apparaître à la fin quelque chose comme :
Jan 30 01:11:54 serveur named[13221]: zone localhost/IN: loaded serial 1
Jan 30 01:11:54 serveur named[13221]: running
Jan 30 01:11:54 serveur named[13221]: zone 168.192.in-addr.arpa/IN: sending notifies (serial 1)
Cela signifie que BIND est lancé.
Vous devriez pouvoir faire un ping sur les machines de votre réseau local, ainsi que des hôtes extérieurs sur Internet.
Il ne reste plus qu’à éditer le fichier /etc/resolv.conf, pour utiliser le serveur que l’on vient d’installer :
search lan
nameserver IP_SERVEUR
Au cas où, assurez-vous que votre /etc/hosts.conf est bien de la forme :
order hosts,bind
multi on
Si vous utilisez le DHCP, et que vos machines ont un client DCHP avec une configuration standard, ce dernier peut écraser le contenu de /etc/resolv.conf à chaque lancement. Pour éviter ce comportement avec dhcp3-client, créer le fichier /etc/dhcp3/dhclient-enter-hooks.d/resolv :
make_resolv_conf() { echo "Nothing to do for /etc/resolv.conf" }
Éditez à nouveau /etc/bind/named.conf.local pour y rajouter :
acl "ns_secondaire" { IP_NS_SECONDAIRE; }; zone "domaine.fr.eu.org" { type master; file "/etc/bind/masters/domaine.fr.eu.org"; allow-transfer { "ns_secondaire"; }; allow-query { any; }; };
Voir plus bas pour la configuration d’un serveur secondaire. Si vous n’avez pas de deuxième serveur disponible, et si personne dans votre entourage ne peut faire NS secondaire, vous pouvez regarder du côté de zoneedit.
Il faut le créer, par exemple /etc/bind/masters/domaine.fr.eu.org.
$TTL 86400 ; 1 day domaine.fr.eu.org. IN SOA ns.domaine.fr.eu.org. EMAIL. ( 2006091001 ; serial 3H ; refresh 1H ; retry 1W ; expire 3H ; minimum ) @ NS ns.domaine.fr.eu.org. @ NS ns_secondaire. @ IN MX 10 ns.domaine.fr.eu.org. @ A IP_NS_PRIMAIRE ns A IP_NS_PRIMAIRE www CNAME ns webmail CNAME ns
Utilisez les commandes /usr/sbin/named-checkconf et /usr/sbin/named-checkzone pour vérifier votre configuration. Une fois que tout est bon, dites à BIND de prendre en compte vos modifications.
# service bind9 reload
Pour finir, n’oubliez pas d’ouvrir le port 53 en TCP et en UDP si vous avez un firewall.
Voilà un exemple de la configuration d’un serveur en secondaire pour « domaine.fr.eu.org ». Dans /etc/bind/named.conf.local rajoutez :
zone "domaine.fr.eu.org" { type slave; file "/etc/bind/slaves/domaine.fr.eu.org"; masters { IP_NS_PRIMAIRE; }; };
Vous devez créer le répertoire /etc/bind/slaves/. Le fichier /etc/bind/slaves/domaine.fr.eu.org sera créé et géré par BIND, c’est l’endroit où sera copiée la zone reçue du serveur primaire.
Ensuite on demande à BIND de recharger sa configuration (sur le secondaire) :
# service bind9 reload
En voulant ajouter une zone sur un secondaire, j’ai déjà été confronté à ce message d’erreur dans les logs :
[Jour] [Heure] [Hostname] named[5993]: client IP#PORT: received notify for zone 'domain.tld': not authoritative
Après avoir lancé les commandes named-checkconf et named-checkzone sur le primaire pour s’assurer qu’il n’y a pas une typo quelque part, j’ai demandé au primaire de renotifier la zone :
# rndc notify domain.tld
Mais le message d’erreur était toujours là, et le fichier n’était pas créé dans /etc/bind/slaves/. En fait, la commande service bind9 reload n’avait pas suffit, j’ai dû faire sur le secondaire :
# service bind9 stop
# service bind9 start
Maintenant que votre serveur DNS est fonctionnel, vous êtes fin prêt à aller sur le formulaire de création sur EU.org. Vous y remplirez les champs :
Il ne reste plus qu’à attendre la validation par les administrateurs d’EU.org. Elle est manuelle, ça peut donc prendre un moment.
En l’état, tout le monde peut se servir de votre serveur DNS. Ce dernier n’a aucun intérêt par rapport à celui d’un FAI, mais autant protéger son accès.
Dans /etc/bind/named.conf.local rajoutez :
acl "lan" { 192.168.0.0/16; };
Ensuite dans /etc/bind/named.conf.options à la fin du bloc options{} rajoutez :
allow-recursion { "lan"; 127.0.0.1/8; IP_PUBLIQUE/32; };
À cause de la mauvaise configuration de certains serveurs DNS, vous risquez de voir vos logs envahis par des choses du genre :
Sep 10 00:58:02 serveur named[12588]: lame server resolving 'dns3.hull.ac.uk' (in 'hull.ac.UK'?): 149.170.39.92#53
Sep 10 01:17:14 serveur named[29842]: lame server resolving 'www.ledvdclub.com' (in 'ledvdclub.COM'?): 194.150.236.5#53
Pour éviter ça, vous pouvez ajouter ceci dans /etc/bind/named.conf.local :
logging { category lame-servers{ null; }; };