Le web des domaines de premier niveau

PUBLISHED ON NOV 1, 2020

 

Dans le système DNS, rien ne distingue les différents niveaux de domaines. S’il est courant de parler de “nom de domaine” pour un domaine de deuxième niveau (bla.blu) et de “sous-domaine” pour un domaine de troisième niveau (blo.bla.blu), ce ne sont que des conventions de langage qui portent surtout à confusion. Le concept de “sous-domaine” est relatif : dans les exemples ci-dessus, bla est un sous-domaine de blu.

Dès lors, rien ne distingue non plus les domaines de premier niveau, en anglais “top-level domains” ou TLD, qu’ils soient génériques (com, net, org) ou liés à un pays (ch, fr, de). Depuis quelques années, le nombre de ces TLD a explosé, depuis que l’ICANN a relâché drastiquement en 2012 les conditions d’obtention d’un tel domaine. L’on compte aujourd’hui environ 1'500 domaines de premier niveau, qui peuvent faire référence à une ville (paris, berlin, madrid), un corps de métier (accountant, engineer, lawyer), ou à peu près n’importe quoi (coffee, diamonds, hiphop), sans oublier les noms d’entreprises ou marques commerciales (goodyear, fujitsu, homedepot)…

Je me suis demandé si certains de ces TLD étaient utilisés pour servir du contenu publiquement. Pour simplifier et éviter d’avoir à démultiplier les scans de ports, je m’en suis tenu à l’existence ou non d’un service web.

Commençons par récupérer une liste supposément exhaustive de tous les TLD. L’ICANN fournit et maintient à jour une telle liste : https://data.iana.org/TLD/tlds-alpha-by-domain.txt. Une fois effacé le commentaire de la première ligne, on dispose d’un fichier texte composé d’un TLD par ligne.

On va alors, pour chaque TLD, utiliser dig afin de déterminer si le domaine pointe sur une adresse IP (v4 ou v6), un prérequis pour espérer se voir servir du contenu web. La commande dig est la suivante, pour le domaine ch par exemple : dig ch. A ch. AAAA +short. Il semble que dig exige que l’on répète le domaine pour chaque type d’enregistrement que l’on requiert. Le point après chaque mention du domaine est nécessaire, afin d’en faire un nom de domaine pleinement qualifié (“fully qualified domain name”, FQDN).

Détail amusant : pour certains domaines, le point final peut être omis, et le domaine est compris par dig sans ambiguïté. C’est le cas pour l’immense majorité des domaines, y compris de premier niveau. dig fr fonctionnera par exemple très bien. Mais s’agissant de mon exemple suisse, choisi par chauvinisme, ça ne fonctionnera pas, et la raison est la suivante : dig interprète le mot-clé ch comme désignant la classe DNS Chaos (CH), faisant elle-même référence à Chaosnet, abandonné depuis longtemps et d’ailleurs utilisé de façon détournée par bind pour renvoyer des informations propres au daemon, comme son numéro de version ou le nom de ses auteurs. Le protocole Chaosnet a été éclipsé par… Internet, représenté par la classe DNS IN, bien plus familière. Le même problème pourrait se présenter avec un hypothétique domaine de premier niveau hs, qui serait confondu avec la classe DNS Hesiod en cas d’omission du point final… mais ce domaine de premier niveau n’existe pas (et n’existera a priori jamais, les domaines de deux lettres ne pouvant correspondre qu’à un code de pays). Plus d’informations sur les classes DNS et leur usage détourné.

Bref.

Pour accélérer l’examen de tous les TLD, j’utilise GNU Parallel. Il dispose d’un flag --tag très pratique qui permet de préfixer chaque ligne de sortie avec l’argument passé sur l’entrée standard, mais s’abstient d’afficher quoi que ce soit en cas de sortie vide de la commande. Cela donne ça : cat tlds-alpha-by-domain.txt| parallel --tag "dig {}. A {}. AAAA +short". Après quelques instants, on obtient la liste suivante :

AI  209.59.119.34
ARAB    127.0.53.53
BH  10.10.10.10
BH  88.201.27.211
CM  195.24.205.60
CPA 127.0.53.53
DK  193.163.102.58
DK  2a01:630:0:40::58
LLP 127.0.53.53
PN  139.162.17.173
POLITIE 127.0.53.53
TK  217.119.57.22
UZ  91.212.89.8
VA  2a01:b8:0:1:212:77:0:2
VA  2a01:b8:0:1:212:77:0:110
WS  64.70.19.33
XN--L1ACC   180.149.98.78
XN--L1ACC   202.170.80.40
XN--L1ACC   218.100.84.27
XN--NGBRX   127.0.53.53
XN--MXTQ1M  127.0.53.53

Les derniers TLD dans la liste sont exprimés en punycode. 16 TLD, donc, peuvent être résolus vers une adresse IP. On peut éliminer ceux qui ne résolvent que vers une IP réservée, en l’occurrence arab, cpa, llp, politie, xn--ngbrx et xn--mxtq1m. En restent 10.

J’ai utilisé curl pour vérifier “manuellement” si les serveurs en question répondaient quelque chose d’intelligible, car les navigateurs ont tendance à faire toutes sortes de choses exaspérantes avec les domaines qui ne “ressemblent pas” à des domaines, comme initier une recherche Google ou suffixer “.com” de façon arbitraire.

Verdict : tout d’abord, quatre résultats pas forcément très amusants (j’omets les domaines qui ne répondent rien ou sont mal configurés) :

dk (Danemark) : en HTTP, redirection vers dk-hostmaster.dk ; en HTTPS (mal configuré), page “Eksempel Domæne” (domaine d’exemple).


uz (Ouzbékistan) : en HTTP, page vide ; en HTTPS (mal configuré), site du TLD, avec de jolies statistiques.


bh (Bahreïn) : en HTTP, ce qui semble être la page par défaut du serveur web IIS (à noter que le résultat est différent en cas d’inclusion du point final, ce qui conduit à un message d’erreur du serveur) ; en HTTPS, rien. Un peu instable de manière générale, échoue parfois avec un timeout.


pn (Pitcairn) : en HTTP, la page par défaut d’Apache (“It works!") ; en HTTPS (mal configuré), un mignon “Hello World!” (là aussi, le résultat est différent en cas d’inclusion du point final).


Et enfin, mon préféré, avec un design délicieusement rétro :

ai (Anguilla) : en HTTP uniquement, un site qui vante les attraits de cette île de moins de 14'000 habitants : ses plages fantastiques et son secret bancaire. Le site est aussi accessible sur le domaine offshore.ai.

C’est en fait le site personnel d’un homme appelé Vince Cate, un développeur qui a renoncé à la citoyenneté américaine pour une histoire de désaccord avec les lois américaines en matière de cryptographie. On peut le voir, sur le site, faisant de la plongée ou tenant une machette.

Ça valait bien toutes les recherches entreprises.

Icône par Freepik sur Flaticon

comments powered by Disqus