Voyage en DNS au centre de l’espace de nommage d’Internet
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 (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.
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 |
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.
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.
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.
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
>
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).
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.