Installation & Configuration BIND

BIND (Berkeley Internet Name Domain) est un logiciel open source permettant de publier votre système de nom de domaine et de résoudre des requêtes DNS pour vos utilisateurs. C’est serveur DNS (Domain Name System) : serveur de résolution de nom.

BIND est le logiciel DNS le plus utilisé sur Internet. Il fournit une plate-forme robuste et stable sur laquelle les entreprises peuvent construire des systèmes informatiques distribués en sachant que ces systèmes sont entièrement conformes aux normes DNS publiées.

Sourcehttps://www.isc.org/downloads/bind/

Ce tutoriel explique comment installer et configurer (les bases) BIND 9.8.4 sur Debian 7.7.0.

Toutes les manipulations à venir seront à effectuer en tant que super-utilisateur de la machine.


I) Installation de BIND

A. Mettre à jour la distribution

Exécutez la commande suivante :

apt-get update -y && apt-get upgrade -y

Cette commande met à jour la liste des paquets de debian et les paquets installés sur votre système Debian.

B. Installer BIND

Exécutez la commande suivante :

apt-get install bind9 dnsutils bind9-doc

Cette commande installe BIND (bind9), le client permettant de le tester (dnsutils) et des documentations sur BIND (bind9-doc)

II) Configuration de BIND

A. Configurer le serveur DNS récursif

Par défaut, votre serveur DNS bind n’est pas capable de résoudre un nom DNS accessibles sur internet comme http://www.google.com (car il n’est pas renseigné dans la configuration). Si vos machines locales utilisent votre DNS local, les machines n’auront pas d’accès internet.

C’est ici qu’intervient le serveur DNS récursif.

Un serveur DNS récursif interroge un (ou plusieurs) autre(s) serveur(s) DNS, appelé serveur DNS racine, pour résoudre un nom quand il ne le peut pas lui-même. Cette fonctionnalité est utile si l’on souhaite utiliser son serveur DNS local dans la configuration de nos machines tout en ayant accès à internet.

Si vous installez un serveur DNS dans votre entreprise qui possède une Box pour l’accès internet, par exemple, cette Box serait le serveur DNS racine de votre serveur DNS récursif.

Éditez le fichier named.conf.options :

nano /etc/bind/named.conf.options

Ce fichier contient l’ensemble des options de configuration du serveur DNS.

Repérez et commentez la ligne suivante  :

dnssec-validation auto;

Si vous souhaitez obtenir des informations sur l’option dnssec-validation cliquez ici.

Ajoutez les lignes suivantes dans la partie options { }; :

// Renseignez la ou les adresses des serveurs DNS racines
// Pour utilisez plusieurs serveurs racines, renseignez-les les un en dessous des d'autres, séparés par un ;
forwarders {
     8.8.8.8;
//   IPServeurRacine2;
//   ...
};

// Active la récursion
recursion yes;

// Indique que le serveur doit transmettre toutes les demandes, sans tenter de résoudre les demandes de lui-même
forward only;

// Indique que l'on utilise un service de sécurité DNS
dnssec-enable yes;

// Active le cryptage de chaque enregistrement de notre fichier de zone
dnssec-validation yes;

L’option forwarders contient la liste des adresses IP des serveurs DNS auxquels votre serveur doit envoyer les requêtes de ses clients, s’il ne parvient pas à résoudre lui-même un nom. Ici j’ai mis 8.8.8.8, le DNS de google.

Pour plus d’options vous pouvez consulter ce site ;

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la récursion à l’aide de la commande dig, qui permet d’interroger un serveur DNS, en tentant de résoudre l’adresse de google par exemple :

dig @127.0.0.1 http://www.google.fr

Synthaxe : dig IPServeurDNS NomàRésoudre

Le serveur racine doit vous retourner l’adresse IP associée au nom renseigné :

;; QUESTION SECTION:
;www.google.fr.                 IN      A

;; ANSWER SECTION:
www.google.fr.          25      IN      A       216.58.210.195

Dans la partie ANSWER SECTION, vous trouverez la réponse  du serveur DNS.

B. Configurer le serveur DNS maître

Maintenant que votre la récursion est configurées sur notre serveur DNS, nous pouvons maintenant créer un premier nom de domaine dont il sera le maître.

Le serveur maître est utilisé pour contenir les enregistrements DNS d’un nom de domaine. Un ensemble d’enregistrements DNS pour un nom de domaine est appelé une zone.

1 – Créer la zone principale

La zone principale permet de faire pointer un nom de domaine pleinement qualifié, autrement appelé FQDN (Full Qualified Domain Name) , sur une adresse IP. Un FQDN a la forme hote.domaine.extension :

  • hote correspond au nom d’hôte d’une machine faisant parti du domaine ;
  • domaine correspond au nom de domaine ;
  • extension correspond à l’extension (.com par exemple).

Pour commencer, nous allons éditer le fichier /etc/bind/named.conf.local qui contient la configuration locale du serveur DNS. On y déclare les zones associées au domaine. De plus, à chaque zone créée vous devrez (ce n’est pas obligatoire mais je vous le conseil) créer un fichier de description de celle-ci.

Pour l’exemple, nous prendrons comme FQDN ns.exemple.com où le nom d’hôte est ns (name server) et celui de la zone exemple.com. Adaptez le nom à votre cas.

Éditez le fichier named.conf.local :

nano /etc/bind/named.conf.local

Ajoutez les lignes suivantes :

zone "exemple.com" IN {
     type master;
     file "/etc/bind/exemple.com";
};

L’option type a la valeur master pour indiquer que le serveur sur lequel on travail est le maître de la zone exemple.com et l’option file indique le chemin vers le fichier de configuration de la zone, que nous allons créer prochainement.

Enregistrez les modifications ;

2 – Configurer la zone principale

Dans le dossier /etc/bind/ il existe un fichier db.local qui est un exemple de configuration d’une zone, ressemblant à ceci :

;
; BIND data file for local loopback interface
;
$TTL    604800     
@       IN      SOA     localhost. root.localhost. (
                              2         ; Serie
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire 
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      localhost.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
$TTL (Time to Live)

Nombre de secondes pendant lesquels les informations de la zone peuvent être considérées comme valides et être mises en cache. A la fin du temps le fichier sera relu par BIND.

Serie

Numéro de série à changer à chaque modification du fichier si vous possédez au moins un serveur esclave, pour qu’il puisse prendre en compte les modifications sur le serveur maître. Le standard est de renseigne la date de la modification du fichier.

Refresh, Retry, Expire

Délais en secondes qui vont piloter le comportement des serveurs esclaves. A l’expiration du délai Refresh, l’esclave va entrer en contact avec le maître. S’il ne le trouve pas, il essaiera de nouveau à la fin du délai Retry et si, au bout du délai Expire, il n’est pas parvenu à ses fins, il considérera que le serveur maître a été retiré du service.

Negative Cache TTL

Temps en second de conversation des réponses négative (échec des requêtes).

Source : http://valaurea.free.fr/documents/sig11_bind9_3.html

Nous allons en faire une copie pour commencer la configuration de la zone principale.

Faite une copie du fichier db.local :

cp /etc/bind/db.local /etc/bind/exemple.com

De préférence, donnez comme nom au fichier celui de la zone (ici exemple.com).

Éditez le fichier que vous venez de créer :

nano /etc/bind/exemple.com

Adaptez de la manière suivante :

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.exemple.com. email@exemple.com. (
                       04042017         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.exemple.com.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
NS      IN      A       192.168.1.53

Voici un récapitulatif des modifications :

On indique le nom de la zone faisant autorité (SOA = Start Or Autority).
ns.exemple.com.
On renseigne une adresse mail.
email@exemple.com.
On modifie le numéro de série (à faire à chaque modification du fichier si vous possédez au moins un serveur esclave) en mettant par exemple la date du jour de la modification.
04042017
On indique le nom du serveur maître (NS = Name Server).
ns.exemple.com.
On lie le nom du serveur maître à son adresse IP (A = Address). Ici l’adresse est 192.168.1.53.
NS      IN      A       192.168.1.53

IN signifie internet, c’est-à-dire que la zone renseignée après le nom d’hôte est réservée à Internet.

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Le service bind9 doit être redémarré à chaque modification, pour qu’elle soit prise en compte.

Testez la résolution du nom de domaine :

dig @127.0.0.1 exemple.com

Remplacez exemple.com par le nom de votre zone.

Le serveur DNS doit vous retourner l’adresse IP de votre serveur maître :

;; QUESTION SECTION:
;exemple.com.                   IN      A

;; ANSWER SECTION:
exemple.com.            604800  IN      A       127.0.0.1

;; AUTHORITY SECTION:
exemple.com.            604800  IN      NS      ns.exemple.com.

;; ADDITIONAL SECTION:
ns.exemple.com.         604800  IN      A       192.168.1.254

La section AUTHORITY SECTION indique le FQDN du serveur faisant autorité pour répondre aux requêtes concernant ce nom de domaine et la section ADDITIONAL SECTION indique l’adresse IP du serveur faisant autorité pour répondre aux requêtes concernant ce nom de domaine.

3 – Définir des hôtes

Une fois la zone principale configurée, vous pouvez renseigner dans sa description les noms des différentes machines (ou autre) pour lesquels vous souhaiter résoudre le nom.

L’association du nom d’une machine à son adresse IP se fait de la manière suivante :

nom_hôte     IN     A     ip_hôte

Nous prendrons pour exemple un serveur MySQL, dont le nom est MYSQL et l’adresse IP 192.168.1.100.

Éditez le fichier de description de la zone principale :

nano /etc/bind/exemple.com

Renseignez l’hôte de la façon suivante :

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns.exemple.com. email@exemple.com. (
                       04042017         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns.exemple.com.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
NS      IN      A       192.168.1.53
mysql   IN      A       192.168.1.100

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution de nom :

dig @127.0.0.1 mysql.exemple.com

Le serveur DNS doit vous retourner l’adresse IP associée au nom MySQL :

;; QUESTION SECTION:
;MySQL.exemple.com.             IN      A

;; ANSWER SECTION:
MySQL.exemple.com.      604800  IN      A       192.168.1.100

;; AUTHORITY SECTION:
exemple.com.            604800  IN      NS      ns.exemple.com.

;; ADDITIONAL SECTION:
ns.exemple.com.         604800  IN      A       192.168.1.254

Ce tutoriel est terminé. Votre serveur BIND est maintenant fonctionnel mais, il ne possède qu’une configuration basique pour le moment. Si vous souhaitez le configurer d’avantage, vous pouvez poursuivre en créant une zone reverse, un serveur esclave ou encore une sous-zone.

+Si vous avez des problèmes, où que vous trouvez que certains points sont mal expliqués (ou faux), n’hésitez pas à m’avertir.

Publicités

4 commentaires

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.