Domain Name System (DNS)
Introduction
Les noms de domaine et les noms d’hôte ne sont pas utiles au fonctionnement du réseau ; les adresses IP suffisent pour permettre la communication. Par contre, comme les noms sont plus faciles à retenir pour les humains que les chaînes de chiffres, un système a été inventé pour associer des noms à ces adresses IP : le DNS (en anglais : Domain Name System, système de noms de domaines). Grâce à ce système, les nœuds de réseau (serveurs, postes de travail, imprimantes, routeurs…) peuvent être désignés par des noms plus ou moins faciles à retenir ; le DNS traduit ces noms en adresses IP qui sont employées pour la communication et, à l’inverse, il restitue les noms de domaine et les noms d’hôte des adresses IP utilisées.
Ce système de noms de domaine est un système hiérarchique : le domaine de deuxième niveau example.com (en anglais : Second Level Domain) est un sous-domaine du domaine de premier niveau com (en anglais : Top Level Domain) ; le nom d’hôte vert.example.com est un sous-domaine de example.com, etc.
Pour un serveur comme celui décrit dans ce livre, ces trois niveaux suffisent. En revanche, pour une grande entreprise multinationale, ce n’est pas inimaginable d’avoir...
Installation
BIND fait partie de l’archive de logiciels de toutes les distributions Linux et de tous les systèmes BSD, ce qui facilite l’installation.
1. FreeBSD
L’archive de logiciels de FreeBSD contient plusieurs versions de BIND, mais malheureusement les noms des paquetages ne sont pas très utiles : les numéros de version (9.11 et 9.14 au moment de l’écriture de ce livre) sont incorporés dans les noms, mais les descriptions des paquetages n’expliquent pas les différences entre les deux. Sur le site web de BIND, on peut lire que ce sont des versions stables toutes les deux, mais la 9.11 est une version appelée Extended Support Version (version de support prolongé) : ISC propose un support technique pendant plus longtemps pour cette version. Comme vert.example.com sera mis à jour régulièrement, on peut opter pour la version 9.14, qui sera remplacée par une version plus récente quand elle sera disponible.
Les outils administratifs sont publiés dans le paquet dns/bind-tools. Ce paquet sera installé automatiquement comme dépendance de dns/bind914.
freebsd# pkg search bind
freebsd# pkg install bind914
La configuration de BIND sera installée dans le répertoire /usr/local/etc/namedb, le script de démarrage, redémarrage et arrêt s’appelle /usr/local/etc/rc.d/named. Les fichiers...
Configuration
BIND est configuré à l’aide du fichier named.conf. Le style de commentaires dans ce fichier texte est le style JavaScript (deux barres obliques pour une seule ligne ; les commentaires multilignes sont encadrés par des barres obliques et des astérisques).
freebsd# cd /usr/local/etc/namedb
debian# cd /etc/bind
centos# cd /etc
Avant de créer la configuration, une clé est générée qui sera utilisée pour indiquer au daemon de recharger la configuration sans redémarrer le serveur.
# rndc-confgen -a -r /dev/urandom
Cette commande génère un fichier nommé rndc.key dans le répertoire de configuration. Ce fichier sera inclus dans la configuration ultérieurement.
Le fichier de configuration d’exemple, qui se trouve dans les fichiers à télécharger de ce livre, est un bon point de départ pour une nouvelle configuration. Il est également recommandé de conserver le fichier d’origine pour référence.
# mv named.conf named.conf.orig
# nano named.conf
L’exemple commence par la définition de deux listes, esclaves et loopback. Ces listes peuvent contenir des adresses IP et des plages d’adresses IP, séparées par des points-virgules. La première liste contient les adresses IP de tous les serveurs secondaires ; dans...
Ajout de domaines
La configuration décrite ci-dessus crée un serveur DNS qui sait répondre aux requêtes pour le "nom de domaine" localhost (et aux requêtes inversées pour l’adresse IP 127.0.0.1), et qui sait renvoyer les requêtes pour d’autres domaines et d’autres adresses IP à d’autres serveurs dans la hiérarchie DNS. Pour pouvoir traiter le DNS pour les domaines réservés example.com, example.edu et example.org, des fichiers zone doivent être créés pour ces noms de domaine ; puis named, l’exécutable du paquet BIND, doit savoir où trouver ces fichiers zone.
Il n’existe pas de règles pour le nommage des fichiers zone, mais il est bien sûr recommandé d’employer des noms reconnaissables. Une des conventions utilisées pour le nommage est celle de nom-point-zone, par exemple example.com.zone. Certaines distributions ont opté pour l’extension de fichier .db, mais cela peut donner l’impression fausse qu’il s’agit d’une base de données qui exige un outil spécialisé pour la modifier ; les fichiers zone peuvent être ouverts et modifiés à l’aide d’un éditeur de texte ordinaire.
1. Fichier zone
Pour l’instant, voici le fichier zone du domaine example.com :
$ORIGIN example.com.
$TTL 1d
@ IN SOA ns.example.com. sysadmin.example.com. (
2020011502 ; Numéro de série
3h ; Renouveler
1h ; Réessayer
1000h ;...
Résolution inverse
Dans le chapitre précédent, nous avons parlé de la résolution de noms d’hôte en adresses IP (en anglais : forward resolving). Il existe également la résolution inverse (en anglais : reverse resolving), parfois abrégée en rDNS (reverse DNS) : la recherche du nom d’hôte pour une adresse IP.
Normalement, ce DNS inverse est pris en charge par l’hébergeur. Pour associer un nom d’hôte à l’adresse IP du serveur, l’administrateur système se connecte à l’interface web de l’hébergeur et saisit le nom d’hôte principal, vert.example.com dans notre cas, dans le formulaire mis en place à cet effet.
Comme beaucoup de serveurs courriel refusent des messages provenant des hôtes sans enregistrement DNS inverse, cet enregistrement est crucial. Si vous ne le trouvez pas dans l’interface web de votre hébergeur, contactez-le pour vous renseigner.
En complément nécessaire pour installer un serveur interne, voici le fichier zone pour faciliter le DNS inverse pour le domaine example.com utilisant la plage d’adresses IP 198.51.100.152/29 (198.51.100.152 - 198.51.100.159) :
$ORIGIN 100.51.198.in-addr.arpa.
$TTL 2d
@ IN SOA ns.example.com. sysadmin.example.com....
Consultation et débogage
Pour tester et, si nécessaire, déboguer la configuration DNS, les outils host et dig sont quelques-uns des outils qui permettent de faire des requêtes DNS.
# host vert.example.com
vert.example.com has address 198.51.100.156
# host 198.51.100.156
156.100.51.198.in-addr.arpa domain name pointer
vert.example.com.
# host -t MX example.com
example.com mail is handled by 10 mx.example.com.
L’application dig donne des réponses un peu plus élaborées que host.
Évidemment, pour l’inspection et le débogage il est essentiel d’être sûr que les réponses reçues proviennent du serveur à investiguer et non d’un serveur secondaire. Pour garantir cela, l’adresse du serveur à solliciter peut être ajoutée à la commande ; pour host en dernier paramètre, et pour dig précédé par une arobase.
Envoi d’une requête au serveur local pour trouver l’adresse de jaune.example.com :
# host jaune.example.com 127.0.0.1
Envoi d’une requête à vert.example.com pour trouver le serveur MX du domaine example.com :
# dig @198.51.100.156 -t MX example.com