Configurer une sous-zone

Ce tutoriel est la suite du celui sur l’installation et la configuration de BIND et l’installation et la configuration d’un serveur esclave, que je vous invite à lire si ce n’est pas encore fait. Il explique comment créer une sous-zone sur un serveur BIND.

Pour des grands domaines, il peut être utile de mettre en place plusieurs serveurs DNS, chacun gérant sa zone correspondant à son sous-domaine. Pour cela le serveur maître va déléguer la gestion des sous-zones à d’autres serveurs (qui seront donc maîtres des la sous-zones).

Nous reprendrons du FQDN ns.exemple.com des tutoriaux précédents.

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


Créer une zone sur le serveur maître

Cette partie sera à faire sur le serveur maître.

Nous devons configurer le serveur maître pour qu’il délègue la gestion de la sous-zone à un autre serveur.

Pour l’exemple, le serveur maître déléguera la gestion d’une sous-zone au serveur esclave que nous avons créé dans le tutoriel sur celui-ciSi vous n’avez pas suivi ce tutoriel, vous pouvez le faire maintenant ou tout simplement installer BIND sur une nouvelle machine (Debian 7.7.0 de préférence) :

apt-get update -y && apt-get upgrade -y
apt-get install bind9 dnsutils bind9-doc

Rappelons également que 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 est de la forme hote.domaine.extension :

  • hote correspond au nom de machine à résoudre ;
  • domaine correspond au nom de domaine ;
  • extension correspond à l’extension (.com par exemple).

Dans le cas d’une sous-zone, le format du FQDN sera hote.sous-domaine.domaine.extension. sous-domaine correspond au nom de la sous-zone que nous allons créer et qui se nommera tutofacile ici.

Le FQDN sera donc ns2.tutofacile.exemple.com.

Le nom d’hôte de la sous-zone ne doit pas être ns comme pour la zone principale. Le standard est de donné un nom de type nsX (X correspond au numéro de la sous-zone).

Nous commencerons par créer la sous-zone dans le fichier named.conf.local qui, pour rappel, contient la configuration locale du serveur DNS.

Éditez le fichier named.conf.local :

nano /etc/bind/named.conf.local

Ajoutez les lignes suivantes :

zone "tutofacile.exemple.com." {
     type delegation-only;
};

L’option type a la valeur delegation-only pour indiquer que l’on délègue la gestion de la zone à un autre serveur.

Enregistrez les modifications ;

Éditez le fichier de description de votre zone principale :

nano /etc/bind/exemple.com

Ajoutez les lignes suivantes :

tutofacile      IN      NS      ns2.tutofacile.exemple.com.
ns2     IN      A       IPServeurMaître

IPServeurMaître correspond à l’adresse IP du serveur qui sera le maître de la sous-zone ;

Enregistrez les modifications ;

Éditez le fichier named.conf.options :

nano /etc/bind/named.conf.options

Pour rappel, le fichier named.conf.options contient l’ensemble des options de configuration du serveur DNS et est situé dans le répertoire /etc/bind/.

Renseignez dans le forwarders (qui contient les adresses IP des zones) l’adresse IP du serveur qui sera le maître de la sous-zone ;

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution de nom du sous-domaine :

dig @127.0.0.1 ns2.exemple.com

Le serveur maître doit vous retourner l’adresse IP du serveur maître du sous-domaine :

;; QUESTION SECTION:
;ns2.exemple.com.               IN      A
;; ANSWER SECTION:
ns2.exemple.com.        604800  IN      A       192.168.1.253
;; AUTHORITY SECTION:
exemple.com.            604800  IN      NS      ns.exemple.com.
;; ADDITIONAL SECTION:
ns.exemple.com.         604800  IN      A       192.168.1.254

Configurer la sous-zone

Le reste du tutoriel se fera sur le serveur maître de la sous-zone.

Créer la sous-zone

Éditez le fichier named.conf.local :

 nano /etc/bind/named.conf.local

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

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

Enregistrez les modifications ;

Créer le fichier de description de la sous-zone

Créez le fichier de description de votre sous-zone, en faisant une copie du fichier db.local fourni par BIND :

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

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

nano /etc/bind/tutofacile.exemple.com

Adaptez-le de la manière suivante :

;
; BIND data file for local loopback interface
;
$TTL    604800
@       IN      SOA     ns2.tutofacile.exemple.com. email@exemple.com. (
                       10042017         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns2.tutofacile.exemple.com.
@       IN      A       127.0.0.1
@       IN      AAAA    ::1
ns2     IN      A       IPServeurMaître

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution de nom :

dig @127.0.0.1 ns2.tutofacile.exemple.com

Le serveur doit vous retourner son adresse IP :

;; QUESTION SECTION:
;ns2.tutofacile.exemple.com.    IN      A
;; ANSWER SECTION:
ns2.tutofacile.exemple.com. 604800 IN   A       192.168.1.253
;; AUTHORITY SECTION:
tutofacile.exemple.com. 604800  IN      NS      ns2.tutofacile.exemple.com.

Pour configurer des hôtes, je vous invité à le tutoriel sur l’installation et la configuration de BIND dans la partie Définir des hôtes.


Ce tutoriel est terminé. Vous pouvez continuer la configuration de votre serveur BIND en configurant une zone reverse si ce n’est pas encore fait ou éventuellement en créant un serveur esclave.

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.

Installer et configurer un serveur esclave

Ce tutoriel est la suite du celui sur l’installation et la configuration de BIND. Il explique comment installer et configurer un serveur esclave BIND 9.8.4 sous Debian 7.7.0.

Un serveur esclave est utilisé pour assister le serveur maître, en exploitant la ou les zones configurées sur le serveur maître. Les serveurs secondaires sont recommandés sur des gros réseaux. Ils assurent la disponibilité de la zone DNS, même si le serveur maître est hors ligne (nous somme donc en train de mettre en place un système de continuité de service).

Nous reprendrons du FQDN ns.exemple.com du tutoriel précédent.

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


Installation de BIND

Mettre à jour la distribution

Exécutez la commande suivante :

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

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

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)

Configurer les zones du serveur maître

N’oubliez pas de changer le numéro de série des fichiers de descriptions de vos zones quand vous les modifiez pour que votre serveur esclave prenne en compte les modifications.

Cette partie se fera sur le serveur maître.

Pour que le serveur esclave puisse accéder serveur maître, celui-ci doit d’abord y être autorisé. Pour chaque zone renseignée (ou seulement celles que vous souhaitez) dans le fichier named.conf.local, vous pouvez autoriser le transfert de données vers le serveur esclave.

Pour rappel, le fichier named.conf.local contient la configuration locale du serveur DNS : on y déclare les zones associées au domaine. Il est situé dans le répertoire /etc/bind/.

Éditez le fichier named.conf.local :

nano /etc/bind/named.conf.local

Ajoutez les lignes suivantes à chaque zone pour lesquelles vous autorisez le transfert de données :

allow-transfer {
     IPServeurEsclave1;
     IPServeurEsclave2;
};

Si vous possédez plusieurs serveurs esclaves, il vous suffit de renseigner les une en dessous des autres les adresses IP de chacun ;

Dans le cas de l’exemple, vous avez au moins une zone  :

zone "exemple.com" {
     type master;
     file "/etc/bind/exemple.com";
     allow-transfer { IPServeurEsclave; };
};

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Configurer les zones du serveur esclave

Le reste du tutoriel se fera sur le serveur esclave.

Le serveur esclave doit avoir dans son fichier named.conf.local les mêmes zones que le serveur maître mais, il devra aller rechercher sur le serveur maître leur description.

Éditez le fichier named.conf.local du serveur esclave :

nano /etc/bind/named.conf.local

Chaque zone doit être renseignée de la manière suivante :

zone "NomZone" IN {
     type slave;
     file "/var/cache/bind/FichierDescription";
     masters { IPServeurMaître; };
};

L’option type a la valeur slave, ce que indique que cette zone est esclave et l’option masters permet de spécifier le l’adresse IP du serveur maître.

Dans le cas de l’exemple, vous devez renseigner la zone principale que vous avez créé sur le serveur maître de la manière suivante :

zone "exemple.com" IN {
     type slave;
     file "/var/cache/bind/exemple.com";
     masters { IPServeurMaître; };
};

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution de nom :

 dig @127.0.0.1 ns.exemple.com

Le serveur esclave doit vous retourner l’adresse IP du serveur maître :

;; QUESTION SECTION:
;ns.exemple.com.                        IN      A
;; ANSWER SECTION:
ns.exemple.com.         604800  IN      A       192.168.1.254
;; AUTHORITY SECTION:
exemple.com.            604800  IN      NS      ns.exemple.com.

Ce tutoriel est terminé. Vous pouvez continuer la configuration de votre serveur BIND en configurant une zone reverse ou bien en créant 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.

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.