Utilisateur d'origine : Pierre
Quand vous visitez un site web, vous tapez machinalement son adresse dans votre navigateur web, sans trop vous demander ce qui se passe ensuite. Pourtant, vous n'êtes pas sans savoir que votre navigateur utilise le protocole IP (comme pour l'immense majorité des communications informatiques grand public), et que la seule manière d'identifier une machine avec ce protocole est l'adresse IP.
Une fois que l'on sait cela, on pourrait logiquement se poser la question suivante : comment mon navigateur sait quelle machine contacter quand je tape "google.com" ?
Le sujet peut paraître basique pour les nombreux experts de ce forum, mais il est important de rappeler son fonctionnement, au moins pour les quelques débutants que nous rencontrons de temps en temps. C'est parti pour un cours à la limite entre la surface et le bas de l'iceberg.
Le DNS est ton meilleur ami
Le DNS est certainement le protocole qui vous facilite le plus la vie quand vous naviguez sur Internet. C'est lui qui vous permet de taper un nom de domaine dans la barre d'adresse de votre navigateur, et pas une adresse IP à 12 chiffres.
Donc en clair, si vous m'avez bien suivi : le DNS est le système permettant de "convertir" un nom de domaine en une adresse IP ; cette opétation s'appelle la résolution.
La composition d'un nom de domaine
Au final, un nom de domaine fonctionne comme une adresse IP, à quelques différences près. Si je vous donne l'adresse IP 102.154.10.66
et que je vous demande de la décomposer, vous aller lire les chiffres par la gauche en me disant que chaque nombre est une branche du nombre situé à sa gauche, le tout étant séparé par un point.
Pour les domaines, c'est pareil, mais on part de la droite. Ainsi, pour le domaine www.google.com
:
- Le
com
est la partie la plus haute, celle dont dépendent toutes les autres. C'est ce qu'un appelle une extension (ou un TLD : Top Level Domain). Il en existe un nombre fixe et elles sont déterminées par des organismes modiaux, comme l'ICANN par exemple.
- Le
google
est ce qu'on appelle plus communément le domaine.
- Et enfin, le
www
est un sous domaine du domaine google.com
.
Comme je l'ai dit, tout cela est hiérarchisée. Ainsi, le sous domaine www.google.com
dépend du domaine google.com
dépendant lui même de l'extension com
. Et on pourrait aller encore plus loin et ajouter des sous domaine après www
.
Une fois l'ensemble des parties assemblées, on forme ce qu'on appelle un FQDN (Fully Qualified Domain Name). A noter que le FQDN se termine toujours par un point final, symbolisant la racine globale du DNS. Pour le site web de Google, ce serait donc : www.google.com.
.
En pratique, on n'utilise jamais le point final, sauf pour faire des configurations de DNS, justement.
La résolution
La résolution est une opération très rigoureuse et méthodique. L'objectif est d'obtenir l'IP de la machine associée au sous-domaine www.google.com
. Comme dit plus haut, c'est google.com
qui gère ce sous domaine, donc c'est à lui qu'il faut demander. Sauf que nous ne connaissons pas l'adresse IP du DNS de de google.com
. Adressons nous à com
alors ! Pour cela, il nous faut son adresse, qui peut être obtenue en contactant les serveurs racine du DNS (vous savez, ce qui est désigné par le point à la fin du FQDN). Nous aborderons juste après les serveurs racine, je vais juste re-décomposer l'opération pour ceux n'ayant pas bien compris :
- On contacte les serveurs racine pour obtenir l'adresse IP de
www.google.com
, mais étant donné qu'ils ne gèrent pas ce domaine, ils nous renvoient vers les serveurs DNS d'un TLD qu'ils gèrent, à savoir com
.
- On demande à
com
la fameuse adresse, mais les DNS ne la connaissent toujours pas. Ils nous indiquent le chemin pour contacter google.com
- On contacte
google.com
, et le DNS nous renvoie l'IP de www.google.com
car c'est un sous domaine qui est directement en dessous de lui dans la hiérarchie.
Les serveurs racine sont des serveurs DNS stockant des informations essentielles. Il en existe 13 principaux répartis sur toute la surface du globe, désignés par une lettre de l'alphabet. Ils ont tous une adresse IP fixe, connue des navigateurs, pour être contactés facilement. Ces serveurs sont gérés par l'ICANN, et en possession de plusieurs entreprises comme la NASA, Cogent, et d'autres entités mondiales. Comme dit précédemment, leur but est de répondre aux requêtes de premier niveau, en indiquant l'adresse des serveurs DNS des extensions telles que com
, fr
, net
, etc...
En 2002, les treize serveurs font l'objet d'une attaque par déni de service de très grande ampleur, rendant ainsi impossible la résolution de noms de domaine. Les conséquences d'une telle attaque aujourd'hui seraient extrêmement lourdes. Pour pallier à ce problème, il existe aujourd'hui des centaines de serveurs racine "auxilliaires", répliquant les données des 13 principaux par un système complexe nommé anycast.
Vous vous rendez bien compte que si, à chaque fois que nous voulons une IP, notre ordinateur fait plusieurs requêtes, cela génèrerait un trafic énorme. Pour cela, il existe un système de cache. Votre ordinateur possède un cache DNS (par exemple pour les sites que vous consultez fréquemment). Mais ce n'est pas tout ! Lors de votre connexion au réseau, vous avez spécifié un serveur DNS, en plus des paramètres réseau indispensables. C'est ce DNS (fourni par exemple par votre opérateur), qui fait les requêtes à votre place, en commençant par les serveurs racine, et en suivant la logique décrite plus haut. Ce serveur enregistre ensuite le résultat de sa requête dans son système, puis vous la transmet. Il s'agit donc d'un énorme cache DNS mutualisé.
Un dernier point théorique pour la résolution : on dit qu'un serveur fait autorité quand c'est lui qui possède l'information. Par exemple, le serveur DNS de votre opérateur ne fait pas autorité concernant le domaine www.google.com
, alors que le serveur DNS de google.com
, lui, fait autorité.
Qui gère les noms de domaine ?
Là encore, tout dépend du niveau. Par exemple, prenons le FQDN dyjix.fr.
.
- La racine est gérée par l'ICANN
- L'ICANN délègue la gestion de
fr.
à l'AFNIC, qui gère donc les domaines français
- L'AFNIC délègue la gestion de
dyjix.fr.
à Dyjix
En réalité, c'est un peu plus compliqué que cela. Dans le cas de l'Europe, l'ICANN délègue la gestion des TLDs européens (fr, com, eu, it, etc...) à RIPE, qui, lui-même, délègue la gestion de ces extensions aux agences nationales.
De plus, l'AFNIC ne délègue pas directement la gestion de dyjix.fr.
à Dyjix, mais le fait via les bureaux d'enregistrement : ce sont les entreprises qui vendent et enregistrent les domaines. Le schéma que je vous ai donné au début de ce cours est donc partiellement faux : les DNS de fr.
ne connaissent pas l'IP de dyjix.fr.
, mais vont vous renvoyer vers les DNS de son bureau d'enregistrement, qui, eux, la connaissent.
Il est possible de ne pas avoir son DNS chez son bureau d'enregistrement (pour le faire soi-même ou le mettre chez un concurrent), il faudra alors informer votre bureau d'enregistrement en leur précisant l'adesse du nouveau serveur, et le bureau fera mettre à jour l'enregistrement sur les DNS de fr.
.
Gérer votre DNS
Si vous êtes toujours là après toutes ces explications théoriques, félicitations. Il est maintenant temps de pratiquer un peu.
Si vous avez un nom de domaine, votre bureau d'enregistrement vous a certainement livré une zone DNS avec (c'est à dire une interface de configuration du serveur DNS de votre bureau d'enregistrement). C'est ici que vous allez renseigner les adresses de vos différents serveurs, et créer des sous domaine. Dans ce cours, nous allons uniquement voir comment se servir de la zone DNS, pas de créer son propre serveur DNS (peut être que nous ferons cela dans un autre tutoriel).
Donc, pour faire correspondre des IPs à vos domaines, vous allez devoir ajouter des enregistrements à votre zone DNS. Les principaux enregistrements sont les suivants :
- A : Fait correspondre un nom de domaine à une IPv4
- AAAA : Fait correspondre un nom de domaine à une IPv6
- CNAME : Fait pointer un nom de domaine vers un autre nom de domaine
- SRV : Fait correspondre un sous-domaine, un port, un protocle, et un nom de service à un enregistrement A dejà existant (enregistrement assez complexe)
- MX : Permet de définir le serveur mail du domaine
- NS : Permet de définir le serveur DNS du domaine
Alors, un mot concernant l'enregistrement NS : c'est celui qui permet de dire à quel DNS m'adresser pour tel ou tel domaine. C'est ce type d'enregistrement qui permet de passer d'un serveur à l'autre pendant la phase de résolution. Pour un domaine en .fr, le champ NS correspondant à votre domaine se trouve sur les serveurs DNS de l'AFNIC, et pointent vers les DNS de votre bureau d'enregistremennt, que nous sommes en train de configurer.
Cela ne veut pas dire que le champ NS ne vous concerne pas ! Imaginons que vous possédiez le domaine exemple.fr
. Si vous voulez être sympa avec moi et que vous m'accordez la gestion du sous-domaine pierre.exemple.fr
, je vais vous demander de gérer moi-même mon DNS. Ainsi, dans votre zone DNS, vous allez ajouter un enregistrement NS indiquant les DNS à contacter (les miens), pour résoudre les sous-domaines de pierre.exemple.fr
. Evidemment, sans enregistrement NS pour mon sous domaine, c'est le serveur DNS de exemple.fr
qui fait autorité.