Ce tutoriel est la suite du celui sur l’installation et la configuration de BIND que je vous invite à lire si ce n’est pas encore fait. Il explique comment configurer une zone inversée (aussi appelée zone reverse) sur un serveur BIND.

Dans une zone reverse, la résolution de nom se fait à l’envers. C’est-à-dire que l’on demande au serveur DNS de renvoyer le FQDN (nom de domaine pleinement qualifié) d’une machine à partir de son adresse IP. Une zone DNS de résolution inversée est nécessaire si vous souhaitez créer un serveur de messagerie par exemple (si vous ne le faîte pas, vos emails arriveront en tant que SPAM, car le serveur ne connaîtra pas l’adresse IP de l’expéditeur).

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.


Créer une zone reverse

Pour créer la zone inversée, vous aurez besoin de l’adresse du réseau pour lequel le serveur devra résoudre les adresse IP. Si votre serveur DNS est utilisé par plusieurs réseaux, vous devrez créer autant de zones que de réseaux différents en appliquant pour chacune les manipulations que nous allons prochainement effectuer.

Pour l’exemple, nous prendrons l’adresse réseau 192.168.1.0, vous devrez adapter l’adresse à votre cas.

Éditez le fichier named.conf.local :

nano /etc/bind/named.conf.local

Pour rappel, le fichier named.conf.local contient la configuration locale du serveur DNS, on y déclare les zones associées au domaine ;

Renseignez une nouvelle zone (reverse) de la manière suivante :

zone "1.168.192.in-addr.arpa" IN {
     type master;
     notify no;
     file "/etc/bind/192.168.1";
};

Pour le nom de la zone, vous devez renseigner les 3 premiers octets de l’adresse réseau à l’envers, suivi du nom de zone .in addr.arpa. La zone in-addr.arpa permet la résolution inversée ;

Enregistrez les modifications ;

Configurer une zone reverse

Créez le fichier de description de votre zone reverse, en faisant une copie du fichier de description de votre zone principale :

cp /etc/bind/exemple.com /etc/bind/192.168.1

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

nano /etc/bind/192.168.1

Adaptez-le 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.
IP      IN      PTR     ns.exemple.com.

Renseignez à la place de la valeur IP le dernier octet de l’adresse IP de votre serveur de nom. PTR (Point Record) permet d’effectuer des inversement d’enregistrement A ou AAAA et de donner le nom d’hôte associé à l’adresse IP à résoudre ;

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution d’adresse IP :

dig @127.0.0.1 -x IPServeurDNS

Attention à bien ajouté l’option -x a la commande dig pour pouvoir demander au serveur DNS de résoudre une adresse IP ;

Le serveur DNS doit vous retourner le nom de votre zone :

;; QUESTION SECTION:
;254.1.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
254.1.168.192.in-addr.arpa. 604800 IN   PTR     ns.exemple.com.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 604800  IN      NS      ns.exemple.com.

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

Définir des hôtes

Une fois la zone inversée définie, vous pouvez renseigner dans sa description les adresses IP des différents hôtes et leur nom pour la résolution inversée.

Éditez le fichier de description de la zone reserve :

nano /etc/bind/192.168.1

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

IP     IN     PTR      FQDNMachine

Pour reprendre l’exemple du serveur MySQL vue dans le tutoriel précédent, dont le nom est MySQl et l’adresse IP 192.168.1.100. Si l’on souhaite résoudre son adresse IP en ayant en retour son nom il faut configurer le fichier de description 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.
IP      IN      PTR     ns.exemple.com.
100     IN      PTR     MySQL.exemple.com

Enregistrez les modifications ;

Redémarrez le service bind9 :

service bind9 restart

Testez la résolution d’adresse IP :

dig @127.0.0.1 -x 192.168.1.100

Le serveur DNS doit vous retourner le FQDN du serveur MySQL :

;; QUESTION SECTION:
;100.1.168.192.in-addr.arpa.    IN      PTR

;; ANSWER SECTION:
100.1.168.192.in-addr.arpa. 604800 IN   PTR     MySQL.exemple.com.1.168.192.in-addr.arpa.

;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 604800  IN      NS      ns.exemple.com.

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

Ce tutoriel est terminé. Vous pouvez continuer la configuration de votre serveur BIND en installant et configurant un serveur esclave 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.