Accueil > Tut's Linux > Bind9, un serveur DNS libre sous Linux

Bind9, un serveur DNS libre sous Linux

Les serveurs DNS sont à la base même de l’Internet. Sans eux, ils seraient possible de naviguer sur les sites web, mais il faudrait alors retenir les adresses IP de tous les serveurs que nous souhaitons visiter… Ce qui est impossible.
Le DNS permet de résoudre une adresse IP en nom, et inversement.

Bind9 est un paquet sous Unix qui est assez “particulier“…

Quand je dis particulier, c’est vis à vis du fait qu’il est utilisé par les plus grands & les plus gros serveurs DNS mondiaux… Oui, vous avez bien lu, Bind9 est LE paquet utilisé par Google (en version modifiée) en autre, mais aussi & surtout les serveurs DNS mondiaux racines…

I. Installation

Nous allons aussi installer “ResolvConf“, qui permettra de configurer les DNS plus facilement, et d’éviter les confusions dans les systèmes DNS (IP des DNS de votre FAI, de votre DNS personnel etc…)

Un autre outil vous sera installé, “bind-utils“. Grâce à ce paquet, 2 commandes principales pourront être fournies : nslookup & dig. Nous utiliserons ces commandes une fois le serveur DNS mit en place.

Le serveur créera son arborescence dans le dossier “/etc/bind/” :

  • /etc/hostsRésolution locale ;
  • /etc/resolv.confDomaine à rechercher et le serveur associé ;
  • /etc/host.confOrdre de recherche entre hosts ou bind ;
  • /etc/bind : Répertoire de la configuration générale de Bind9 ;
  • /var/cache/bind : Enregistrement de ressources pour les zones.

Fichiers de configuration :

  • /etc/bind/named.conf  : fichier général ;
  • /etc/bind/named.conf.options : fichier contenant les options de bind ;
  • /etc/bind/named.conf.local : fichier contenant notre zone.

Des fichiers nécessaires pour le fonctionnement du serveur sont créés, notamment des fichiers modèles. Ces fichiers vont nous être utiles. En effet, pour créer ces zones DNS, nous allons créer 2 fichiers dits “Fichier de zone“.
De plus, nous allons aussi devoir modifier un fichier de configuration même du serveur DNS, pour lui indiquer la “nouvelle” zone DNS.

II. Création des zones DNS

Soyez rigoureux sur la façon d’écrire les fichiers. Un problème d’espace, de caractère ou de faute de frappe peut paralyser toute la configuration du serveur DNS et donc provoquer son non-fonctionnement.

1°) Fichier “named.conf.local”

Le premier dont nous allons modifier est “named.conf.local“. C’est dans ce fichier qu’il faut définir notre nouvelle zone DNS.

N’oubliez pas de faire une copie du fichier d’origine, pour récupérer une version “de base” en cas de soucis de configuration.

Ce fichier est composé en deux parties :

  • Définition de la zone DNS principale
  • Définition de la zone DNS inverse

–> N’hésitez pas à revoir le cours DNS si vous ne comprenez pas pourquoi il doit y avoir 2 zones.

Voici le contenu du fichier named.conf.local, à modifier selon vos besoins : (Ce fichier peut être copié/collé)

Explications zone principale :

  • [ zone "actual-it.info" IN { ] –> Nous créons la zone portant le nom “actual-it.info”.
  • [ type master; ] –> Ce serveur est le serveur DNS principal, de même que la zone “actual-it.info” est la zone principale.
  • [ file "/etc/bind/xxx"; ] –> Emplacement du fichier contenant les paramètres de la zone principale.
  • [ allow-update {none;}; ] –> Nous refusons toute mise à jour, que se soit d’un tiers connu ou inconnu –> Paramètre permettant de sécuriser au minimum le serveur DNS.
  • [ }; ] –> Ne pas oublier de fermer l’accolade de déclaration de configuration.

Explications zone inverse :

  • [ zone "1.168.192.in-addr.arpa" IN { ] –> Nous créons la zone inverse dans notre plage IP de réseau privé (192.168.1.0)
  • [ type master; ] –> Ce serveur est le serveur DNS principal, de même que cette zone inverse en cours de rédaction.
  • [ file "/etc/bind/xxx"; ] –> Emplacement du fichier contenant les paramètres de la zone inverse.
  • [ allow-update {none;}; ] –> Nous refusons toute mise à jour, que se soit d’un tiers connu ou inconnu –> Paramètres permettant de sécuriser au minimum le serveur DNS.
  • }; ] –> Ne pas oublier de fermer l’accolade de déclaration de configuration.

Nous pouvons passer au second fichier, concernant les paramètres de la zone principale.

2°) Fichier “db.actual-it.info.local”

Le nom du fichier peut être changé. Vous pouvez le nommer “zone-principale.actual-it.info”, mais vous devrez alors répercuter ce nom dans le fichier “named.conf.local”.

Ce fichier définit les paramètres de la zone principale d’une part (adresse IP du serveur DNS + les paramètres quant à la mise à jour DNS du serveur), mais aussi les CNAME, les alias de redirection.
Dans notre cas, nous allons créer un alias “www”, qui permet d’accéder plus facilement à notre serveur DNS -> Tous les serveurs (serveur web par exemple) seront donc accessibles par “http://www.nom_server”.

  • “A” : srvdns.actual-it.info – Il s’agit du nom complet de notre serveur DNS. Il est noté en “A” majuscule pour définir son nom principal sur le réseau, et principalement dans la résolution de noms.
  • “www” : CNAME – Un CNAME est un alias DNS – le CNAME permet de créer une sorte de redirection (souvent plus simple à s’en rappeler) vers un serveur définit au préalable.
    Dans notre cas, nous pourrons accéder à notre serveur DNS plus facilement en écrivant “www” au lieu de “srvdns.actual-it.info

3°) Fichier “rev.actual-it.info.local”

Ce fichier est similaire à “db.actual-it.info.local”, sauf qu’il s’agit là du fichier de zone inverse.
Veillez bien à respecter la casse du fichier, les tabulations et la syntaxe “pure”, pour éviter les problèmes.

4°) Droits sur les fichiers nouvellement créés

Une fois les fichiers créés & modifiés selon vos besoins, il faut remettre les droits à l’utilisateur “bind”, pour que le serveur DNS “bind” puisse utiliser ces fichiers, et recharger la configuration du serveur pour prendre en compte les modifications.

5°) Tests

Une fois la configuration terminée & rechargée, il est nécessaire de tester la configuration pour s’assurer du bon fonctionnement et paramétrage du serveur DNS.

Vous avez 5 tests possibles :

  • Ping – Pingez votre serveur avec son nom complet, pour voir si l’adresse IP ressort bien lors du ping et donc, si la zone inverse fonctionne ;
    ping srvdns.actual-it.info
  • NSLookUp – Rechercher des informations DNS quant à une machine par son nom complet ou son adresse IP ;
    nslookup 192.168.1.110
  • named checkzone – Exemple d’utilisation : “named checkzone actual-it.info /etc/bind/db.actual-it.info.local” | “named checkzone actual-it.info /etc/bind/rev.actual-it.info.local” – Par ces 2 lignes de commandes, vous pourrez tester la validité de vos fichiers de configuration de vos zones.
    Si aucun pb n’est détecté, la commande retournera “OK”.
    Dans les autres cas, l’utilitaire pourra vous donner un début de piste de par l’erreur écrite en retour.
  • named checkconf – Exemple d’utilisation : “named checkconf actual-it.info /etc/bind/named.conf.local” – Cet utilitaire permet de contrôler votre fichier .conf, pour voir si il y a des erreurs de lecture du fichier (et donc, des erreurs de syntaxe.
  • Dig – Contrôler le bon paramétrage de la zone inverse et donc, la résolution de nom. La commande retournera une partie du fichier de zone inverse (notamment au niveau des enregistrements “A” et “CNAME”) si la recherche inverse s’est effectué sans encombres.
    dig actual-it.info

Après tous ces tests, vous pouvez savoir si oui ou non votre serveur DNS fonctionne, et donc, si votre résolution de nom est opérative !

A propos de Julien

Passionné d'informatique depuis mon enfance, je suis sans cesse à la recherche de nouveautés dans ce domaine. Retrouvez mon profil LinkedIn à cette adresse.

Laisser un commentaire