Première rédaction de cet article le 11 mai 2020
Ce court article explique ce qu'est un résolveur DNS. Il existe plein de ressources en ligne sur le DNS mais très peu expliquent la différence cruciale entre un résolveur et un serveur faisant autorité.
Il y a en effet deux catégories de serveurs DNS. Ils sont tellement différents que c'est en général une mauvaise idée de dire « serveur DNS » tout court. Le résolveur est le serveur qu'interrogent directement les machines terminales (comme celle que vous touchez en ce moment, lorsque vous consultez cet article). Ces machines terminales ne parlent jamais directement aux serveurs faisant autorité, l'autre catégorie de serveurs DNS.
Comme c'est le serveur contacté pour toute résolution DNS, il est absolument critique : s'il tombe en panne, ce sera, pour la très grande majorité des activités, comme si on n'avait plus d'Internet du tout. S'il ment, il pourra emmener l'utilisateur où il veut. Et s'il capture des données, il peut avoir accès à énormément d'informations sur votre activité (cf. RFC 7626).
Notez que le résolveur est parfois appelé « serveur récursif » ou « serveur cache ».
Des exemples de résolveurs :
Comment la machine terminale connait le résolveur à utiliser ?
L'adresse IP du résolveur
est apprise via des protocoles comme DHCP, mais peut aussi avoir été
configurée statiquement, dans une base comme le fichier de
configuration /etc/resolv.conf
sur
Unix. En pratique, ce n'est pas toujours trivial.
Le résolveur ne connait quasiment aucune donnée au démarrage, il apprend petit à petit en contactant les serveurs faisant autorité.
Le résolveur, au milieu de la résolution DNS :
Notez que certains logiciels DNS permettent d'assurer les fonctions de résolveur et de serveur faisant autorité dans le même serveur. C'est en général une mauvaise idée.
Et si vous êtes branché·e technique, et que vous voulez interroger un
résolveur directement, pour voir ce qu'il raconte ? Sur
Unix, le logiciel dig permet de le faire. Si on
n'indique pas explicitement un serveur, il interroge le résolveur
par défaut de la machine, ici il a l'adresse IP
::1
(la ligne SERVER
) :
% dig AAAA cyberstructure.fr ... ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50365 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ... ;; ANSWER SECTION: cyberstructure.fr. 82347 IN AAAA 2001:4b98:dc0:41:216:3eff:fe27:3d3f ... ;; Query time: 137 msec ;; SERVER: ::1#53(::1) ;; WHEN: Fri May 08 17:23:54 CEST 2020 ;; MSG SIZE rcvd: 251
On voit qu'on parle à un résolveur, et non pas à un serveur faisant autorité à deux détails :
Notez que la motivation originelle pour cet article était le désir de pouvoir parler de « résolveur » dans les articles de ce blog sans devoir l'expliquer à chaque fois, uniquement en mettant un lien. D'habitude, je résous le problème en mettant un lien vers Wikipédia mais, ici, il n'existe pas de bon article Wikipédia sur la question. Je n'ai pas le courage de l'écrire, et surtout de le gérer par la suite, surtout face aux « corrections » erronnées. Mais, ce blog étant sous une licence libre, et compatible avec celle de Wikipédia, si vous souhaitez le faire, n'hésitez pas à copier/coller du texte.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)