Par la pratique, nous savons que la partie la plus à droite d'un FQDN est régie par des usages stricts. En effet, cette partie représente un « Top Level Domain », Domaine de premier niveau en français. Il en existe un certain nombre, ils sont définis par l'ICANN (Internet Corporation for Assigned Names and Numbers). Un article bien documenté sur Wikipédia vous donnera plus de détails.
A l'intérieur de chaque TLD, il est possible pour toute entreprise, association, personne morale ou physique, d'enregistrer un nom de domaine. Il suffit d'en faire la demande auprès d'un « registar », bureau d'enregistrement en français. Voir encore Wikipédia pour plus de détails. Le registar vérifiera l'unicité du domaine demandé, les éventuelles conditions d'obtention et se chargera des démarches pour l'enregistrement du domaine. Le cout de l'opération varie beaucoup en fonction du registar choisi.
Nous allons voir l'influence qu'a cette opération sur la structure du DNS.
Nous avons au départ une série de serveurs DNS appelés root-servers
. Nous en trouvons la liste et leur implantation dans le monde sur le site root-servers.org.
Ces serveurs ne sont pas récursifs, ne savent pas résoudre les FQDN, mais savent dire quels serveurs sont spécialisés dans les divers TLDs.
Ces serveurs DNS ne sont pas non plus récursifs, mais pour un TLD donné, savent dire quels sont les serveurs DNS qui gèrent un domaine appartenant à ce TLD.
C'est à ce niveau que le registar intervient techniquement. Une fois le nom de domaine enregistré, le demandeur doit fournir l'adresse d'au moins un serveur DNS qui saura résoudre les noms dans le domaine en question et ce DNS doit être enregistré sur les serveurs du TLD choisi.
Mais une petite expérience vaut mieux qu'un long discours. Nous allons utiliser notre outil host
pour chercher à résoudre le FQDN www.education.gouv.fr
, non plus en posant la question à notre serveur DNS récursif, mais en partant de la source, à savoir un root-server
: 192.58.128.30, en utilisant la commande comme ceci :
host -v www.education.gouv.fr 192.58.128.30
-v
indique que l'on veut des détails (verbose) ;$ host -v www.education.gouv.fr 192.58.128.30 Server: j.root-servers.net Address: 192.58.128.30 Query about www.education.gouv.fr for record types A Trying www.education.gouv.fr ... Query failed, 0 answers, status: no error Authority information: fr 172800 IN NS E.EXT.NIC.fr fr 172800 IN NS C.NIC.fr fr 172800 IN NS B.EXT.NIC.fr fr 172800 IN NS F.EXT.NIC.fr fr 172800 IN NS A.NIC.fr fr 172800 IN NS E.NIC.fr fr 172800 IN NS D.EXT.NIC.fr fr 172800 IN NS G.EXT.NIC.fr Additional information: A.NIC.fr 172800 IN A 192.93.0.129 A.NIC.fr 172800 IN AAAA 2001:660:3005:3:0:0:1:1 B.EXT.NIC.fr 172800 IN A 192.228.90.21 C.NIC.fr 172800 IN A 192.134.0.129 C.NIC.fr 172800 IN AAAA 2001:660:3006:4:0:0:1:1 D.EXT.NIC.fr 172800 IN A 204.152.184.85 D.EXT.NIC.fr 172800 IN AAAA 2001:4F8:0:2:0:0:0:8 E.EXT.NIC.fr 172800 IN A 193.176.144.6 E.NIC.fr 172800 IN A 194.57.253.1 F.EXT.NIC.fr 172800 IN A 194.146.106.46 G.EXT.NIC.fr 172800 IN A 204.61.216.39 www.education.gouv.fr A record currently not present at j.root-servers.net
J-root-servers.net ne répond pas directement, comme nous pouvions nous en douter. En revanche, il nous envoie la liste des serveurs DNS compétants dans le TLD fr
. Reposons donc la question au premier de la liste : a.nic.fr
:
$ host -v www.education.gouv.fr 192.93.0.129 Server: a.nic.fr Address: 192.93.0.129 Query about www.education.gouv.fr for record types A Trying www.education.gouv.fr ... Query failed, 0 answers, status: no error Authority information: education.gouv.fr 172800 IN NS ns4.atos.net education.gouv.fr 172800 IN NS ns3.atos.net www.education.gouv.fr A record currently not present at a.nic.fr
Cette réponse nous apprend deux choses :
gouv.fr
est un « domaine sectoriel », géré par l'afnic, et donc directement par les serveurs .NIC.FR
et il en va de même pour des « domaines descriptifs définis dans le .fr
;education.gouv.fr
, il faut poser la question à ns4.atos.net
ou à ns3.atos.net
.Malheureusement, nous ne disposons pas cette fois-ci des « Additionnal information » et n'avons pas l'adresse IP de ces serveurs. Il nous reste à repartir du début avec une nouvelle requête:
$ host -v ns4.atos.net 192.58.128.30 Server: j.root-servers.net Address: 192.58.128.30 Query about ns4.atos.net for record types A Trying ns4.atos.net ... Query failed, 0 answers, status: no error Authority information: net 172800 IN NS J.GTLD-SERVERS.net net 172800 IN NS K.GTLD-SERVERS.net net 172800 IN NS G.GTLD-SERVERS.net net 172800 IN NS M.GTLD-SERVERS.net net 172800 IN NS C.GTLD-SERVERS.net net 172800 IN NS H.GTLD-SERVERS.net net 172800 IN NS D.GTLD-SERVERS.net net 172800 IN NS B.GTLD-SERVERS.net net 172800 IN NS L.GTLD-SERVERS.net net 172800 IN NS A.GTLD-SERVERS.net net 172800 IN NS F.GTLD-SERVERS.net net 172800 IN NS E.GTLD-SERVERS.net net 172800 IN NS I.GTLD-SERVERS.net Additional information: A.GTLD-SERVERS.net 172800 IN A 192.5.6.30 A.GTLD-SERVERS.net 172800 IN AAAA 2001:503:A83E:0:0:0:2:30 B.GTLD-SERVERS.net 172800 IN A 192.33.14.30 B.GTLD-SERVERS.net 172800 IN AAAA 2001:503:231D:0:0:0:2:30 C.GTLD-SERVERS.net 172800 IN A 192.26.92.30 D.GTLD-SERVERS.net 172800 IN A 192.31.80.30 E.GTLD-SERVERS.net 172800 IN A 192.12.94.30 F.GTLD-SERVERS.net 172800 IN A 192.35.51.30http://www.google.fr/ G.GTLD-SERVERS.net 172800 IN A 192.42.93.30 H.GTLD-SERVERS.net 172800 IN A 192.54.112.30 I.GTLD-SERVERS.net 172800 IN A 192.43.172.30 J.GTLD-SERVERS.net 172800 IN A 192.48.79.30 K.GTLD-SERVERS.net 172800 IN A 192.52.178.30 L.GTLD-SERVERS.net 172800 IN A 192.41.162.30 ns4.atos.net A record currently not present at j.root-servers.net
A peine plus avancés, interrogeons alors a.gtld-servers.net
:
$ host -v ns4.atos.net 192.5.6.30 Server: a.gtld-servers.net Address: 192.5.6.30 Query about ns4.atos.net for record types A Trying ns4.atos.net ... Query done, 1 answer, status: no error The following answer is not authoritative: ns4.atos.net 172800 IN A 193.56.46.248 Authority information: atos.net 172800 IN NS ns3.atos.net atos.net 172800 IN NS ns4.atos.net Additional information: ns3.atos.net 172800 IN A 160.92.121.6 ns4.atos.net 172800 IN A 193.56.46.248
Nous n'avons jamais été aussi proches de la solution finale. Une dernière question à ns4.atos.net
dont nous connaissons désormais l'adresse IP :
$ host www.education.gouv.fr 193.56.46.248 www.education.gouv.fr CNAME front.webedu.men.aw.atosorigin.com front.webedu.men.aw.atosorigin.com A 160.92.130.142
Et voilà le travail. Nous pouvons constater à quel point il peut être fastidieux et nous nous félicitons de disposer d'un bon gros serveur DNS récursif, qui fait tout ce travail à notre place. Car c'est exactement de cette manière qu'il s'y prend pour nous obtenir la réponse.
Les renseignements qu'il glane en effectuant cette recherche, il va les garder en mémoire et s'en resservira pour d'éventuelles résolutions futures. Nous verrons que pour cette raison, les serveurs « qui font autorité » indiquent une durée de validité pour les informations qu'ils donnent. Ainsi, les serveurs récursifs devront rafraichir le contenu de leur cache en fonction de dette durée de validité.