Domain Name System

Infos
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.
Domain Name System

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.

Associer une adresse IP et un nom de domaine

Les ordinateurs connectés à un réseau IP, par exemple Internet, possèdent tous une adresse IP. Ces adresses sont numériques afin d'être plus facilement traitées par une machine. Selon IPv4, elles prennent la forme xxx.yyy.zzz.aaa, où xxx, yyy, zzz et aaa sont quatre nombres variant entre 0 et 255 (en système décimal). Selon IPv6, les IP sont de la forme aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh, où a, b, c, d, e, f, g et h représentent des caractères au format hexadécimal. Il n'est évidemment pas simple pour un humain de retenir ce numéro lorsque l'on désire accéder à un ordinateur d'Internet. C'est pourquoi un mécanisme a été mis en place pour permettre d'associer à une adresse IP un nom intelligible, humainement plus simple à retenir, appelé nom de domaine. Résoudre un nom de domaine, comme par exemple fr.wikipedia.org, c'est trouver l'adresse IP qui lui est associée.

Fichier HOSTS

Avant DNS, la résolution devait se faire grâce à un fichier texte appelé HOSTS, local à chaque ordinateur. Sous UNIX, il se trouve dans le répertoire /etc. Sous Windows, il se trouve dans %SystemRoot%/SYSTEM32/DRIVERS/ETC. Dans ce fichier, chaque ligne correspond à une adresse IP à laquelle peuvent être associés un ou plusieurs noms de domaine. Ce système pose un problème évident de maintenance : il est difficile d'ajouter de nouveaux noms et le fichier doit être échangé entre tous les ordinateurs du réseau. C'est pour résoudre ce problème que Paul Mockapetris a mis au point le DNS en 1983.

Résolution et résolution inverse avec DNS

Avec DNS, la résolution se fait par l'intermédiaire d'un serveur. Quand un utilisateur souhaite accéder à un site, comme par exemple www.free.fr, son ordinateur émet une requête spéciale à un serveur DNS, demandant 'Quelle est l'adresse de www.free.fr ?'. Le serveur répond en retournant l'adresse IP du serveur, qui est dans ce cas-ci, 212.27.48.10. Il est également possible de poser la question inverse, à savoir 'Quel est le nom de domaine ou que sont les noms de domaines de telle adresse IP ?'. On parle alors de résolution inverse. Plusieurs noms de domaine peuvent pointer vers une même adresse IP et réciproquement.

Technique du DNS Round-Robin

Lorsqu'un service génère un trafic important, celui-ci peut faire appel à la technique du DNS Round-Robin (en français tourniquet), qui consiste à associer plusieurs adresses IP à un nom de domaine. Les différentes versions de Wikipedia, comme fr.wikipedia.org par exemple, sont associées à plusieurs adresses IP : 207.142.131.247, 207.142.131.248, 207.142.131.235, 207.142.131.236, 207.142.131.245 et 207.142.131.246. Une rotation circulaire entre ces différentes adresses permet ainsi de répartir la charge générée par ce trafic important, entre les différentes machines, ayant ces adresses IP. Il faut cependant nuancer cette répartition car elle n'a lieu qu'à la résolution du nom d'hôte et reste par la suite en cache sur les différents resolvers (client DNS).

Fully Qualified Domain Name

Les noms d'hôtes sont identifiés de manière unique grâce à leur FQDN (Fully Qualified Domain Name, ou Nom de Domaine Pleinement Qualifié). Ils ont le format hôte.domaine.tld. où hôte correspond au nom d'hôte de la machine et domaine.tld. au domaine auquel l'hôte appartient (tld signifie ici Top Level Domain, ou Domaine de niveau supérieur, c'est-à-dire l'ensemble des domaines situés directement sous la racine -root .- comme .fr. .com. ou bien .org.). fr.wikipedia.org., par exemple, est composé du domaine générique org, du domaine déposé wikipedia et du nom d'hôte fr. Le point final, facultatif dans la plupart des commandes, est indispensable dans le cas du DNS. En effet, soit une machine ayant pour FQDN machine.toto.tata., la pinguer en utilisant la commande ping machine.toto.tata ne pose pas de problème. Pourtant ce n'est pas le bon FQDN. Pinguer plutôt machine.toto.tata. serait plus juste et fonctionne tout aussi bien (y compris dans les browsers Internet, taper http://fr.wikipedia.org ou http://fr.wikipedia.org. n'a aucune différence, l'implémentation de la pile TCP/IP se charge de rajouter le point dans la requête DNS nécessaire à la résolution de nom. L'oubli de ce point dans certaines versions de BIND peut au contraire causer de plus grosses conséquences. En effet, spécifier dans un fichier de zone (exemple celui de la zone toto.tata.) que l'hôte machine.toto.tata a pour adresse IP 1.2.3.4 (cf. enregistrement A) revient à spécifier que la machine a pour FQDN machine.toto.tata.toto.tata.

Un système réparti

Il existe des centaines de milliers de serveurs DNS dans le monde entier. Chaque serveur DNS n'a en réalité à sa disposition qu'un ensemble d'informations restreint. Quand notre serveur DNS (par exemple, celui de notre fournisseur d'accès à Internet) doit trouver l'adresse IP de fr.wikipedia.org, une certaine communication s'instaure alors avec d'autres serveurs DNS. Tout d'abord, notre serveur demande à des serveurs DNS peu nombreux appelés serveurs racine quels serveurs peuvent lui répondre pour la zone org. Parmi ceux-ci, notre serveur va en choisir un pour savoir quel serveur est capable de lui répondre pour la zone wikipedia.org. C'est ce dernier qui pourra lui donner l'adresse IP de fr.wikipedia.org. Cependant, ce processus de résolution de nom est long. C'est pourquoi, la plupart des serveurs DNS (et notamment ceux des Fournisseurs d'accès à Internet) font aussi office de DNS cache : ils gardent en mémoire la réponse d'une résolution de nom afin de ne pas effectuer ce long processus à nouveau ultérieurement. Un nom de domaine peut utiliser plusieurs serveurs DNS. Généralement, les noms de domaines en utilisent deux : un secondaire et un primaire. Seuls ces derniers peuvent fournir une réponse valable à tout instant. On parle de réponse faisant autorité (authoritative answer en anglais). Les serveurs des Fournisseurs d'accès à Internet quant à eux fournissent des réponses qui ne sont pas nécessairement à jour, à cause du cache mis en place. On parle alors de réponse ne faisant pas autorité (non-authoritative answer). Pour trouver le nom de domaine d'une IP, on utilise le même principe. Dans un nom de domaine, la partie la plus générale est à droite : org dans fr.wikipedia.org. Dans une adresse ip, c'est le contraire : 213 est la partie la plus générale de 213.228.0.42. Pour conserver une logique cohérente, on inverse l'ordre des quatre termes de l'adresse et on la concatène au pseudo domaine in-addr.arpa.. Ainsi, par exemple, pour trouver le nom de domaine de l'adresse IP 213.228.0.42, on résout 42.0.228.213.in-addr.arpa, qui est un pointeur vers www.free.fr. Cette architecture garantit au réseau Internet une certaine sécurité. Quand un serveur DNS tombe, le bon fonctionnement de la résolution de nom n'est pas remis en cause. De plus, elle permet de mettre à jour l'adresse IP associée à un nom de domaine dans le monde entier facilement et assez rapidement (un délai de 48 heures est généralement suffisant).

Principaux enregistrements DNS

Les principaux enregistrements définis par un DNS sont :
- A record ou address record qui fait correspondre un nom d'hôte à une adresse IPv4 de 32 bits.
- AAAA record ou IPv6 address record qui fait correspondre un nom d'hôte à une adresse IPv6 de 128 bits.
- CNAME record ou canonical name record qui permet de faire d'un domaine un alias vers un autre. Cet alias hérite de tous les sous-domaines de l'original.
- MX record ou mail exchange record qui définit les serveurs de mail pour ce domaine.
- PTR record ou pointer record qui associe une adresse IP à un enregistrement de nom de domaine.
- NS record ou name server record qui définit les serveurs DNS de ce domaine.
- SOA record ou Start Of Authority record qui donne les informations générales de la zone : serveur principal, email de contact, différentes durées dont celle d'expiration, numéro de série de la zone.
- SRV record qui généralise la notion de MX record, standardisé dans la RFC 2782.
- NAPTR record ou Name Authority Pointer record qui donne accès à des règles de réécriture de l'information, permettant des correspondances assez lâches entre un nom de domaine et une ressource. Il est spécifié dans la RFC 3403.
- TXT record permet à un administrateur d'insérer un texte quelconque dans un enregistrement DNS. Par exemple, cet enregistrement était utilisé pour implémenter la spécification Sender Policy Framework. D'autres types d'enregistrements servent simplement à donner des informations (par exemple, un LOC record - rarissime - indique l'emplacement physique d'un hôte).

MX record

Une entrée DNS MX indique les serveurs SMTP à contacter pour envoyer un e-mail à un utilisateur d'un domaine donné. Sous Unix on peut récupérer les entrées MX correspondant à un domaine à l'aide du programme host(1) (entre autres). Par exemple: $ host -v -t MX wikimedia.org ;; QUESTION SECTION: ;wikimedia.org. IN MX ;; ANSWER SECTION: wikimedia.org. 3600 IN MX 10 mchenry.wikimedia.org. wikimedia.org. 3600 IN MX 50 lists.wikimedia.org. On voit que les e-mails envoyé à une adresse en @wikimedia.org sont en fait envoyés au serveur mchenry.wikimedia.org. ou lists.wikimedia.org.. Le nombre précédent le serveur représente la priorité. Normalement on est censé utiliser le serveur avec la priorité numérique la plus petite. Ici, c'est donc mchenry.wikimedia.org. qui doit être utiliser en priorité avec une valeur de 10. Les entrées MX sont rendues obsolètes par les entrées SRV qui permettent de faire la même chose mais pour tous les services, pas juste SMTP (l'e-mail). L'avantage des entrées SRV par rapport aux entrées MX est aussi qu'elles permettent de choisir un port arbitraire pour chaque service ainsi que de faire de la répartition de charge plus efficacement. L'inconvénient c'est qu'il existe encore peu de programmes clients qui gèrent les entrées SRV.

NAPTR record

Peu répandus à l'heure actuelle (ils sont surtout utilisés par ENUM). Ils décrivent une réécriture d'une clé (un nom de domaine) en URI. Par exemple, dans ENUM, des enregistrements NAPTR peuvent être utilisés pour trouver l'adresse de courrier électronique d'une personne, connaissant son numéro de téléphone (qui sert de clé à ENUM).

SOA record

Cet enregistrement permet d'indiquer le serveur de nom faisant autorité, un contact technique et des paramètres d'expiration. Ces paramètres sont dans l'ordre : ; Serial : indique un numéro de version pour la zone. Ce nombre doit être incrémenté à chaque modification du fichier zone. On utilise par convention une date au format yyyymmddhhmm ; Refresh : le nombre de secondes entre les demandes de mise à jour réalisées depuis le serveur secondaire ou les serveurs esclaves. ; Retry : le nombre de secondes que doivent attendre le serveur secondaire ou les serveurs esclaves lorsque leur précédente requête a échouée. ; Expire : le nombre de secondes après laquelle la zone est considérée comme gelée si le secondaire ou les esclaves ne peuvent joindre le serveur primaire. ; Minimum : utilisé pour déterminer la durée de vie minimum du fichier de zone. Exemple d'une entrée SOA maboite.com. IN SOA serveur.example.com contact.example.com ( 200612301905 ;serial (version) 3600 ;refresh period 900 ;retry refresh this often 604800 ;expiration period 3600 ;minimum TTL ) Les versions récentes de BIND (named) acceptent les suffixes M, H, D ou W pour indiquer un intervalle de temps en minutes, heures, jours ou semaines respectivement.

Sécurité du DNS

Comme beaucoup de protocoles Internet, le DNS a été conçu sans se préoccuper de la sécurité. Il ne faut donc pas se fier au DNS pour arriver sur le bon serveur et c'est pour cela que des protocoles comme SSH font leur propre vérification (via la cryptographie). Les principales failles du DNS (décrites dans le RFC 3833) sont :
- Interception du paquet (requête ou réponse) et émission d'un autre paquet à sa place,
- Fabrication d'une réponse (les serveurs DNS acceptent trop facilement des réponses puisque seul un numéro de requête, très petit, sert d'authentification),
- Trahison par un serveur (le secondaire hors-site d'un domaine peut par exemple passer sous le contrôle de personnes malintentionnées) ou corruption de données,
- déni de service (saturation du serveur par un grand nombre de requêtes simultanées).

DNSSEC

Pour contrer ces vulnérabilités, le protocole DNSSEC a été développé.

Hébergeur de noms de domaine

- DynDNS est l'un des plus connus.
- Gandi.net

Voir aussi

- Serveurs DNS Racine
- Dig
- Hosts
- Nslookup
- Réseau (informatique)
- RFC
- ICANN
- Les réseaux TCP/IP : un wikilivre de la bibliothèque du département informatique.
- Protocole réseau passant difficilement les pare-feu ==
Sujets connexes
Adresse IP   BIND   Cryptographie   DNSSEC   Dig (programme informatique)   DynDNS   Déni de service   ENUM   Enregistrement SRV   Fournisseur d'accès à Internet   Hosts   IPv4   IPv6   Internet   Internet Corporation for Assigned Names and Numbers   Nom de domaine   Nslookup   Paul Mockapetris   Protocole réseau passant difficilement les pare-feu   Répartition de charge   Réécriture   Réécriture (informatique)   Sender Policy Framework   Serveur informatique   Simple Mail Transfer Protocol   Système décimal   UNIX  
#
Accident de Beaune   Amélie Mauresmo   Anisocytose   C3H6O   CA Paris   Carole Richert   Catherinettes   Chaleur massique   Championnat de Tunisie de football D2   Classement mondial des entreprises leader par secteur   Col du Bonhomme (Vosges)   De viris illustribus (Lhomond)   Dolcett   EGP  
^