DNS : Domaine Name System
- Les machines utilisent les adresses IP pour communiquer.
- Les humaines ont du mal à manipuler et à retenir des adresses IP.
Ils retiennent plus facilement des noms de machines.
- Les DNS joue le rôle d’annuaire qui permet d’associer une adresse IP à une machine.
Caractéristiques de DNS
• Base de données répartie : chaque organisme gère son propre annuaire
• Base de données redondante : l’annuaire d’un organisme figure dans au moins deux DNS (DNS primaire et secondaire)
• Organisation hiérarchique, chaque annuaire est rattaché à un annuaire parent
Structure hiérarchique
• La structure hiérarchique de la base se représente sous la forme d’un arbre
• Correspond exactement à la notion
d’arborescence dans un système de fichiers.
Ici, la séparation utilisé est le point.
• Un domaine est un sous-arbre
• Un domaine est un nom unique, il ne peut pas en avoir deux du même nom.
Organisation hiérarchique des domaines
.
com edu gov fr net org info arpa
news mail
gouv univ-artois
iut-lens
in-addr 0-255 0-225 0-225 0-255
Nom de machine
• Le nom d’une machine s’écrit du plus
spécifique au moins spécifique (de gauche à droite) = ordre inverse du système de
fichiers
• On retrouve la notion de chemin absolu (FQDN) et relatif. Un chemin absolu se termine par un point.
Annuaire inversé
• Le DNS permet aussi de retrouver un nom de machine à partir de son adresse IP en utilisant le domaine in-addr.arpa et en cherchant un record de type PTR
• Comme les noms vont du plus spécifique au moins spécifique, cela nécessite d’inverser l’adresse IP
• Par exemple, pour rechercher le nom de
192.134.4.240, on recherchera 240.4.134.492.in- addr.arpa.
Les serveurs racine
• Un certain nombre de serveurs permettent de répondre aux questions sur le domaine même (A.ROOT-SERVERS.NET à M.ROOT-
SERVERS.NET)
• Ils connaissent les adresses des serveurs DNS pour tous les domaines de niveau 1
• Ils servent de point de départ pour les recherches qui ne figurent pas déjà dans un cache.
Les domaines de niveau 1
• Les instituts US :
– .com : commercial – .edu : education
– .gov : gouvernemental – .net : internet
– .mil : militaire
Les données d’un DNS
• Un DNS contient différents types d’informations
• Les unités d’info sont les Ressources Record (RR)
Les types de record (1)
• SOA (Start Of Authority)
Informations globales sur une zone de DNS
• NS (Name Server)
indique un serveur DNS qui a autorité pour un domaine
• A (Address)
fournit l’adresse IP d’une machine
• CNAME (Cannonical Name)
donne le nom canonique d’une machine
Les types de record (2)
• MX (Mail eXchanger)
identifie un relais de messagerie pour un domaine
• TXT (Text)
permet d’associer un commentaire à une entrée
• WKS (Well Known Services) liste de services fournis (rare)
• HINFO (Host Info)
information sur la machine (modèle, système) (rare)
• PTR (Pointer)
associe un nom à une adresse IP
DNS primaire et secondaire
• Les données concernant un domaine sont stockés dans un DNS dit primaire (ou maître)
• Un deuxième DNS (secondaire ou esclave) conserve une copie des données du serveur primaire (en cas de panne)
• Ces deux serveurs ont autorité pour répondre aux questions concernant leur domaine.
Cache
• Quand un serveur DNS transmet a un client une réponse qu’il a obtenu en interrogent un autre serveur, il la conserve dans un cache.
• Si la même requête lui parvient plus tard, il utilisera les données dans son cache mais signalera que les données sont « non
authoritative ».
TTL (Time To Live)
• Les données dans la cache d’un serveur
doivent expirer au bout d’un certain temps.
Cette durée est données par le TTL qui est un paramètre positionnée sur le serveur
primaire du domaine.
Les clients DNS : le resolver
• Sous UNIX, le client DNS est une simple librairie de fonctions (man resolver) utilisée par chaque application
• Le fichier de configuration principal est /etc/resolv.conf
/etc/resolv.conf
• Ce fichier contient essentiellement
– Le domaine par défaut à rajouter aux noms de machine qui ne sont pas absolus (directive
search)
– La liste des serveurs DNS à contacter pour
obtenir une réponse (les serveurs de cette liste sont essayés un par un jusqu’à obtenir une
réponse.)
Les commandes
• Dig (affichage complexe affiche le TTL)
• host
Deux types de requêtes DNS :
Il existes deux types :
• Les requêtes itératives
Le serveur consulté ne renvoie la réponse que si il la connaît (soit parce qu’il a autorité pour le domaine, soit parce qu’elle est dans son cache). Sinon, il se contente d’indiquer un autre serveur plus proche de la réponse à la question.
• Les requêtes récursives
Le serveur doit se débrouiller pour consulter les autres DNS et répondre à la question.
Remarques sur les requêtes itératives
• Si l’un des serveurs « . », « .au » ou
« .gov.au » avait eu la réponse dans son cache, il l’aurait renvoyé directement
• Les requêtes itératives font travailler le
client et minimisent la charge des serveurs DNS consultés
Remarques sur les requêtes récursives
• Le client est plus simple à programmer et n’a pas besoin d’un accès à tous les DNS (firewall)
• Normalement un serveur DNS n’utilise pas de requête récursive pour répondre aux
questions qu’on lui pose. Les serveurs DNS : BIND
Les serveurs DNS : BIND
• BIND (Berkeley Internet Domain) est le serveur DNS le plus courant.
• Le démon qui répond aux requêtes s’appelle named
• Les RR sont décrits par des lignes de la forme [name][TTL][classe] record-type record-data
• La seule classe à utiliser est IN (pour Internet)
Zone file
• Les RR sont regroupés dans les fichiers définissant une zone. On retrouvera par exemple une zone par sous-domaine.
• Chaque zone commence par un SOA record.
• Le principal fichier de configuration contient une description des zones (/etc/named.conf)
Le record SOA
domain. IN SOA DNSprimaire.emailresponsable ( 20011101 ; numéro de série (strictement
croissant)
10800 ; délai de rafraîchissement pour les esclaves
3600 ; délai pour réessayer si le maître est injoignable
604800 ; délai d’expiration si le serveur est toujours injoignable
86400 ; « minimum » TTL (par défaut dans BIND) )
Exemple de SOA
linux.bogus. IN SOA ns.linux.bogus.
root.linux.bogus(
1 ; serial
8H ; refresh 2H ; retry
4W ; expire 10 ; min TTL )
Reste du fichier
Linux.bogus. IN NS terminator IN NS robocop
robocop IN A 192.249.249.2
terminator IN A 192.249.249.3 schwarzy IN CNAME terminator
Reverse zone
249.249.192.in-addr.arpa.IN SOA ns.linux.bogus.
root.linux.bogus(…)
IN NS terminator.linux..bogus IN NS robocop.linux.bogus
2 IN PTR robocop.linux.bogus
3 IN PTR terminator.linux.bogus
/etc/named.conf
options { directory "/var/named"
forwarders { IP DNS à utiliser } }
zone " . " { type hint ; file
« named.ca »} ;
zone "linux.bogus"{ type master file
"named.linux.bogus"} ;
zone "249.249.192.in-addr.arpa"
{ type.master.file
"named.249.249.192.in-addr.arpa"} ;