Le DNS est un service informatique très utile, surtout sur Internet, qui permet de résoudre des noms de domaine en adresses IP.

Mais comment est-ce que ça fonctionne réellement ce Système de Noms de Domaine ?

Et bien je vous propose de découvrir cela grâce à ce 2ème post sur le sujet ! boast


Le système de noms de domaine

Traduction d’un nom en adresse IP

Commençons sans plus attendre avec un petit rappel de ce qu’est le Système de Noms de Domaine, plus connu sous le nom de DNS !

Info + : Dans ce 2nd article sur le sujet, nous aborderons le fonctionnement du service DNS. La première partie de cette introduction au DNS est disponible au lien suivant : Le principe des noms de domaine

Le DNS c’est un service fortement utile en informatique qui permet (entre autres), la résolution de noms sur internet.

Il faut savoir que lorsque l’on veut aller sur un site internet, c’est en réalité un serveur web pouvant être au 4 coins du monde qui va nous répondre.

Par exemple, quand vous arrivez sur google.fr, c’est grâce à votre navigateur internet qui communique avec un serveur web qui héberge le site google.fr.

Le serveur web sait que c’est lui que vous interrogez car vous utilisez tacitement son adresse IP pour le contacter.

Comment ça son adresse IP ?! shock J’ai juste voulu aller sur google moi j’ai rien fais du tout !

Vous avez raison, vous n’avez rien fait du tout… c’est la magie de l’informatique qui a fait tout le boulot pour vous laugh

Quand vous utilisez l’adresse d’un site web, vous utilisez réellement ce qu’on appelle son « nom de domaine ».

Je vous rappelle qu’un nom de domaine c’est l’identifiant d’une zone sur internet regroupant plusieurs machines, toutes membres de cette même zone. Et l’adresse d’un site web comprend ce nom de domaine.

Quand on regarde l’adresse complète du site web de Google par exemple, ce que l’on peut en déduire, c’est que l’hôte qui s’appelle « www » est membre du domaine « google.fr ».

Donc quand vous allez sur google.fr, vous communiquez avec une machine, qui n’est autre qu’un serveur web.

Ce serveur web, comme n’importe quel équipement en réseau, possède justement… une adresse IP ! Comme je vous le disait précédemment, c’est grâce à cette adresse IP que le serveur est en capacité de vous répondre (enfin de répondre à votre navigateur…)

Et c’est là que le service DNS est très utile puisque c’est lui qui traduit les noms de domaine en adresse IP !

Sans ce service, internet fonctionnerait toujours, par contre, nous serions tous condamnés à nous rendre sur des sites internet en utilisant uniquement leur adresse IP, et nos adresses de site web ressemblerait à cela : 277.154.12.54, 172.217.22.131, 52.95.116.113…

 

Autant dire que pour l’Homme, il est tout simplement impossible de retenir les adresses IP de tous les sites internet qui existent au monde !

Si on résume : l’accès à un site internet est possible grâce à la résolution de son nom en adresse IP, opération qui est effectuée par le service DNS.

On peut voir un serveur DNS comme un gros annuaire qui va servir à établir une correspondance entre le nom d’un domaine et une adresse IP.

Il stocke en mémoire différents enregistrements qui peuvent exister dans un domaine (nous verrons les principaux un peu plus loin dans cet article…).

Et votre PC va envoyer des requêtes aux serveurs DNS afin de connaître le contenu de ces enregistrements.

Dans le cas de notre exemple avec www.google.fr, le PC va demander au service DNS, l’adresse IP d’un des hôtes, du domaine google.fr, en l’occurrence, celle du serveur web nommé « www » afin de pouvoir y accéder. De votre côté d’utilisateur, vous n’avez rien à faire !

 

Requêtes et enregistrements DNS

Comme je viens de le dire, un serveur DNS contient des données, appelées des enregistrements (ou des « DNS Records » en anglais) sur un domaine et il fournit le contenu de ses enregistrements aux clients DNS qui en font la demande.

Dans le cas de votre PC, il est justement client DNS. Il demande donc les informations dont il a besoin à un serveur DNS. On dit qu’il envoie des « requêtes DNS ».

Les requêtes DNS sont des messages envoyés aux serveurs DNS qui vont permettre de consulter les données stockées sur le serveur. Par exemple, il peut s’agir d’une requête pour connaître l’adresse IP d’un serveur web ou d’un serveur de messagerie au sein d’un domaine.

Pour connaître le contenu d’un enregistrements DNS, le processus d’envoi des requêtes peut se faire de deux façons :

  • Par requête récursive : c’est-à-dire que le client DNS demande au serveur DNS de répondre obligatoirement à sa requête, qu’il possède ou non la réponse, sans rediriger la requête vers un autre serveur DNS.

Info + : ce type de requête se fait le plus souvent de PC client DNS à serveur DNS local.

Dans ce cas-là, le serveur DNS va faire lui-même sa propre requête auprès d’autres serveurs DNS pour trouver une réponse.

  • Par requête itérative : c’est-à-dire que le client DNS demande au serveur DNS de lui fournir la meilleure réponse possible par tous les moyens. Le résultat d’une telle requête fait souvent référence à d’autres serveurs DNS.

Info + : ce type de requête se fait le plus souvent de serveur DNS à serveur DNS.

Le résultat de la requête DNS sera donc le contenu d’un DNS Record, c’est-à-dire d’un enregistrement d’une zone précise.

 

Voici un tableau montrant quelques types d’enregistrements DNS que l’on rencontre souvent en entreprise, avec des exemples de données totalement fictives pour le domaine « mondomaine.fr » :

Le serveur DNS en charge de la zone « mondomaine.fr » peut contenir tous les enregistrements ci-dessus.

Pour connaître les données, les clients DNS vont donc émettre des requêtes selon le type d’enregistrement qu’ils veulent (A, CNAME, NS…) à l’aide du protocole DNS sur le port 53 (TCP & UDP).

Info + : vous pouvez utiliser des outils en ligne de commandes comme « nslookup »  sous Windows et « host »  sous Linux pour voir certains types d’enregistrement dans un domaine.

 

Fonctionnement pas à pas du service DNS

Maintenant que vous avez cerné le principe du service DNS, nous allons prendre un exemple et détailler toutes les étapes de résolutions d’un nom de domaine pour bien en comprendre le fonctionnement.

Dans notre exemple, nous avons un PC qui veut accéder au site internet de google.

Souvenez-vous, pour communiquer les machines ont besoin d’adresses IP. Donc notre poste client aura tacitement besoin de l’adresse IP du serveur web qui héberge le site internet de google. Il va devoir utiliser le service DNS pour obtenir cette information (enregistrement de type A) venant du domaine google.fr.

La première action du PC sera de vérifier si il ne connait pas déjà l’adresse IP du serveur web de google. Il va alors aller rechercher dans sa mémoire interne qu’on appelle son cache DNS.

Info + : Le cache DNS est très utile car il va stocker temporairement les enregistrements demandés afin de pouvoir les restituer plus rapidement et ne pas solliciter les serveurs DNS.

Le cache DNS du poste client ne possède pas d’information sur l’enregistrement DNS dont il a besoin. Il va donc devoir demander au serveur DNS de son réseau local. Il va alors lui envoyer une requête récursive sur le port 53 en lui demandant de répondre lui-même à sa requête.

Le serveur DNS qui reçoit la requête va commencer par vérifier si le domaine visé par la requête, à savoir « google.fr », est un domaine que lui-même gère, c’est-à-dire si il fait parti de ses zones pour lesquelles il a directement les enregistrements.

Le serveur DNS local ne gère pas la zone « google.fr ». Il va donc vérifier dans son propre cache DNS si il n’a pas déjà l’information recherchée, à savoir l’adresse IP du serveur web de google.

Le serveur DNS local n’a pas l’enregistrement dans son cache. Il va devoir lui-même demander l’information à d’autres serveurs DNS. Il va devoir parcourir l’ensemble du nom de domaine de google en partant de la droite pour trouver la réponse.

Info + : les notions qui vont suivre ont déjà été abordées dans la première partie de cette introduction au DNS disponible ici : Le principe des noms de domaine

Notre serveur DNS local va donc commencer par interroger les serveurs DNS racines pour savoir quels sont les serveurs DNS en charge du nom de domaine de 1er niveau (TLD) « .fr ». Il va alors envoyer à l’un des DNS racines une requête itérative pour connaître l’adresse IP de l’un de serveurs TLD.

Le serveur DNS racine va lui renvoyer l’information demandée, c’est-à-dire l’adresse IP d’un des serveurs du domaine de 1er niveau « .fr ».

Le serveur DNS va ensuite renvoyer une requête itérative au serveur du TLD « .fr » pour connaître l’adresse IP du serveur DNS qui gère le nom de domaine de 2nd niveau (SLD) « google.fr ».

Le serveur TLD va à son tour lui répondre et lui envoyer l’adresse IP du serveur SLD qui gère le domaine « google.fr ».

Le serveur DNS connaît maintenant l’adresse IP du DNS en charge de la zone « google.fr » ! Il peut donc lui envoyer une requête pour connaître les données de l’enregistrement de type A correspondant au serveur web. En résumé, il va lui demander l’adresse IP associée au nom d’hôte « www ».

Le serveur DNS qui gère le domaine « google.fr » va vérifier ses enregistrements et renvoyer la réponse au DNS local. Il s’avère que « www » est un alias (CNAME), associé à un hôte (A) nommé « srv-web », qui a pour adresse IP 216.58.201.227.

Maintenant que le serveur DNS à l’information, il va répondre au poste client qui a fait la requête initiale. Il va dire au client DNS « l’adresse IP de www.google.fr est 216.58.201.227 ».

Il va également en profiter pour garder cette information temporairement dans son cache DNS, au cas où une requête similaire est émise.

Le client peut désormais communiquer avec le serveur web directement grâce à son adresse IP en utilisant le protocole http sur le port 80 ou de préférence https sur le port 443.

Il va également en profiter lui aussi pour stocker temporairement l’adresse IP du serveur web dans son propre cache DNS.

Le serveur web va répondre à la demande du PC et ce dernier aura accès au site internet comme si il avait saisi directement son adresse IP.

Voilà comment nous pouvons illustrer le fonctionnement du service DNS !

Info + : retrouvez le schéma précédent en entier ICI et un tableau récapitulatif de chaque étape ICI.

 

Ce sera tout pour cette introduction au DNS qui vous aura permis, je l’espère, de mieux comprendre le fonctionnement de ce service si précieux sur internet !

Je vous prépare un petit tuto d’installation d’un serveur DNS cache sous Windows pour très prochainement (et peut être sous Linux Debian aussi, à voir…)

A bientôt ! cool


Introduction au DNS [2/2] : Le fonctionnement du service DNS

Articles pouvant vous intéresser