Comment installer et configurer / paramétrer un serveur DNS Bind9 avec Linux ? Si vous vous posez cette question, le but de ce tutoriel est de vous présenter étape par étape comment procéder de manière simple et rapide. Pour réaliser ce tutoriel je dispose de deux machines, une sous Linux Ubuntu et une autre sous Windows pour vérifier que le DNS fonctionne.

Sommaire :

Paramètres de base

Nous avons donc deux machines :

  • Le nom de machine Linux qui sera le serveur DNS BIND9 est : Ubuntu (très compliqué)
  • Le nom de machine de Windows est : fafa (j’étais fatigué 😉 )

Dans un premier temps, je vais installer le serveur DNS BIND9 sur la machine Ubuntu, puis la machine fafa prendra comme paramètre réseau, et donc comme serveur DNS celui-ci à la place de celui que me fournit mon fournisseur d’accès internet.

Installer BIND9 dans Linux

Nous allons commencer l’installation de BIND9 Sur la machine Ubuntu, première chose mettre à jour les paquets :

sudo apt-get update
sudo apt-get upgrade

Passons maintenant à l’installation, je lance la ligne de commande, dans celle-ci je passe en super utilisateur et je tape :

aptitude install bind9

L’installation commence, s’il ne trouve pas le paquet bind9, c’est que la mise à jour précédente n’a peut-être pas fonctionnée (ou vous n’êtes pas connecté à internet, je sais vous avez surement vérifié). Sinon vous pouvez aussi changer de serveur de dépôt pour les paquets de votre Linux. mais normalement, l’installation va se lancer et pendant l’installation du serveur DNS Bind9, on vous demande une confirmation pour continuer taper le lettre « Y » pour Yes, puis entrée pour valider.

L’installation est terminée comme on peut le voir sur la capture ci-dessous, on voit à la fin que le serveur DNS est lancé avec la phrase « starting domain name service….. bind9 ».

Seulement celui-ci fonctionne sans paramétrage, donc ce n’est pas ce que nous souhaitons, maintenant on va mettre les mains dans le plat et nous allons commencer à paramétrer notre serveur DNS.

Configurer le serveur DNS BIND9

Dans un premier temps on se déplace dans le dossier de bind :

cd /etc/bind/

Puis on sauvegarde en les copiant les fichiers par défaut, en cas de mauvaise manipulation on pourra les remettre en place par la suite :

cp named.conf named.conf.save
cp named.conf.options named.conf.options.save
cp named.conf.local named.conf.local.save

Désormais, nous allons modifier le fichier named.conf.local en ajoutant nos « zones » dans le serveur DNS pour qu’il puisse par la suite rediriger le trafic vers la bonne adresse IP. Pour cela, on va ouvrir le fichier avec l’éditeur de fichier de votre choix, par exemple Nano, dans la démonstration ci-dessous j’utilise Gedit, mais sur un serveur sans interface graphique ce n’est pas possible.

nano /etc/bind/named.conf.local

A l’ouverture le fichier doit ressembler à quelque chose comme cela. Nous allons ajouter les zones à la suite.

Créer des zones DNS

Dans le fichier, je vais créer mes zones, celles-ci seront « fafa.local » (vous devez modifier cette zone avec votre nom) et « 1.168.192.in-addr.arpa » (vous pouvez également adapter à votre situation en fonction de vos adresses réseaux).

Cela signifie que nous créer une zone et une zone inversée, pour retrouver le nom de domaine lorsqu’on renseigne aussi bien l’url que l’adresse IP. Voici la configuration que je vais ajouter dans le fichier :

zone "fafa.local" IN {
type master;
file "db.fafa.local";
allow-update { none; };
};

// zone inversée
zone "1.168.192.in-addr.arpa" IN {
type master;
file "rev.fafa.local";
allow-update { none; };
};

Dans vos zones, vous devez indiquer les noms de fichiers de zone que vous allez utiliser. Pour le moment il n’existe pas, nous allons les créer juste après, changez par exemple fafa par le nom qui vous convient, par exemple db.toto.local et rev.toto.local.

Ici, pour simplifier, nous venons de déclarer nos zones et nous indiquons dans quel fichier se trouve les détails de ces dernières.

L’emplacement de tous les fichiers de zones se détermine à partir du répertoire donné comme option : /var/cache/bind, c’est ici que nous allons créer les fichiers db.fafa.local et rev.toto.local. L’instruction allow-update { none; } n’autorise pas de mise à jour dynamique du DNS.

Créer les fichiers des zones

Maintenant, il faut créer les fichiers que nous venons de déclarer pour nos zones. Alors commençons : je crée le fichier le premier fichier db.fafa.local dans /var/cache/bind/.

nano /var/cache/bind/db.fafa.local

Je le rempli avec le texte ci-dessous, je ne vais pas tous décrire, il vous suffit de consulter la documentation, mais pour faire simple l’arobase indique un raccourci pour désigner le nom de la zone actuelle spécifié dans l’instruction zone du fichier /etc/bind/named.conf.

Ensuite vous avez le nom de mon serveur ubuntu puis la zone fafa.local adapter donc en fonction de votre cas, par la suite garder root mais modifier la zone en fonction de votre cas.

ATTENTION : n’oubliez pas le point local

Vous pouvez constater que le numéro de série 2011073101 est une date à l’envers, 31-07-2011 plus 01 , c’est moi qui l’ai choisi, prenez par exemple la date du jour, ce numéro est utilisé dans les échanges avec un serveur secondaire.

A la fin du fichier indiquer vos machines sur le réseau.

Maintenant je créer le deuxième fichier rev.fafa.local dans /var/cache/bind/

Je recommence à créer mon fichier, la principal différence se situe à la fin de celui-ci ou j’indique la fin de IP puis le nom de ma machine, par exemple mon IP est 192.168.1.45 je garde le 45 et j’indique son nom ubuntu et le réseau local fafa.local.

ATTENTION : pareil qu’avant, ne pas oublier le . a la fin.

Attribuer les droits

J’attribue au groupe bind les deux fichiers que je viens de créer et je modifie les droits pour qu’il puisse être accessible au démon.

Modifier le fichier resolv.conf

Je modifie le fichier resolv.conf

Je le modifie pour qu’il contienne les lignes suivantes :

  • domain : avec mon nom de réseau
  • search : avec mon nom de réseau
  • nameserver : avec l’adresse ip de mon serveur DNS

Explications :

L’expression « domain » fixe le domaine courant, « search » fait ajouter le domaine « fafa.local » par défaut aux demandes avec un nom d’hôte non entièrement qualifié, puis mon serveur DNS BIND9 sera intérrogé.

Résultat :

domain fafa.local
search fafa.local
nameserver 192.168.1.45

Vérifier la configuration du serveur DNS BIND9

Pour être sur que nous n’avons pas fait d’erreur, nous pouvons lancer deux commandes pour s’assurer que la configuration du serveur DNS BIND9 est ok. Pour cela, nous allons procéder à quelques vérifications, nous lançons la commande named-checkconf pour vérifier le fichier par défault /etc/bind/named.conf, si tout est bon, il ne retourne rien.

named-checkconf -d fafa.local db.fafa.local

Puis je vais lancer l’utilitaire named-checkzone sur mes fichiers de zone, je me place dans le dossier Bind de Linux et je lance la commande :

named-checkzone -d fafa.local db.fafa.local

La commande doit retourner ce que vous voyez sur la capture ci-dessous.

Il faut faire la même procédure, mais pour la zone inversée.

Maintenant, j’ouvre une seconde console et je passe en super-utilisateur. Je lance la commande :

 tail -f /var/log/syslog 

L’objectif, c’est de me permettre de visualiser en temps réel le fichier de logs général. Si j’ai un souci par la suite avec le serveur lorsque je vais le relancer juste après, je pourrai vérifier dans les logs d’où provient l’erreur.

Maintenant que tout est en place, je relance le serveur DNS BIND9, alors la commande a changer, donc c’est a adapter selon votre cas.

systemctl restart bind9

Je vais maintenant vérifier que tout fonctionne correctement, pour cela j’utilise les outils « host » et « dig », ceux-ci sont généralement installés par défaut, mais dans le cas où il ne le seraient pas, vous pouvez les installer avec la commande :

aptitude install dnsutils

Je lance la commande :

host -v ubuntu.fafa.local

Cette commande interroge le service DNS et nous montre les bonnes réponses pour les enregistrements, elles sont conformes à nos fichiers de configuration. Cela doit également être le cas pour vous.

La commande dig permet également d’interroger le service DNS :

dig SOA fafa.local

Paramétrer le serveur DNS sur une autre machine Windows

Maintenant, mon serveur DNS est opérationnel. Je vais sur ma machine Windows. Je vais dans l’utilitaire pour modifier mon adresse IP et les paramètres de cette dernière. Je suis passé par le panneau de configuration puis « Réseau ».

Dans la case serveur DNS, je renseigne l’adresse IP de mon serveur DNS BIND9 qui tourner sous Linux Ubuntu.

Sur ma machine Windows, c’est l’heure de vérité, je lance une console et je tape ipconfig /all pour vérifier mes informations réseaux. Je constate que mon serveur DNS est bien pris en compte.

Maintenant je lance un ping sur le nom de serveur et non son IP, celui-ci répond donc c’est que la relation fonctionne.

Dernier test, je me connecte à internet, la connexion fonctionne c’est OK

Ce tutoriel sur l’installation d’un serveur DNS sous Linux est terminé j’espère qu’il vous aura été utile. Avant de partir, j’aurais, peut-être du commencer par là, c’est quoi une serveur DNS ?

Qu’est-ce qu’un server DNS ?

Les serveur DNS sont essentielles au bon fonctionnement de l’internet, il s’agit d’un technique de résolution hiérarchisée des noms pour traduire un nom de domaine totalement qualifié en une adresse IP numérique. Un serveur DNS permet donc d’utiliser les adresses WEB du type www.google.com alors que les serveurs ne peuvent comprendre que les adresses IP numérique, pour accéder à cette même page google avec une IP numérique l’adresse est 216.58.198.206. Cliquer sur les deux liens vous arriverez au même endroit. Les serveur DNS permettent donc de faire correspondre l’adresse IP numérique à un nom de domaine pour l’internet ou un nom de machine pour un réseau local tout simplement.

Le système DNS a été conçu à l’origine pour le réseau Internet et vous y recourez dès que vous vous connectez à une adresse Web telle que www.google.com, Ce nom facile à retenir est traduit par un serveur DNS ou plusieurs serveurs DNS pour obtenir l’adresse IP du site Web recherché.

Les serveur DNS dialogue entre eux. C’est de cette manière qu’ils parviennent à résoudre les noms de domaines qualifiés pour lesquels l’un d’entre eux ne trouve pas de correspondance dans sa base locale. Autrement dit, tous les serveurs DNS forment une sorte de réseau technique à l’intérieur du réseau. Chacun partage ses informations avec les serveurs les plus proches.

De cette manière, les requêtes et les réponses transitent de serveur DNS en serveur DNS. Ce processus de collecte de nouvelles données permet à chaque serveur serveur d’enrichir sa propre base de données.

Installer serveur DNS Linux
Installer serveur DNS Linux

FONCTIONNEMENT DU SYSTÈME DNS

Il existe deux types de serveur DNS : les maîtres et les esclaves. Le serveur maître est par définition le premier serveur DNS à mettre en place sur un réseau. C’est lui qui mémorise la base de données des noms locaux, contenant un enregistrement pour chaque machine hôte qui fournit les adresses des noms et les adresses IP correspondantes.

Autrement dit, la création des enregistrements et l’optimisation de la base sont réalisées sur le serveur DNS maître.

Les serveurs DNS esclaves

Un serveur DNS esclave contient une copie de la base de données du serveur DNS maître. Une demande de résolution pourra ainsi être satisfaite par l’un ou l’autre. Cela ajoute par ailleurs de la redondance au réseau. En effet, le service DNS est toujours disponible même si le serveur DNS maître est hors de fonction. De ce fait, un serveur DNS (maître ou esclave) tente de résoudre une requête d’adresse de nom de domaine ou machine provenant d’un des clients de la zone d’autorité du serveur DNS principal.

Les machines clientes

Les machines clientes peuvent lui adresser des requêtes grâce à l’existence d’une entité qui s’appelle le résolveur. Ce mécanisme est intégré aux applications Web telles que les navigateurs qui ont besoin de cette conversion de noms de domaine en adresses IP. Lorsqu’un client a besoin de connaître l’adresse IP correspondant à un nom, le résolveur scrute une zone de mémoire cache local (lorsqu’il est configuré pour gérer un cache local ; la plupart des clients réseau, quel que soit le système, gèrent un cache DNS). Il recherche une entrée correspondant au nom de domaine pour trouver l’adresse IP. S’il trouve, le processus s’achève et l’adresse IP peut être résolue directement par le poste client.

Si l’information ne se trouve pas dans le cache local, le résolveur se sert de l’adresse IP du serveur DNS local (qui est indiqué dans les paramètres TCP/IP du client) auquel il envoie une requête.

Si le nom recherché concerne une machine hôte qui se trouve sur le réseau local, le serveur le trouve dans la base et renvoie l’adresse IP correspondante. Si le nom correspond à une machine qui ne se trouve pas dans le domaine, deux possibilités se font jour. Soit le nom peut être résolu via le cache géré au niveau du serveur DNS local. Le serveur va alors le mémoriser après l’avoir résolu.

Soit le nom ne se trouve pas dans le cache du serveur DNS, lequel adresse alors une requête au serveur racine du domaine de premier niveau de l’hôte. Le serveur racine se sert du nom d’hôte pour connaître l’adresse IP du serveur DNS ayant autorité sur le domaine auquel appartient le destinataire. Votre serveur DNS, une fois qu’il dispose de l’adresse IP du serveur DNS de l’autre domaine, lance une requête auprès de ce serveur pour obtenir l conversion du nom de domaine en adresse IP. Le serveur DNS local renvoie ensuite ‘information à la machine qui l’a réclamée.