Voyage en DNS au centre de l’espace de nommage d’Internet

Introduction

Le système de noms de domaine est un système de recherche hiérarchique réparti. Il est essentiellement utilisé sur l’Internet pour convertir les noms de domaines en adresses IP (protocole Internet) et inversement. Pour comprendre la hiérarchie du système DNS, il est utile d’examiner la structure des noms logiques Internet. La dernière partie d’un nom logique par exemple .net dans le cas de www.gecif.net constitue le domaine de premier niveau ("TLD", top level domain) de ce nom logique. Il existe actuellement un ensemble de domaines de premier niveau génériques ("gTLD", generic top level domain) par exemple .com, .net ou .org et un ensemble de domaines de premier niveau de type code de pays ("ccTLD", country code top level domain) par exemple .be pour la Belgique, .cn pour la République populaire de Chine ou .us pour les Etats-Unis d’Amérique. D’autres domaines de premier niveau notamment .int, .gov, .mil ou .edu ne rentrent dans aucune de ces catégories et forment un ensemble de domaines de premier niveau "agréés" sous lesquels tout enregistrement nécessite une admission. Par exemple, seules les organisations intergouvernementales créées par traité sont actuellement autorisées à s’enregistrer sous le domaine de premier niveau .int. Il existe aujourd’hui 248 ccTLD (domaines de premier niveau représentant les pays) et 16 gTLD (domaines de premier niveau génériques), dont 2 exclusivement dédiés aux USA (.gov, .mil).

Le domaine Gecif.net

Le domaine gecif.net (dont le nom absolu est gecif.net. finissant par un point symbolisant la racine de l’arborescence DNS) est le sous-domaine gecif du domaine net de la racine. Les termes domaine et sous-domaine sont des termes relatifs, et ne désigne pas un niveau absolu dans la profondeur de l’arborescence de l’espace de nomage.

Pour résoudre les noms sur Internet, des centaines de serveurs DNS (serveurs de noms) couvrent les différents "zones" de l’espace de nomage.

La racine de l’espace de nommage

A la base de l’espace de nomage se trouve la première zone : la racine. Le serveur DNS de la racine ne connais pas toutes les adresse DNS du monde (il y en existe plusieurs millions aujourd’hui) mais connais simplement les adresses des serveur DNS gérant les domaine de premier niveau : .NET, .COM, .ORG, .FR, etc.

En réalité il n’existe pas 1 mais 13 serveurs DNS de la racines : un serveur DNS primaire et 12 serveurs DNS secondaires. L’adresse du serveur DNS primaire de la racine est A.ROOT-SERVERS.NET (adresse IP 198.41.0.4). Les 12 serveurs DNS secondaires de la racine ont pour nom B.ROOT-SERVERS.NET à M.ROOT-SERVERS.NET, et leur adresse IP sont les suivantes :

B.ROOT-SERVERS.NET
192.228.79.201
C.ROOT-SERVERS.NET
192.33.4.12
D.ROOT-SERVERS.NET
128.8.10.90
E.ROOT-SERVERS.NET
192.203.230.10
F.ROOT-SERVERS.NET
192.5.5.241
G.ROOT-SERVERS.NET
192.112.36.4
H.ROOT-SERVERS.NET
128.63.2.53
I.ROOT-SERVERS.NET
192.36.148.17
J.ROOT-SERVERS.NET
192.58.128.30
K.ROOT-SERVERS.NET
193.0.14.129
L.ROOT-SERVERS.NET
198.32.64.12
M.ROOT-SERVERS.NET
202.12.27.33

Comment retrouver ces informations sur les serveurs DNS de la racine ?

Voici 3 solutions possibles nous permettant de retrouver à tout instant les noms et les adresses IP des 13 serveurs DNS de la racine :

SOLUTION 1

Pour connaitre les noms des 13 serveurs DNS de la racine on peut utiliser le programme nslookup :

#nslookup
Serveur par defaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=ns
> .
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
(root)  nameserver = k.root-servers.net
(root)  nameserver = l.root-servers.net
(root)  nameserver = m.root-servers.net
(root)  nameserver = a.root-servers.net
(root)  nameserver = b.root-servers.net
(root)  nameserver = c.root-servers.net
(root)  nameserver = d.root-servers.net
(root)  nameserver = e.root-servers.net
(root)  nameserver = f.root-servers.net
(root)  nameserver = g.root-servers.net
(root)  nameserver = h.root-servers.net
(root)  nameserver = i.root-servers.net
(root)  nameserver = j.root-servers.net
>

La première ligne (#nslookup) lance nslookup à partir de la ligne de commande du système (Linux ou autre). La ligne set type=ns spécifie à nslookup que l’on veut obtenir les noms des serveurs DNS comme réponse. La ligne contenant le point demande quel sont les serveur DNS de la racine. On obtient en réponse les noms des 13 serveurs DNS de la racine.

Remarque : par défaut nslookup utilise le serveur DNS du fournisseur d’accès pour effectuer ses requettes (serveur DNS de wanadoo dans mon cas). Mais on peut demander à nslookup d’interroger n’importe quel serveur DNS comme nous le verrons plus bas.

Parmi ces 13 serveurs DNS de la racine, lequel est l’unique serveur DNS primaire ? Là encore c’est nslookup qui va nous répondre, en spécifiant cette fois que l’on recherche essencirellement le serveur DNS primaire ayant autorité sur la zone (serveur noté SOA pour Start Of Authority), et non les secondaires :

#nslookup
Serveur par defaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=soa
> .
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
(root)
       primary name server = A.ROOT-SERVERS.NET
       responsible mail addr = NSTLD.VERISIGN-GRS.COM
       serial  = 2006021101
       refresh = 1800 (30 mins)
       retry   = 900 (15 mins)
       expire  = 604800 (7 days)
       default TTL = 86400 (1 day)
>

La réponse donnée par nslookup est sans ambiguïté : le serveur DNS primaire de la racine est A.ROOT-SERVERS.NET. Nslookup nous donne même en ensemble de renseignements concernant le serveur DNS trouvé.

SOLUTION 2

On peut aussi utiliser le programme dig sous Linux. La ligne suivante demande la liste des serveurs DNS qui ont autorité sur la racine : dig +trace . On obtient en réponse les noms des 13 serveurs DNS de la racine (A.ROOT-SERVERS.NET à M.ROOT-SERVERS.NET).

Dans les réponse données par dig :
 SOA (Start of authority) : Indique le nom du serveur primaire
 NS (Name server) : Indique le nom canonique d’un serveur de noms. Il DOIT y avoir un NS par serveur (primaire ou secondaire) pour la zone.
 A (Address) : Indique l’adresse d’une machine.
 CNAME (Canonical name) : Indique le nom canonique correspondant à un alias.

Pour connaitre l’adresse IP exacte de chaque serveur on utilisera nslookup : nslookup A.ROOT-SERVERS.NET

SOLUTION 3

Enfin, pour obtenir la liste des 13 serveurs DNS de la racine de l’espace de nommage Internet on peut aussi consulter en anonyme le serveur FTP ftp.rs.internic.net, dans lequel le fichier named.root donne les noms et les adresses IP actuelles des 13 serveurs. Ce fichier est mis à la disposition des administrateurs réseau dans le but de configurer la zone racine de leur serveur DNS Bind.

Quel est le nom du serveur DNS primaire (SOA) qui a autorité sur la zone .net dans l’espace de nommage ?

Pour répondre à cette questions il y a au moins 2 solutions : nslookup et dig.

SOLUTION 1

Demandons à nslookup quel est le serveur DNS primaire ayant autorité sur la zone net. (et non .net ...) :

#nslookup
Serveur par dÚfaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=soa
> net.
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
net
       primary name server = a.gtld-servers.net
       responsible mail addr = nstld.verisign-grs.com
       serial  = 1139735226
       refresh = 1800 (30 mins)
       retry   = 900 (15 mins)
       expire  = 604800 (7 days)
       default TTL = 900 (15 mins)
>

La réponse est le serveur DNS a.gtld-servers.net.

SOLUTION 2

Avec dig :

dig net.

On pourait penser que dig nous indique 2 serveurs SOA : a.gtld-serveers.net. et nstld.verisign-grs.com.. En réalité il n’en est rien car nstld.verisign-grs.com. est l’adresse mail du responsable du serveur DNS a.gtld-serveers.net..

Remarque : pour utiliser cette adresse mail à "l’ancien format" avec les logiciel de courier électronique actuel il faut remplacer le premier point par le caractère @ : l’adresse mail est en fait nstld@verisign-grs.com.

Quel est la liste des serveur DNS (le primaire et les secondaires) qui gère la zone .net dans l’espace de nommage ?

Pour répondre à cette questions il y a encore au moins 2 solutions : nslookup et dig.

SOLUTION 1

On utilise nslookup en lui demandant tous les serveurs de noms (type=ns) et pas seulement le SOA :

#nslookup
Serveur par dÚfaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=ns
> net.
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
net     nameserver = l.gtld-servers.net
net     nameserver = m.gtld-servers.net
net     nameserver = a.gtld-servers.net
net     nameserver = b.gtld-servers.net
net     nameserver = c.gtld-servers.net
net     nameserver = d.gtld-servers.net
net     nameserver = e.gtld-servers.net
net     nameserver = f.gtld-servers.net
net     nameserver = g.gtld-servers.net
net     nameserver = h.gtld-servers.net
net     nameserver = i.gtld-servers.net
net     nameserver = j.gtld-servers.net
net     nameserver = k.gtld-servers.net
>

SOLUTION 2

Et avec dig :

dig +trace net.

On constate que le noeud net. de l’espace de nommage DNS est enregistré dans 13 serveurs DNS nommés A.GTLD-SERVERS.NET à M.GTLD-SERVERS.NET. Comme nous l’avons constaté, a.gtld-servers.net est le serveur DNS primaire. On en déduit que les serveurs b.gtld-servers.net à m.gtld-servers.net sont 12 serveurs DNS secondaires.

Et quel est le nom du serveur DNS qui gère le domaine gecif.net. ?

Dig ou nslookup nous donne la même réponse :

dig +trace gecif.net.

#nslookup
Serveur par dÚfaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=ns
> gecif.net.
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
gecif.net       nameserver = ns2.amen.fr
gecif.net       nameserver = paris.amen.fr
>

La réponse est ns2.amen.fr et paris.amen.fr, les deux serveurs DNS de mon registar Amen.fr à qui j’ai acheté le nom de domaine Gecif.net.

Lequel de ces deux serveurs DNS est le primaire (SOA) ? Demandons à nslookup :

#nslookup
Serveur par defaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=soa
> gecif.net.
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
gecif.net
       primary name server = paris.amen.fr
       responsible mail addr = root.amen.fr
       serial  = 2006021018
       refresh = 21600 (6 hours)
       retry   = 3600 (1 hour)
       expire  = 604800 (7 days)
       default TTL = 86400 (1 day)
>

On constate que le serveur DNS primaire ayant autorité sur la zone gecif.net. (donc sur mon domaine gecif.net) est le serveur de noms paris.amen.fr.

Enfin, si on veut que nslookup nous libre tous les serveurs DNS (le primaire et les secondaires) tout en distingant le primaire des autres on pourra utiliser le paramètre type=any de nslookup :

#nslookup
Serveur par defaut :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

> set type=any
> gecif.net.
Serveur :  dns-adsl-gpe1-a.wanadoo.fr
Address:  80.10.246.1

Réponse ne faisant pas autorité :
gecif.net
       primary name server = paris.amen.fr
       responsible mail addr = root.amen.fr
       serial  = 2006021018
       refresh = 21600 (6 hours)
       retry   = 3600 (1 hour)
       expire  = 604800 (7 days)
       default TTL = 86400 (1 day)
gecif.net       nameserver = ns2.amen.fr
gecif.net       nameserver = paris.amen.fr
>

Position géographique des serveurs DNS

Mais comment sont répartis les 13 serveurs DNS de la racine sur l’ensemble de la planète ? Le tableau suivant donne l’emplacement de ces 13 serveurs. Dix se trouvent aux Etats-Unis, les trois autres étant situés au Japon, en Suède et au Royaume-Uni :

Nom du serveur DNS Adresse IP Géré par Pays
A.ROOT-SERVERS.NET
198.41.0.4
Verisign Global Registry Services
Etats-Unis
B.ROOT-SERVERS.NET
192.228.79.201
Information Sciences Institute USC
Etats-Unis
C.ROOT-SERVERS.NET
192.33.4.12
PSINet
Etats-Unis
D.ROOT-SERVERS.NET
128.8.10.90
University of Maryland
Etats-Unis
E.ROOT-SERVERS.NET
192.203.230.10
NASA Ames Research Center
Etats-Unis
F.ROOT-SERVERS.NET
192.5.5.241
Internet Software Consortium
Etats-Unis
G.ROOT-SERVERS.NET
192.112.36.4
U.S. DOD Network Information Center
Etats-Unis
H.ROOT-SERVERS.NET
128.63.2.53
U.S. Army Research Lab
Etats-Unis
I.ROOT-SERVERS.NET
192.36.148.17
NordU
Suède
J.ROOT-SERVERS.NET
192.58.128.30
VeriSign Global Registry Services
Etats-Unis
K.ROOT-SERVERS.NET
193.0.14.129
RIPE NCC
Royaume-Uni
L.ROOT-SERVERS.NET
198.32.64.12
ICANN
Etats-Unis
M.ROOT-SERVERS.NET
202.12.27.33
WIDE Project
Japon

L’image suivante illustre la répartition géographique des 13 serveurs DNS de la racine :

Le fichier de zone racine contient notamment des pointeurs vers les serveurs de noms associés aux domaines génériques de premier niveau (les gLDT tel que .net, .org ou .com).

Conclusion

Grâce aux programmes dig (livrés avec Bind) et nslookup, il est alors facile de se déplacer à l’intérieur de l’espace de nommage et d’y voir plus clair dans la hiérarchie des noms DNS d’Internet. La visite expérimentale de cet arbre aux dimentions mondiales représente un véritable voyage intellectuel qui n’en demeure pas moins géographique si on essaye de s’imaginer la position réelle de chacun des serveurs DNS répartis sur toute la planète.