Généralité sur le dns
Par Minitux le lundi, juin 1 2009, 14:32 - Réseau - Lien permanent
DNS (Domain Name System) ou système de service de noms permet à une application ou à un utilisateur de faire la correspondance entre un nom et une adresse ip et inversement. Voici quelques explications :
1 - Historique
Au début de l'histoire de l'Internet, la correspondance entre le nom et l'adresse d'une machine était placée dans le fichier /etc/hosts, présent sur toutes les machines unix dotées d'une couche réseau.
Mais tout ceci est vite devenu ingérable à cause de la très forte croissance d'Internet, mais aussi à cause de l'absence de nomenclature.
2 - Système hiérarchisé
L'espace de noms, préalablement non structuré, est désormais réorganisé de manière hiérarchique, sous forme d'un arbre. Cette organisation entraine une hiérarchisation des noms de machines et des autorités qui ont le pouvoir de les nommer, de les maintenir.
Chaque noeud de l'arbre porte un nom, la racine n'en a pas. Les machines, feuilles de l'arbre, sont nommées à l'aide du chemin parcouru de la feuille (machine) à la racine (non nommée).
Le séparateur entre chaque embranchement, ou noeud, est le point décimal.
blog.free.fr
Derrière ce nom il faut imaginer un point (.) qui est omis la plupart du temps car il est implicite.
Domaine & zone
Le réseau peut être considéré comme une hiérarchie de domaines.
fr Domaine fr
free.fr Domaine free.fr sous domaine du fr
blog.free.fr Domaine blog.free.fr sous domaine de free.fr
Exceptée la racine , tout domaine est un sous domaine d'un autre.
Une zone est un point de délégation dans l'arbre DNS, autrement dit une zone concerne un sous arbre du DNS dont l'administration lui est propre.
Ce sous arbre peut comprendre plusieurs niveaux, c'est à dire plusieurs sous domaines. Une zone peut être confondue avec le domaine dans les cas les plus simples.
Dans les exemples ci-dessus, on peut parler de zone minitux.free.fr puisque celle-ci est gérée de manière autonome par rapport à la zone free.fr.
Chaque zone doit avoir un serveur principal ( master) qui détient ses informations d'un fichier configuré manuellement ou semi manuellement.
Plusieurs serveurs secondaires (slave) recoivent une copie de la zone via le réseau et pour assurer la continuité du service (par la redondance des serveurs).
Le fait d'administrer une zone est le résultat d'une déléguation de pouvoir de l'administrateur de la zone parente et se concrétise par la responsabilité de configurer et d'entretenir.
Hiérarchie des domaines
Le NIC gère le plus haut niveau de la hiérarchie, appelé aussi celui des top levels domains (TLD).
Les instances régionales du NIC gèrent les domaines qui leur sont dévolus.
Par exemple le NIC France gère le contenu de la zone .fr.
Chaque administrateur de domaine est en charge de son domaine et des sous domaines qu'il crée.
Les éventuels conflits de nommage sont à la charge des administrateurs de domaine.
Du fait de la hiérarchisation, des machines de même nom peuvent se trouver dans des domaines différents sans que cela pose le moindre problème.
Le nom www' est de loin le plus employé , pourtant il n'y a aucune confusion possible entres ces machines, comme par exemple entres les machines www.free.fr et www.google.fr.
Chaque site raccordé de manière permanente procède de cette manière, ainsi il n'y a pas une base de données pour l'Internet mais un ensemble structuré de bases de données reliées entres elles et formant une gigantesque base de données distribuée.
3 - Convention de nommage et complétion
Voici les contraintes de nommages defini par la RFC 1034 :
Le . est le séparateur
Chaque noeud ne peut faire que 63 caractères au maximum. Le le bon usage les limite à 12 caractères et commençant par une lettre.
Les majuscules et minuscules sont indifférenciées.
Les chiffres [0-9] et le tiret peuvent être utilisés, le souligné (_) est un abus d'usage.
Le point . et le blanc sont proscrits.
Les chaînes de caractères comme NIC ou d'autres acronymes bien connus sont à éviter absolument, même encadrées par d'autres caractères
.
Les noms complets ne doivent pas faire plus de 255 caractères de long.
Sur un même réseau logique on a coutume de ne pas utiliser le nom complet des machines auxquelles on s'adresse couramment et pourtant ça fonctionne !
La raison est que le resolver, partie du système qui est en charge de résoudre les problèmes de conversion entre un nom de machine et son adresse IP, utilise un mécanisme de complétion pour compléter le nom de machine simplifié, jusqu'à trouver un nom plus complet que le serveur de noms saura reconnaître dans sa base de données.
Le resolver connait par hypothèse le ou les noms de domaine (à partir du fichier /etc/resolv.conf) qui concernent la machine locale.
domain blog.free.fr search blog.free.fr., google.fr. nameserver 192.168.1.1 nameserver 1.2.3.4
Si l'on cherche à résoudre minitux, le resolver tentera minitux.blog.free.fr et ceci sera un succès.
Par contre si l'on cherche à résoudre maps, le resolver tentera d'abord maps.blog.free.fr qui n'est pas défini, il tentera ensuite maps.google.fr et cela sera un succès.
4 - fonctionnement
Chaque serveur de noms a la maîtrise de ses données mais doit interroger ses voisins dès qu'une requête concerne une zone sur laquelle il n'a pas l'autorité de nommage.
Ainsi si l'on veut résoudre un adresse d'un domaine dont on a peut l'autorité, il faut s'adresser à un serveur intermédiaire.
Voici le parcours des requêtes :
-Un processus demande l'adresse IP d'une machine. Le resolver envoie sa requête au serveur local.
-Le serveur local reçoit la requête et dans ce deuxième cas il ne peut pas répondre directement car la machine n'est pas dans sa zone d'autorité.
-Pour lever l'indétermination il interroge alors un serveur racine pour avoir l'adresse d'un serveur qui a l'autorité sur la zone demandée par le processus.
-Le serveur racine renvoie l'adresse d'un serveur qui a officiellement l'autorité sur la zone
-Le serveur local interroge ce nouveau serveur distant.
-Le serveur distant renvoie l'information demandée au serveur local.
-Le serveur local retourne la réponse au resolver
Un mécanisme de cache accélère le processus ci-dessus. Si un processus redemande la même machine distante on se retrouve dans le cas d'une interrogation locale, du moins pendant la durée de validité des données.
5 - Hiérarchie de serveurs
Si tous les serveurs de noms traitent de données d'un format identique, leur position dans l'arborescence leur confère un statut qui se nomme :
serveur racine (root name server) Un serveur ayant autorité sur la racine de l'espace de nommage. Actuellement il y a 13 serveurs de ce type, nommés [A-M].ROOT-SERVERS.NETX14
serveur primaire (master) Un serveur de noms qui a l'autorité pour un ou plusieurs domaines. Il lit ses données dans un fichier stocké sur disque dur, à son démarrage.
L'administrateur du (des) domaine(s) met à jour les informations des domaines concernés depuis cette machine.
serveur secondaire (slave) Dans le cas d'une panne ou d'un engorgement du serveur primaire, les serveurs secondaires reçoivent en prévision une copie de la base de données.
Stratégiquement il est préférable de les placer en dehors du domaine, sur le réseau d'un autre FAI. Il peut y avoir autant de serveurs secondaires que souhaité, de l'ordre de trois ou quatre est souvent recontré.
6 - Conversion d'adresses IP en noms
Cette possibilité est indiquée comme optionnelle dans la RFC 1034 mais est néanmoins bien commode voire même fréquement requise pour le client réseau de services comme les mails,
Il faut ajouter que le bon usage sur les réseaux est de prévoir une entrée dans la zone reverse pour toutes les machines utiles et utilisées d'un réseau accessible de l'Internet.
Du fait de la lecture inverse de l'arbre, les adresses IP sont exprimées en mirroir de la réalité. Par exemple pour le domaine minitux.blog.free.fr
52.63.27.212.in-addr.arpa
Chaque administrateur de zone peut aussi être en charge de l'administration des zones reverses, portion du domaine `` arpa '', des classes d'adresses dont il dispose pour nommer ses machines.
7 - Le mot de la fin
Un serveur de noms repose sur trois constituants :
Un espace de noms et une base de données qui associe de manière structurée des noms à des adresses IP.
Des serveurs de noms, qui sont compétents pour répondre sur une ou plusieurs zones.
Des resolver capables d'interroger les serveurs avec une stratégie définie par l'administrateur du système.
TCP ou UDP ?
Le port 53 bien connu pour le serveur de noms est prévu pour fonctionner avec les deux protocoles.
Normalement la majeure partie du trafic se fait avec UDP, mais si la taille d'une réponse dépasse les 512 octets, un drapeau de l'en-tête du protocole l'indique au client qui reformule sans question en utilisant TCP.
Quand un serveur secondaire démarre son activité, il effectue une connexion TCP vers le serveur primaire pour obtenir sa copie de la base de données. En général, toutes les trois heures (c'est une valeur courante) il effectue cette démarche.
La mise à jour dynamique de serveur de noms (RFC 2136) est une fonctionnalité assez récente sur le réseau, elle permet comme son nom l'indique de mettre à jour la base de donnée répartie.
Aussi bien au niveau du réseau local qu'à l'échelle de l'Internet il s'agit le plus souvent de faire correspondre un nom de machine fixe avec une adresse ip changeante.
C'est typiquement le cas d'un tout petit site qui a enregistré son domaine chez un vendeur quelconque et qui au gré des changements d'adresse ip par son fournisseur d'accès, met à jour le serveur de noms pour être toujours accessible.
Vous pouvez aussi mettre votre dnss local à jour dynamiquement c'est ici