Table des matières

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. La carte affichée permet de trouver tous les root-servers présents dans le monde.

As of 2025-03-18T14:54:20Z, the root server system consists of 1907 instances operated by the 12 independent root server operators.

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.

Exercice

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. Il faut bien en choisir un, prenons le f.root-servers.net 2001:500:2f::f

host -v www.education.gouv.fr 2001:500:2f::f

Trying "www.education.gouv.fr"
Using domain server:
Name: 2001:500:2f::f
Address: 2001:500:2f::f#53
Aliases: 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9665
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 6

;; QUESTION SECTION:
;www.education.gouv.fr.		IN	A

;; AUTHORITY SECTION:
fr.			172800	IN	NS	d.nic.fr.
fr.			172800	IN	NS	f.ext.nic.fr.
fr.			172800	IN	NS	g.ext.nic.fr.

;; ADDITIONAL SECTION:
d.nic.fr.		172800	IN	A	194.0.9.1
d.nic.fr.		172800	IN	AAAA	2001:678:c::1
f.ext.nic.fr.		172800	IN	A	194.146.106.46
f.ext.nic.fr.		172800	IN	AAAA	2001:67c:1010:11::53
g.ext.nic.fr.		172800	IN	A	194.0.36.1
g.ext.nic.fr.		172800	IN	AAAA	2001:678:4c::1

Le root-server.net ne répond pas directement, comme nous pouvions nous en douter. En revanche, il nous envoie la liste des serveurs DNS compétants (qui font autorité) dans le TLD fr. Reposons donc la question au premier de la liste : d.nic.fr :

host -v www.education.gouv.fr 2001:678:c::1

Trying "www.education.gouv.fr"
Using domain server:
Name: 2001:678:c::1
Address: 2001:678:c::1#53
Aliases: 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9434
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;www.education.gouv.fr.		IN	A

;; AUTHORITY SECTION:
education.gouv.fr.	3600	IN	NS	ate-ns03.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns02.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns01.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns04.ate.info.
Ça n'est pas encore gagné. Nous n'avons obtenu que les FQDN des serveurs qui font autorité pour education.gouv.fr., mais pas leur adresse. Mais qui est donc ate.info ? Voyez par vous-même.

Reprenons donc à partir du root-server:

host -v ate-ns01.ate.info. 2001:500:2f::f

Trying "ate-ns01.ate.info"
Using domain server:
Name: 2001:500:2f::f
Address: 2001:500:2f::f#53
Aliases: 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50463
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 12

;; QUESTION SECTION:
;ate-ns01.ate.info.		IN	A

;; AUTHORITY SECTION:
info.			172800	IN	NS	a0.info.afilias-nst.info.
info.			172800	IN	NS	a2.info.afilias-nst.info.
info.			172800	IN	NS	b0.info.afilias-nst.org.
info.			172800	IN	NS	b2.info.afilias-nst.org.
info.			172800	IN	NS	c0.info.afilias-nst.info.
info.			172800	IN	NS	d0.info.afilias-nst.org.

;; ADDITIONAL SECTION:
a0.info.afilias-nst.info. 172800 IN	A	199.254.31.1
a0.info.afilias-nst.info. 172800 IN	AAAA	2001:500:19::1
a2.info.afilias-nst.info. 172800 IN	A	199.249.113.1
a2.info.afilias-nst.info. 172800 IN	AAAA	2001:500:41::1
b0.info.afilias-nst.org. 172800	IN	A	199.254.48.1
b0.info.afilias-nst.org. 172800	IN	AAAA	2001:500:1a::1
b2.info.afilias-nst.org. 172800	IN	A	199.249.121.1
b2.info.afilias-nst.org. 172800	IN	AAAA	2001:500:49::1
c0.info.afilias-nst.info. 172800 IN	A	199.254.49.1
c0.info.afilias-nst.info. 172800 IN	AAAA	2001:500:1b::1
d0.info.afilias-nst.org. 172800	IN	A	199.254.50.1
d0.info.afilias-nst.org. 172800	IN	AAAA	2001:500:1c::1
Mais qui est afilias-nst ? Whois nous apprend qu'il s'agit de «Afilias», le registre des domaines de premier niveau .info, .mobi et .pro et c'est justement le TLD info. qui nous intéresse. Rien d'anormal.

Donc:

host -v ate-ns01.ate.info. 2001:500:19::1

Trying "ate-ns01.ate.info"
Using domain server:
Name: 2001:500:19::1
Address: 2001:500:19::1#53
Aliases: 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35679
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;ate-ns01.ate.info.		IN	A

;; AUTHORITY SECTION:
ate.info.		3600	IN	NS	ate-ns06.ate.info.
ate.info.		3600	IN	NS	ate-ns05.ate.info.

;; ADDITIONAL SECTION:
ate-ns05.ate.info.	3600	IN	A	185.252.156.7
ate-ns06.ate.info.	3600	IN	A	185.75.142.253

Et finalement:

host -v education.gouv.fr 185.252.156.7

Trying "education.gouv.fr"
Using domain server:
Name: 185.252.156.7
Address: 185.252.156.7#53
Aliases: 

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29295
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;education.gouv.fr.		IN	A

;; ANSWER SECTION:
education.gouv.fr.	86	IN	A	141.101.90.104
education.gouv.fr.	86	IN	A	141.101.90.106
education.gouv.fr.	86	IN	A	141.101.90.107
education.gouv.fr.	86	IN	A	141.101.90.105

Received 99 bytes from 185.252.156.7#53 in 27 ms
Trying "education.gouv.fr"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9261
;; flags: qr aa rd; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;education.gouv.fr.		IN	AAAA

;; ANSWER SECTION:
education.gouv.fr.	205	IN	AAAA	2a06:98c1:3200::90:80
education.gouv.fr.	205	IN	AAAA	2a06:98c1:3200::90:83
education.gouv.fr.	205	IN	AAAA	2a06:98c1:3200::90:82
education.gouv.fr.	205	IN	AAAA	2a06:98c1:3200::90:81

Nous venons de faire pas à pas ce que fait très bien tout seul un serveur DNS récursif. Nous retrouvons bien les résultats obtenus précédemment, à ceci près qu'il nous a échappé que www.education.gouv.fr n'est qu'un alias de education.gouv.fr.cdn.cloudflare.net. et que nous savons ce que fait l'entreprise «cloudflare».

Lorsque notre DNS a effectué cette recherche, les renseignements qu'il a glanés 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 rafraîchir le contenu de leur cache en fonction de dette durée de validité.

Synthèse

La commande ''dig'' offre un éventail de possibilités intéressantes pour obtenir des informations sur les recherches DNS. Par exemple, en reprenant l'exercice précédent:

dig www.education.gouv.fr +trace

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> www.education.gouv.fr +trace
;; global options: +cmd
.			252480	IN	NS	l.root-servers.net.
.			252480	IN	NS	d.root-servers.net.
.			252480	IN	NS	c.root-servers.net.
.			252480	IN	NS	h.root-servers.net.
.			252480	IN	NS	m.root-servers.net.
.			252480	IN	NS	b.root-servers.net.
.			252480	IN	NS	e.root-servers.net.
.			252480	IN	NS	j.root-servers.net.
.			252480	IN	NS	g.root-servers.net.
.			252480	IN	NS	a.root-servers.net.
.			252480	IN	NS	i.root-servers.net.
.			252480	IN	NS	f.root-servers.net.
.			252480	IN	NS	k.root-servers.net.
...
;; Received 1137 bytes from 192.168.60.200#53(192.168.60.200) in 3 ms

fr.			172800	IN	NS	f.ext.nic.fr.
fr.			172800	IN	NS	g.ext.nic.fr.
fr.			172800	IN	NS	d.nic.fr.
...
;; Received 611 bytes from 192.112.36.4#53(g.root-servers.net) in 71 ms

education.gouv.fr.	3600	IN	NS	ate-ns03.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns01.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns02.ate.info.
education.gouv.fr.	3600	IN	NS	ate-ns04.ate.info.
...
;; Received 532 bytes from 2001:678:c::1#53(d.nic.fr) in 15 ms

www.education.gouv.fr.	86400	IN	CNAME	education.gouv.fr.cdn.cloudflare.net.
;; Received 100 bytes from 195.190.27.186#53(ate-ns04.ate.info) in 19 ms
Nous retrouvons les étapes pour arriver à la solution. (J'ai retiré les enregistrements des signatures pour alléger la lecture):

  1. Obtient la liste des root-servers depuis le DNS récursif par défaut.
  2. obtient depuis g.root-servers.net la liste des serveurs qui font autorité pour le TLD fr.
  3. obtient depuis d.nic.fr la liste des serveurs qui font autorité pour le domaine education.gouv.fr.
  4. obtient finalement depuis ate-ns04.ate.info le «vrai nom» de l'hôte de www.education.gouv.fr. à savoir education.gouv.fr.cdn.cloudflare.net.

Puisque nous en sommes là, reprenons donc:

dig education.gouv.fr.cdn.cloudflare.net. +trace

; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> education.gouv.fr.cdn.cloudflare.net. +trace
;; global options: +cmd
.			250925	IN	NS	c.root-servers.net.
.			250925	IN	NS	l.root-servers.net.
.			250925	IN	NS	d.root-servers.net.
.			250925	IN	NS	b.root-servers.net.
.			250925	IN	NS	i.root-servers.net.
.			250925	IN	NS	a.root-servers.net.
.			250925	IN	NS	e.root-servers.net.
.			250925	IN	NS	f.root-servers.net.
.			250925	IN	NS	h.root-servers.net.
.			250925	IN	NS	g.root-servers.net.
.			250925	IN	NS	j.root-servers.net.
.			250925	IN	NS	k.root-servers.net.
.			250925	IN	NS	m.root-servers.net.
...
;; Received 1137 bytes from 192.168.60.200#53(192.168.60.200) in 3 ms

net.			172800	IN	NS	e.gtld-servers.net.
net.			172800	IN	NS	m.gtld-servers.net.
net.			172800	IN	NS	f.gtld-servers.net.
net.			172800	IN	NS	b.gtld-servers.net.
net.			172800	IN	NS	j.gtld-servers.net.
net.			172800	IN	NS	i.gtld-servers.net.
net.			172800	IN	NS	d.gtld-servers.net.
net.			172800	IN	NS	g.gtld-servers.net.
net.			172800	IN	NS	h.gtld-servers.net.
net.			172800	IN	NS	c.gtld-servers.net.
net.			172800	IN	NS	a.gtld-servers.net.
net.			172800	IN	NS	k.gtld-servers.net.
net.			172800	IN	NS	l.gtld-servers.net.
...
;; Received 1227 bytes from 192.112.36.4#53(g.root-servers.net) in 71 ms

cloudflare.net.		172800	IN	NS	ns1.cloudflare.net.
cloudflare.net.		172800	IN	NS	ns2.cloudflare.net.
cloudflare.net.		172800	IN	NS	ns3.cloudflare.net.
cloudflare.net.		172800	IN	NS	ns4.cloudflare.net.
cloudflare.net.		172800	IN	NS	ns5.cloudflare.net.
...
;; Received 522 bytes from 2001:503:eea3::30#53(g.gtld-servers.net) in 23 ms

education.gouv.fr.cdn.cloudflare.net. 300 IN A	141.101.90.106
education.gouv.fr.cdn.cloudflare.net. 300 IN A	141.101.90.104
education.gouv.fr.cdn.cloudflare.net. 300 IN A	141.101.90.107
education.gouv.fr.cdn.cloudflare.net. 300 IN A	141.101.90.105
...
;; Received 239 bytes from 173.245.59.31#53(ns1.cloudflare.net) in 15 ms
Nous retrouvons les étapes pour arriver à la solution. (J'ai encore retiré les enregistrements des signatures pour alléger la lecture):

  1. Obtient la liste des root-servers depuis le DNS récursif par défaut.
  2. obtient depuis g.root-servers.net la liste des serveurs qui font autorité pour le TLD net. (arf!)
  3. obtient depuis le même g.root-servers.net la liste des serveurs qui font autorité pour le domaine cloudflare.net.
  4. obtient finalement depuis ns1.cloudflare.net les adresses de «vrai nom» de education.gouv.fr.cdn.cloudflare.net..

Tout a été fait en IPv4, mais c'est la démarche qui était importante.

Cet exemple compliqué, tortueux, montre qu'au final, nous obtenons les bonnes adresses, d'une manière ou d'une autre.