Bonjour ! Dans cet article je vais vous présenter la procédure à suivre pour installer un serveur DNS (Domain name System) en utilisant le non moins célèbre Bind. Ce serveur DNS gèrera la zone DNS « .devops » et sa zone inverse.

Pour ce tutoriel, il nous faudra :

  • Une machine Linux (Debian/Ubuntu) :
    • IP 192.168.11.132/24
    • Gateway : 192.168.11.2/24
    • Accès à internet pour récupérer les dépendances / paquets
  • Une machine cliente (Windows / Linux / MacOSX peut importe) :
    • IP : 192.168.11.1/24
    • Gateway : 192.168.11.2/24

Je supposerais que vous possédez un réseau local fonctionnel et que vous connaissez les bases de TCP/IP (adressage, masque de sous-réseaux…).

Tout d’abord il faut paramétrer le domaine du serveur DNS, dans le cadre de mon tutoriel, le tld (Top Level Domain) serra « .devops ».

Il est nécessaire de modifier la configuration afin qu’elle soit adaptée à votre environnement. Nous commençons donc par paramétrer quelques fichiers de configurations avant d’installer le service Bind9.

nano /etc/hostname (permet de modifier le nom de notre machine Debian ainsi que de lui renseigner le domaine dans lequel elle fait partie, puis je redémarre le serveur pour que les modifications soit prises en compte.)

nano /etc/hosts (permet une résolution locale des noms à partir des adresses IP sans utiliser le service DNS.)

La ligne commençant par « 127.0.1.1 » doit être modifiée en ajoutant le nouveau nom FQDN du serveur. Il faut ensuite faire de même en ajoutant une ligne associant l’adresse IPv4 du serveur DNS et son nom FQDN (nom de domaine).

Nous allons procéder à l’installation de bind9 avant de modifier le derniers fichiers (pour éviter de nous « couper les pattes »)

apt update
apt install bind9 dnsutils

Modifiez dès à présent le fichier /etc/resolv.conf afin que le serveur soit
intégré comme serveur DNS dans notre infrastructure.

Configuration du service DNS BIND9

Après avoir installé Bind9, on copie le fichier named.conf.local avant
de le modifier. (en cas de disfonctionnement):

cp /etc/bind/named.conf.local /etc/bind/name.conf.local.save1

Maintenant nous allons déclarer les deux zones DNS dans le fichier :
/etc/bind/named.conf.local.

La zone devops. et la zone inverse associée 11.168.192.in-addr.arpa. (afin que les adresses IP puissent être traduites en noms de domaine.)

Pour chaque zone, il faut préciser que le serveur est maître ou esclave et le
fichier contenant les informations sur la zone. Dans cette procédure, le serveur sera maître sur les deux zones.

nano /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "devops" {
  type master;
  file "/etc/bind/db.devops";
};
zone "11.168.192.in-addr.arpa" {
  type master;
  file "/etc/bind/db.11.168.192.in-addr.arpa";
};

Maintenant nous allons créer ces fameux fichiers comportant la configuration des zones entrées juste avant. On commence donc par le premier :

nano /etc/bind/db.devops
$TTL 10800
$ORIGIN devops.
@       IN SOA debian.devops. root.devops. (
        20180906;
        3h;
        1h;
        1w;
        1h);
@       IN NS debian.devops.
debian          IN A 192.168.11.132
host            IN A 192.168.11.1

Les valeurs qui suivent correspondent respectivement au :
– Au numéro de série (souvent on met la date courante suivie d’un
numéro d’ordre); AAAAMMJJxx.
– Au temps de rafraîchissement (refresh; ici, 8 heures); la valeur
recommandée est de 24 heures.
– Au temps entre deux essais (retry; ici, 1 heures); la valeur
recommandée est de 2 heures.
– Au temps d’expiration (expire; ici, 1 semaine); la valeur
recommandée est de 1000 heures.
– Au valeur TTL minimum (minimum; ici, 1 heure); la valeur
recommandée est de 2 jours.


Nous faisons de même pour la deuxième zone.

nano /etc/bind/db.11.168.192.in-addr.arpa
$TTL 10800
$ORIGIN 11.168.192.in-addr.arpa.
@       IN SOA debian.devops. root.devops. (
        20180906;
        3h;
        1h;
        1w;
        1h);
@       IN NS debian.devops.
132     IN PTR debian.devops.
1       IN PTR host.devops.

La première ligne : $ORIGIN 11.168.192.in-addr.arpa. sert à définir la fameuse zone inverse qui va être renseignée. Adaptez le fichier en fonction de votre configuration, en changeant le nom de domaine + adresse IP. (Dernier octets)

Et là, c’est le moment de vérité, nous allons vérifier que la configuration est bien adaptée à notre environnement avec la commande :

named-checkconf -z 
# Tant que cette commande vous retourne une erreur, cela indique que votre serveur DNS n'est pas stable et fonctionnel.

Il se peut qu’à chaque redémarrage votre serveur recharge le fichier resolv.conf, il va donc falloir désactiver le service qui recharge ce fichier:

systemctl disable systemd-resolved.service
rm /etc/resolv.conf
# évidement, nous recréons tout de suite ce dernier, en y déposant le même contenu que précédemment.
nano /etc/resolv.conf
domain devops
search devops
nameserver 192.168.11.2

Nous pouvons dès à présent recharger la configuration de BIND9 avec
la commande suivante :

systemctl reload bind9

Vérification du lien entre les noms et les adresse IP

nslookup
server localhost
dig debian.devops
dig 192.168.11.132.devops

Vérifier le bon fonctionnement d’un serveur DNS depuis un client.

Avec la commande Ping, je vais prendre mon poste client pour exécuter cette commande vers debian.devops, et gateway.devops

Sur ce dernier, il est évident, d’avoir paramétrer IP + Serveur DNS correspondant. (pour moi : DNS : 192.168.11.132)

Cela peut être un peut long (de pinguer depuis les clients) en fonction de la propagation DNS, qui peut être hasardeuse au début.

Je vous recommande pour faire vos tests de bien ajouter le serveur DNS en fonction de la carte réseau du client qui je le rappelle doit être sur le même réseau que celui du serveur DNS. (En l’état actuel)

Tout est bien qui finit bien, notre serveur DNS est accessible depuis un client et fonctionnel. Si vous souhaitez rajouter des enregistrements DNS, il vous faudra modifier la configuration des fichiers suivants comme nous avons vu précédemment.

  • /etc/bind/db.11.168.192.in-addr.arpa
  • /etc/bind/db.devops

À bientôt 🙂

Brlndtech


Geoffrey Sauvageot-Berland

Ingénieur diplômé par l’état en Informatique et Cybersécurité. Généraliste, à l'origine administrateur systèmes et réseaux, j’occupe actuellement un poste d’auditeur en sécurité offensive. J’apprécie également la programmation/automatisation. Fondateur du blog : "Le Guide du SecOps", anciennement "Le Guide du SysOps"