MOOC:Compagnon Act34-s6

From Livre IPv6

Revision as of 13:04, 24 July 2015 by Bjoachim (Talk | contribs) (Le système de nommage (DNS) en IPv6)

> MOOC>Contenu>Séquence 3


Le système de nommage (DNS) en IPv6

Ce chapitre présente une introduction au système DNS, ses spécifications pour IPv6, les principes de sa mise en œuvre et les recommandations opérationnelles pour l’intégration d’IPv6.

L’introduction présente la problématique à résoudre et les principes généraux de fonctionnement de ce service.

Les spécifications du protocole présentent la résolution des noms et la résolution inverse ainsi que les ressources nécessaires pour IPv6. Les principes de mise en œuvre du service DNS expliquent comment configurer un service DNS autonome en IPv6.

Les recommandations opérationnelles pour l’intégration d’IPv6 présentent les nouveaux problèmes que pose IPv6 pour le DNS et présente les recommandations pratiques pour y faire face.

Concepts de base du système de noms de domaine, DNS

Le système de noms de domaine (DNS : Domain Name System) est un système de base de données hiérarchique et distribuée. Il gère la correspondance entre les noms de machines (FQDN : Fully Qualified Domain Name) et les adresses IP (IPv4 et/ou IPv6) et les correspondances inverses . Il gère également d’autres informations, par exemple, les informations relatives agents de transfert de courrier (Mail exchanger) ou encore celles relatives aux serveurs de noms (Name Servers), et plus généralement, d’autres informations utiles pour les applications TCP/IP.

Aujourd’hui, les utilisateurs utilisent principalement les noms de machines. Ces noms sont plus faciles à mémoriser que les adresses, et souvent, reflètent la fonction de la machine.

Ainsi, www.tpt.example.com ou ftp.tpt.example.com représentent respectivement les noms des serveurs Web et FTP de la société tpt.example.com.

Une application qui s’exécute sur un équipement, A, et qui souhaite communiquer avec une autre application s'exécutant sur un équipement distant, B, dont elle ne connaît que le nom, a besoin d'en obtenir l'adresse IP. Sans cette adresse, la communication ne peut en général pas avoir lieu : les machines utilisent le protocole IP pour communiquer et ce protocole n’utilise que les adresses IP.

Nommage « à plat »

Aux débuts de l'Internet, les adresses IPv4 en usage sont peu nombreuses. Il est donc relativement facile de les stocker dans un fichier centralisé, le fichier hosts.txt [RFC 608]. Les noms doivent aussi être uniques. Un nom utilisé dans une organisation ne peut l’être dans une autre organisation.

Chaque responsable de site transmet ses modifications, ajouts et suppressions à un centre de gestion chargé de mettre à jour le fichier central.

Chacun de ces responsables peut alors télécharger ce fichier, via FTP par exemple, pour mettre à jour les informations de nommage stockées localement (par exemple, le fichier /etc/hosts pour les systèmes Unix). Un équipement disposant localement d’une version à jour du fichier de nommage peut ainsi communiquer avec toutes les machines connues dans ce fichier.

Dès le début des années 80, la croissance exponentielle du nombre de noms et d'adresses IP utilisées et le besoin de plus en plus fréquent de renuméroter les équipements ont rendu le choix des noms, leur mise à jour et la mémorisation des adresses dans ce fichier central de plus en plus difficile, voire impossible dans des délais raisonnables.

Caractéristiques du système de noms de domaine

Paul Mockapetris, de l'Université de Californie, conçoit le système des noms de domaine (DNS) en 1983. Il en écrit la première mise en œuvre, à la demande de Jon Postel.

Le DNS est initialement un service de résolution, de mise à jour et d’enregistrement des correspondances nom-adresse et des correspondances inverses. Il fournit aux utilisateurs l’adresse IP associée à un nom de domaine, et ce, quelle que soit leur localisation.

De plus, il distribue la responsabilité de la mise à jour des correspondances nom-adresse sur chaque site et met en place un système coopératif d’accès aux informations de nommage.

Petit à petit, le DNS s'impose comme infrastructure pour l'ensemble des applications TCP/IP classiques comme le mail, le web, le transfert de fichier et la connexion à distance. Ce système est donc : hiérarchique, réparti, robuste et extensible.

Hiérarchique. Le système de noms de domaine, pour garantir l’unicité des noms utilise un système de nommage hiérarchique. Le nommage hiérarchique utilise une structure d'arbre. Un arbre est un graphe sans cycle, c'est-à-dire un ensemble de nœuds reliés par des arcs tel qu’il n’existe qu’un seul chemin reliant la racine de l’arbre à chacune de ses feuilles.

Un arbre, à son plus haut niveau, se compose d’une racine et d’un ensemble de nœud « fils ». Chaque fils, dans l’arbre, est relié à son père par un arc. Chaque fils, au second niveau, possède à son tour ses propres fils. Et ainsi de suite jusqu’aux feuilles de l’arbre. Une feuille est un nœud qui n’a pas de fils.

Le nommage hiérarchique associe un nom à chaque nœud d’un arbre : l’arbre de nommage. Un domaine correspond à un nœud dans l’arbre de nommage. Chaque nœud, sauf la racine a un nom. Le nom d’un domaine est alors défini comme la succession des noms des nœuds qui, dans l’arbre de nommage, conduisent de ce nœud à la racine de l’arbre de nommage. Comme un arbre ne contient pas de cycle, chaque nœud n’est accessible que par un seul chemin. Par conséquent dans un arbre de nommage, les noms sont uniques.

TODO insérer la figure 1

Figure 1. arborescence de nommage. Le nommage se fait, soit en fonction du sercteur d’activité, soit en fonction du code pays (ISO). Deux sous arborescences sont dédiées à la résolution inverse : in-addr pour IPv4 et ip6 pour IPv6. nommage.

Réparti. Nul n’est mieux placé que le responsable du nommage dans un domaine (de responsabilité administrative), par exemple, celui d’une société, pour gérer les ajouts, modifications, suppressions dans le sous-arbre de nommage correspondant à cette société.

Chaque responsable du nommage gère le nommage dans sa société. Il produit donc une base locale de nommage. Reste ensuite à partager ces informations pour les mettre à disposition des utilisateurs du réseau.

Robuste. Aujourd’hui, tout le fonctionnement de l’internet dépend du bon fonctionnement du système de nommage. D’un point de vue pratique, s’il n’existe qu’un seul serveur officiel pour un domaine, le service de nommage devient indisponible si ce serveur tombe en panne ou est arrêté.

C’est pourquoi au moins deux serveurs, situés sur des sites géographiquement distincts et indépendants sont nécessaires pour chaque zone de nommage (zone DNS). Ceci assure une meilleure disponibilité et un meilleur équilibrage de charge.

Disponibilité. La probabilité d’occurrence simultanée d’une panne catastrophique (avec perte des données) sur les deux sites est faible, plus faible en tout cas que s’il n’y a qu’un seul serveur. Si un des deux serveurs tombe en panne, l’autre continue de fournir le service. Cette proababilité de panne est encore réduite s'il existe plus de deux sites hébergeant des serveurs de noms secondaires.

Equilibrage de charge. Lorsque ces deux serveurs sont opérationnels, un client peut, par exemple, interroger simultanément les deux serveurs pour déterminer celui qui est le moins sollicité et utiliser préférentiellement ses services. En cas de non réponse du serveur choisi, le client peut interroger l’autre serveur pour obtenir les réponses à ses questions. En pratique, les demandes des différents clients se répartissent sur les différents serveurs de noms. Et si deux serveurs ne peuvent supporter la charge, il suffit d’en ajouter d’autres.

Extensible. La structure d'arbre est extensible (scalable). Pour ajouter un nom, il suffit, dans l’arbre (entre la racine et les feuilles) d’ajouter, un nœud et toute sa descendance et de relier ce nœud à un père, en vérifiant que ce père n’a pas deux fils de même nom.

Ainsi, si l’on considère une nouvelle société dont le nom de domaine est société1.com. Déclarer cette société dans le système de nommage revient à ajouter un fils : société1 sous le nœud père, com, lequel est lui-même fils de «. » (point), la racine (sans nom) de l’arbre de nommage.

L’idée simple, mais géniale a été de concevoir un système client-serveur pour cela. Un serveur de nommage est associé à chaque niveau de l’arbre de nommage. En fait, pour des raisons administratives, l’espace de nommage est partitionné en zones. Chaque zone commence au niveau d’un nœud (un domaine) et s’arrête aux nœuds correspondant à d’autres zones. Un serveur de noms officiel gère les données d’une zone.

Si, comme c’est possible dans certains cas, l’arbre de nommage est très profond, nous verrons que plusieurs serveurs de noms distincts peuvent être regroupés sur une seule machine physique. Un serveur de noms peut gérer officiellement plusieurs zones (en étant primaire pour une zone et secondaire pour différentes autres zones, par exemple). Ces regroupements réduisent la profondeur de la hiérarchie de serveurs, ce qui permet d’en accélérer le balayage.

Les serveurs sont reliés les uns aux autres par un chaînage double : chaque père connaît chacun de ses fils, et chaque fils connaît son père. Les clients du service de nommage se trouvent uniquement au niveau des feuilles de l’arbre de nommage. Plus précisément, il n’y a qu’un client DNS par machine, le résolveur. Cela signifie que toutes les applications qui s’exécutent sur une machine et qui ont besoin de résoudre un nom sollicitent le seul et unique client DNS de cette machine, le résolveur.

Personal tools