Domain Name System
Domain Name System (DNS) est un système permettant d'établir une correspondance entre une adresse IP et un nom de domaine.
| Sommaire |
Associer une adresse IP et un nom de domaine
Les ordinateurs connectés à un réseau, 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).
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 le Domain Name System (ou DNS, système de noms de domaine) fut inventé en 1983 par Paul Mockapetris. Il permet d'associer à une adresse IP, un nom intelligible, humainement plus simple à retenir, appelé nom de domaine. 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.
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, 213.228.0.42.
Il est également possible de poser la question inverse, à savoir 'Quel est le nom de domaine de telle adresse IP ?'. On parle alors de résolution inverse.
Plusieurs noms de domaine peuvent pointer vers une même adresse IP. Mais une adresse IP ne peut pointer que sur un unique nom de domaine.
Lorsqu'un service génère un trafic important, celui-ci peut faire appel à la technique du DNS Round-Robin, 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.
Un système réparti
Il existe en fait des centaines 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 root-servers 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 primaire et un secondaire. 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 en anglais).
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 www1.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 remise 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 définit les noms d'hôte d'une adresse IP.
- 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 définit un nom domaine pour une adresse IP.
- NS record ou name server record qui définit les serveurs DNS de ce domaine.
- SOA record ou start of authority record qui définit le serveur DNS fournissant l'information faisant autorité sur un domaine Internet.
- SRV record qui généralise la notion de MX record, standardisé dans la RFC 2782.
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 50 mormo.org. wikimedia.org. 3600 IN MX 10 mail.wikimedia.org.
On voit que les e-mails envoyé à une adresse en @wikimedia.org sont en fait envoyés au serveur mormo.org ou mail.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.
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.
Voir aussi
- Nslookup
- réseau (informatique)
- RFC
Liens externes
- RFCs relatifs au DNS
- Labo-Linux: DHCP/DNS : Mise en place d'un serveur DHCP/DNS avec Bind
