Réseaux TCP/IP/Les serveurs DNS
Le DNS (Domain Name System) est un service qui permet d'effectuer la résolution de noms, c'est à dire d'associer une adresse IP à un FQDN (Full Qualified Domain Name) et inversement.
FQDN.
Un FQDN est composé d'un nom d'hôte et d'un nom de domaine, par exemple codice_1 est un FQDN où est le nom d'hôte et codice_2 le nom de domaine.
Les noms de domaine sont organisés de manière hiérarchique, le domaine se trouvant le plus haut dans la hiérarchie est « . », il est omis dans les FQDN. En « dessous » dans la hiérarchie se trouvent les TLD (Top Level Domain).
Le cours sur les serveurs DNS.
Le Domain Name System (ou DNS, système de noms de domaine) est un système permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.
Adresse FQDN.
Dans un réseau TCP/IP, chaque machine possède une adresse FQDN (Fully Qualified Domain Name) encore appelée nom qualifié. 
Le FQDN est l'association entre le nom de la machine et le domaine auquel elle appartient. 
Exemple : .wikibooks.org. est le FQDN de la machine appartenant au domaine .wikibooks.org.
Ce nom a la structure ww.xx.yy.zz soit une suite d'éléments séparés par des points. Chaque élément est fait des lettres de l'alphabet, chiffres et/ou trait d'union, et ne peut excéder 63 caractères. L'ensemble d'un FQDN ne peut excéder 255 caractères.
Résolution de noms directe.
Dans un réseau IP, lorsqu’une machine A veut communiquer avec une machine B, la machine A connaît le nom FQDN de B. 
Par exemple, lorsqu’on navigue sur le net, on connaît en général le nom FQDN des serveurs qu’on visite (exemple .wikibooks.org).
Pour que A puisse communiquer avec B grâce au protocole IP, A va avoir besoin de connaître l’adresse IP de B. 
A doit posséder un moyen d’effectuer la résolution de noms directe, c’est-à-dire un moyen de trouver l’adresse IP de B à partir de son nom qualifié.
Le résolveur est le programme chargé de cette opération. 
Résolution de noms inverse.
La machine B reçoit un datagramme IP en provenance de A. Ce datagramme contient l’adresse IP de A. B peut avoir besoin de connaître le nom FQDN de la machine A.
B doit donc être capable de trouver le nom FQDN de A à partir de son adresse IP. C’est ce qu’on appelle la résolution de noms inverse. 
Le résolveur est également chargé de cette opération. 
Résolution de noms par fichier hosts.
Un fichier comprend l’adresse FQDN de chaque machine du réseau ainsi que son adresse IP. Cette méthode n’est envisageable que pour les réseaux très petits.
Résolution de nom par serveur DNS (Domain Name System).
On installe un serveur de noms sur le réseau.
Chaque machine du réseau doit connaître l’adresse IP de ce serveur DNS.
Dès qu’une machine veut effectuer une résolution de noms directe ou inverse, elle va interroger le serveur de noms.
L’administrateur doit configurer le serveur de noms pour que ce dernier connaisse l’adresse IP et le nom de toutes les machines du réseau.
Notation inverse des adresses IP.
Les DNS notent les adresses IP (partielles) dans l'ordre inverse et ajoutent le suffixe "IN-ADDR.ARPA".
Exemples :
 127.IN-ADDR.ARPA
 -> pour 127.
 168.192.IN-ADDR.ARPA
 -> pour 192.168.
Zones directes et inverses.
Un réseau IP utilise les adresses IP 200.201.202.0 de masque 255.255.255.0 . 
Ce réseau comporte 3 machines A, B et C d'adresse respective 200.201.202.1, 200.201.202.2 et 200.201.202.3 .
Toutes les machines sont dans le domaine de noms toto.fr. Les adresses FQDN de A, B et C sont donc A.toto.fr., B.toto.fr. et C.toto.fr.
Nous allons installer un serveur DNS sur la machine C. 
Zone directe 
C doit être capable à partir de n'importe quel nom du type *.toto.fr de fournir l'adresse IP de la machine.
Dans le jargon TCP/IP, on dit que C a autorité sur la zone toto.fr. 
Cette zone sert à faire de la résolution de noms directe. 
Zone inverse 
C doit être capable à partir de n'importe quelle adresse IP du type 200.201.202.* de fournir l'adresse FQDN de la machine. 
Dans le jargon TCP/IP, on dit que C a autorité sur la zone 202.201.200.IN-ADDR.ARPA. .
Cette zone sert à faire de la résolution de noms inverse. 
Récapitulatif 
Notre serveur DNS a donc autorité sur 2 zones :
→ toto.fr. 
→ 202.201.200.IN-ADDR.ARPA. . 
La configuration de chaque zone est écrite dans un fichier de zone.
Configuration d'un DNS secondaire.
Tout serveur secondaire pour une zone donnée doit connaître l'adresse IP du serveur de noms primaire qui a autorité sur cette zone. 
Lorsqu'on lance le serveur secondaire, il va interroger le serveur de noms primaire pour obtenir une copie du fichier de zone. 
Pour une zone donnée, il ne peut y avoir qu'un seul serveur de noms primaire (sauf rares cas particuliers ou plusieurs serveurs primaires peuvent être nécessaires). 
Par contre, il peut y avoir de nombreux serveurs de noms secondaires. 
Configuration des postes clients.
Chaque machine doit connaître une liste de serveurs DNS primaires ou secondaires
Cette liste doit comporter au moins un élément.
Lorsqu’aucun serveur DNS n’est en panne, la machine va interroger en permanence le premier serveur de la liste.
Serveur DNS en panne.
Si la machine interroge le premier serveur DNS de la liste et que celui-ci ne répond pas, la machine va interroger le deuxième de la liste.
Si le deuxième ne répond pas, on interroge le troisième.
Si tous les serveurs DNS sont en panne, tout le réseau est en panne.
"'Remarque :" Si la machine interroge le premier serveur DNS de la liste et que celui-ci répond que la machine n’existe pas, la machine ne va pas interroger le deuxième de la liste.
Répartition de la charge.
Le premier serveur DNS de la liste n’est pas forcément le serveur primaire. 
Si le réseau contient un DNS primaire A et 2 serveurs secondaires B et C, il est bon de répartir la charge entre A, B et C : 
1/3 des machines aura comme liste A, B et C 
1/3 des machines aura comme liste B, C et A 
1/3 des machines aura comme liste C, A et B
Mise à jour d'un serveur DNS primaire.
La mise à jour des serveurs de noms primaires est effectuée par l'administrateur de réseau.
Il doit rentrer chaque machine du réseau dans la zone directe et dans la zone inverse.
Mise à jour d'un serveur DNS secondaire.
La mise à jour des serveurs de noms secondaires est automatique.
Chaque serveur de noms secondaire doit interroger à intervalle de temps régulier (par exemple toutes les 3 heures) le serveur de noms primaire et il met à jour sa copie locale du fichier de zone.
Un problème lié à la mise à jour du DNS.
L'administrateur met à jour un serveur de noms primaire et lui rajoute une machine
Si le serveur de noms secondaires se met à jour toutes les 3 heures, il peut se passer un délai de plusieurs heures avant que les serveurs de noms secondaires soient à jour.
Cela peut être très gênant pour le fonctionnement du réseau : la machine qu’on vient de rajouter est inaccessible.
L ’administrateur peut forcer « à la main » la mise à jour du serveur secondaire mais ce n ’est pas très pratique.
Notification.
De manière optionnelle, l'administrateur peut mettre en œuvre la notification. 
Le serveur de noms primaire doit connaître les adresses IP des serveurs de noms secondaires.
Dès que l'administrateur met à jour le serveur de noms primaires, celui-ci envoie automatiquement un message à tous les serveurs de noms secondaires qui se mettent alors à jour immédiatement.
"Remarque" : Il faut être sûr des modifications apportées. Si une erreur s'est glissée dans les modifications apportées, celle-ci sera automatiquement propagée sur les serveurs DNS secondaires.
Interconnexion de réseaux.
Supposons que 3 réseaux Ethernet A, B et C soient interconnectés par un routeur R 
A est le réseau 192.168.1.0 /24 
B est le réseau 192.168.2.0 /24 
C est le réseau 192.168.3.0 /24 
Toutes les machines du réseau peuvent avoir le même domaine direct toto.fr
Le serveur DNS-A aura autorité sur 4 zones
Les enregistrements NS.
Exemple : 
Cet enregistrement indique que la machine d'adresse FQDN serveur.toto.fr. a autorité sur toto.fr. Chaque fichier de zone comporte en général un tel enregistrement.
Les enregistrements SOA.
Ils permettent de fixer des paramètres en secondes qui sont utilisés lorsqu’il y a des serveurs DNS secondaires.
Exemple :
 toto.fr IN SOA serveur.toto.fr. admin@serveur.toto.fr. 
 (32 ; numéro de version du fichier
 10800 ; temps de rafraîchissement des serveurs secondaires 
 600 ; temps avant une nouvelle tentative si le rafraîchissement a échoué 
 86400 ; temps au bout duquel, le serveur secondaire considère que ses informations sont obsolètes s’il n’a pas pu contacter le primaire 
 3600) ; durée de vie d ’un enregistrement
Cet enregistrement comporte :
Enregistrements de type A.
Ils se trouvent dans la zone directe et permettent d'associer une adresse FQDN à une adresse IP. En général, chaque machine possède un enregistrement de type A dans sa zone directe.
Exemple : 
 pc1.toto.fr. IN A 200.50.30.14
Enregistrements de type PTR.
Il se trouve dans la zone inverse et permet d'associer la dernière partie d'une adresse IP (numéro de machine) à une adresse FQDN. L'adresse IP est écrite "à l'envers" et se termine par in-addr.arpa (!). En général, chaque machine possède un enregistrement de type PTR dans sa zone inverse.
Exemple : Pour la machine pc1.toto.fr d'adresse IP 200.50.12.14 :
 14.12.50.200.in-addr.arpa IN PTR pc1.toto.fr.
Exemple de fichier de zone.
Un réseau utilise les adresses 200.50.12.0/24 et le nom de domaine toto.fr.
Le réseau comporte 3 machines : pc1 (adresse IP 200.50.12.1), pc2 (adresse IP 200.50.12.2) et pc3 (adresse IP 200.50.12.3). pc3 est le serveur DNS du réseau.
pc3 a autorité sur la zone directe toto.fr et sur la zone inverse 12.50.200.IN-ADDR.ARPA 
 @ IN SOA pc3.toto.fr. administrateur@pc3.toto.fr. 
 ( 2 ; serial number 
 3600 ; refresh 
 600 ; retry 
 86400 ; expire
 3600 ) ; minimum TTL 
 @ IN NS pc3.toto.fr. 
 pc1.toto.fr. IN A 200.50.12.1
 pc2.toto.fr. IN A 200.50.12.2
 pc3.toto.fr. IN A 200.50.12.3
Interconnexion de serveurs DNS.
Sur Internet, les différents serveurs DNS se connaissent mutuellement.
Imaginons la situation suivante : l'utilisateur de la machine X du réseau local de l'entreprise toto utilise Internet Explorer et tape : .wikibooks.org. Cette machine a besoin de connaître l'adresse IP de la machine portant le nom .wikibooks.org.
Bien entendu, le nombre de connexions étant important, chaque DNS (et parfois les postes clients) gère un cache des noms de domaines demandés afin de diminuer le nombre de requêtes.