Notions avancées

L'arborescence

Considérations générales

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.

La structure de DNS

Root-Servers

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.

Serveurs TLD

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.

Manip.

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

  • le -v indique que l'on veut des détails (verbose) ;
  • l'adresse IP en dernier argument indique quel serveur DNS nous voulons interroger.
$ 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 ;
  • pour résoudre des noms dans le domaine 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é.