Qu'appelle-t-on DNS ?Chaque ordinateur directement connecté à internet possède au moins une adresse IP propre. Cependant, les utilisateurs ne veulent pas travailler avec des adresses numériques du genre
194.153.205.26 mais avec un non de domaine
ou des adresses plus explicites (appelées adresses FQDN) du type [
www.commentcamarche.net]. Ainsi, il est possible d'associer des noms en langage courant aux adresses numériques grâce à un système appelé
DNS (
Domain Name System).
On appelle
résolution de noms de domaines (ou
résolution d'adresses) la corrélation entre les adresses IP et le nom de domaine associé.
Noms d'hôtes:Aux origines de TCP/IP, étant donné que les réseaux étaient très peu étendus ou autrement dit que le nombre d'ordinateurs connectés à un même réseau était faible, les administrateurs réseau créaient des fichiers appelés
tables de conversion manuelle. Ces tables de conversion manuelle étaient des fichiers séquentiels, généralement nommés
hosts ou
hosts.txt, associant sur chaque ligne l'adresse IP de la machine et le nom littéral associé, appelé
nom d'hôte.
Introduction au Domain Name System:Le système précédent de tables de conversion
nécessitait néanmoins la mise à jour manuelle des tables de tous les
ordinateurs en cas d'ajout ou de modification d'un nom de machine.
Ainsi, avec l'explosion de la taille des réseaux, et de leur
interconnexion, il a fallu mettre en place un système de gestion des
noms hiérarchisé et plus facilement administrable. Le système nommé
Domain Name System (
DNS), traduisez
Système de nom de domaine,
a été mis au point en novembre 1983 par Paul Mockapetris (RFC 882 et
RFC 883), puis révisé en 1987 dans les RFCs 1034 et 1035. Le DNS a fait
l'objet depuis de nombreuses RFCs.
Ce système propose :
- un espace de noms hiérarchique permettant de garantir l'unicité d'un nom dans une structure arborescente, à la manière des systèmes de fichiers d'Unix.
- un système de serveurs distribués permettant de rendre disponible l'espace de noms.
- un système de clients permettant de « résoudre » les
noms de domaines, c'est-à-dire interroger les serveurs afin de
connaître l'adresse IP correspondant à un nom.
L'espace de noms:La structuration du système DNS s'appuie sur une
structure arborescente dans laquelle sont définis des domaines de
niveau supérieurs (appelés
TLD, pour
Top Level Domains), rattachés à un noeud racine représenté par un point.
On appelle «
nom de domaine » chaque noeud de l'arbre. Chaque noeud possède une étiquette (en anglais «
label ») d'une longueur maximale de 63 caractères.
L'ensemble des noms de domaine constitue ainsi un arbre inversé où chaque noeud est séparé du suivant par un point (« . »).
L'extrémité d'une branche est appelée
hôte,
et correspond à une machine ou une entité du réseau. Le nom d'hôte qui
lui est attribué doit être unique dans le domaine considéré, ou le cas
échéant dans le sous-domaine. A titre d'exemple le serveur web d'un
domaine porte ainsi généralement le nom
www.
Le mot «
domaine » correspond
formellement au suffixe d'un nom de domaine, c'est-à-dire l'ensemble
des étiquettes de noeuds d'une arborescence, à l'exception de l'hôte.
Le nom absolu correspondant à l'ensemble des
étiquettes des noeuds d'une arborescence, séparées par des points, et
terminé par un point final, est appelé
adresse FQDN (
Fully Qualified Domain Name, soit
Nom de Domaine Totalement Qualifié).
La profondeur maximale de l'arborescence est de 127 niveaux et la
longueur maximale d'un nom FQDN est de 255 caractères. L'adresse FQDN
permet de repérer de façon unique une machine sur le réseau des
réseaux. Ainsi
www.commentcamarche.net. représente une adresse FQDN.
Les serveurs de noms:Les machines appelées
serveurs de nom de domaine permettent d'établir la correspondance entre le nom de domaine et l'adresse IP des machines d'un réseau.
Chaque domaine possède un serveur de noms de domaines, appelé « serveur de noms primaire » (
primary domain name server), ainsi qu'un serveur de noms secondaire (
secondary domaine name server), permettant de prendre le relais du serveur de noms primaire en cas d'indisponibilité.
Chaque serveur de nom est déclaré dans à un
serveur de nom de domaine de niveau immédiatement supérieur, ce qui
permet implicitement une délégation d'autorité sur les domaines. Le
système de nom est une architecture distribuée, où chaque entité est
responsable de la gestion de son nom de domaine. Il n'existe donc pas
d'organisme ayant à charge la gestion de l'ensemble des noms de
domaines.
Les serveurs correspondant aux domaines de plus haut niveau (TLD) sont appelés «
serveurs de noms racine ». Il en existe treize, répartis sur la planète, possédant les noms « a.root-servers.net » à « m.root-servers.net ».
Un serveur de noms définit une zone, c'est-à-dire un ensemble de domaines sur lequel le serveur a autorité. Le système de
noms de domaine est transparent pour l'utilisateur, néanmoins il ne faut pas oublier les points suivants :
- Chaque ordinateur doit être configuré avec l'adresse d'une
machine capable de transformer n'importe quel nom en une adresse IP.
Cette machine est appelée Domain Name Server. Pas de panique: lorsque
vous vous connectez à internet, le fournisseur d'accès va
automatiquement modifier vos paramètres réseau pour vous mettre à
disposition ces serveurs de noms.
- L'adresse IP d'un second Domain Name Server (secondary
Domain Name Server) doit également être définie : le serveur de noms
secondaire peut relayer le serveur de noms primaire en cas de
dysfonctionnement.
Le serveur le plus répandu s'appelle
BIND (
Berkeley Internet Name Domain). Il s'agit d'un logiciel libre disponible sous les systèmes UNIX
, développé initialement par l'université de Berkeley en Californie et désormais maintenu par l'
ISC (
Internet Systems Consortium).
Résolution de noms de domaine:Le mécanisme consistant à trouver l'adresse IP correspondant au nom d'un hôte est appelé «
résolution de nom de domaine ». L'application permettant de réaliser cette opération (généralement intégrée au système d'exploitation) est appelée «
résolveur » (en anglais «
resolver »).
Lorsqu'une application souhaite se connecter à
un hôte connu par son nom de domaine (par exemple
« resinfotun.1fr1.net »), celle-ci va interroger un serveur de noms
défini dans sa configuration réseau. Chaque machine connectée au réseau
possède en effet dans sa configuration les adresses IP de deux serveurs
de noms de son fournisseur d'accès.
Une requête est ainsi envoyée au premier
serveur de noms (appelé « serveur de nom primaire »). Si celui-ci
possède l'enregistrement dans son cache, il l'envoie à l'application,
dans le cas contraire il interroge un serveur racine (dans notre cas un
serveur racine correspondant au TLD « .net »). Le serveur de nom racine
renvoie une liste de serveurs de noms faisant autorité sur le domaine
(dans le cas présent les adresses IP des serveurs de noms primaire et
secondaire de resinfotun.foeumn.net).
Le serveur de noms primaire faisant autorité
sur le domaine va alors être interrogé et retourner l'enregistrement
correspondant à l'hôte sur le domaine (dans notre cas
www).
Types d'enregistrements:Un DNS est une base de données répartie contenant des enregistrements, appelés
RR (
Resource Records),
concernant les noms de domaines. Seules sont concernées par la lecture
des informations ci-dessous les personnes responsables de
l'administration d'un domaine, le fonctionnement des serveurs de noms
étant totalement transparent pour les utilisateurs.
En raison du système de cache permettant au
système DNS d'être réparti, les enregistrements de chaque domaine
possèdent une durée de vie, appelée
TTL (
Time To Live, traduisez
espérance de vie),
permettant aux serveurs intermédiaires de connaître la date de
péremption des informations et ainsi savoir s'il est nécessaire ou non
de la revérifier.
D'une manière générale, un enregistrement DNS comporte les informations suivantes :
Nom de domaine (FQDN)TTLTypeClasseRData
- Nom de domaine : le nom de domaine doit être un nom
FQDN, c'est-à-dire être terminé par un point. Si le point est omis, le
nom de domaine est relatif, c'est-à-dire que le nom de domaine
principal suffixera le domaine saisi ;
- Type : une valeur sur 16 bits spécifiant le type de
ressource décrit par l'enregistrement. Le type de ressource peut être
un des suivants :
- A : il s'agit du type de base établissant la
correspondance entre un nom canonique et une adresse IP. Par ailleurs
il peut exister plusieurs enregistrements A, correspondant aux
différentes machines du réseau (serveurs).
- CNAME (Canonical Name) : il permet de faire
correspondre un alias au nom canonique. Il est particulièrement utile
pour fournir des noms alternatifs correspondant aux différents services
d'une même machine.
- HINFO : il s'agit d'un champ uniquement descriptif
permettant de décrire notamment le matériel (CPU) et le système
d'exploitation (OS) d'un hôte. Il est généralement conseillé de ne pas
le renseigner afin de ne pas fournir d'éléments d'informations pouvant
se révéler utiles pour des pirates informatiques.
- MX (Mail eXchange) : correspond au serveur de
gestion du courrier. Lorsqu'un utilisateur envoie un courrier
électronique à une adresse (utilisateur@domaine), le serveur de
courrier sortant interroge le serveur de nom ayant autorité sur le
domaine afin d'obtenir l'enregistrement MX. Il peut exister plusieurs
MX par domaine, afin de fournir une redondance en cas de panne du
serveur de messagerie principal. Ainsi l'enregistrement MX permet de
définir une priorité avec une valeur pouvant aller de 0 à 65 535 :
- NS : correspond au serveur de noms ayant autorité sur le domaine.
- PTR : un pointeur vers une autre partie de l'espace de noms de domaines.
- SOA (Start Of Authority) : le champ SOA permet
de décrire le serveur de nom ayant autorité sur la zone, ainsi que
l'adresse électronique du contact technique (dont le caractère « @ »
est remplacé par un point).
</li>
Classe : la classe peut être soit IN (correspondant aux protocoles d'internet, il s'agit donc du système utilisé dans notre cas), soit CH (pour le système chaotique) ;
RDATA : il s'agit des données correspondant à l'enregistrement. Voici les informations attendues selon le type d'enregistrement :
A : une adresse IP sur 32 bits ;
CNAME : un nom de domaine ;
MX : une valeur de priorité sur 16 bits, suivi d'un nom d'hôte ;
NS : un nom d'hôte ;
PTR : un nom de domaine ;
SOA : plusieurs champs.
</li>