Première rédaction de cet article le 7 juin 2024
Utiliser un résolveur DNS public est souvent nécessaire pour contourner la censure faite, notamment, au profit des ayant-tous-les-droits. Mais il ne faut pas que tout le monde se concentre sur deux ou trois gros résolveurs, surtout s'ils sont gérés depuis un pays qui se moque de la protection des données personnelles. Il faut au contraire une multiplicité de résolveurs DNS publics, et gérés depuis des pays divers. D'où l'intérêt de ce nouveau résolveur public géré aux Pays-Bas, DNS4ALL.
Merci donc à SIDN, registre de
.nl
, pour cette
contribution au pluralisme et à la diversité. (Il y a peu de
résolveurs DNS publics européens mais on peut citer celui de FDN ou celui de DNS.sb.) Peut-être que cela fera
enfin taire la propagande qui essaie de s'opposer à ces résolveurs
publics en faisant semblant de croire qu'il n'y a que ceux de
Google et
Cloudflare ?
Commençons par le commencement, est-ce qu'il marche ? Regardons avec dig :
% dig @2001:678:8::3 www.bortzmeyer.org ; <<>> DiG 9.18.24-1-Debian <<>> @2001:678:8::3 www.bortzmeyer.org ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20893 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;www.bortzmeyer.org. IN A ;; ANSWER SECTION: www.bortzmeyer.org. 86397 IN A 80.77.95.49 ;; Query time: 4 msec ;; SERVER: 2001:678:8::3#53(2001:678:8::3) (UDP) ;; WHEN: Fri Jun 07 11:05:20 CEST 2024 ;; MSG SIZE rcvd: 63
OK, il fonctionne (« status: NOERROR »), il donne bien la bonne réponse, et il valide avec DNSSEC (« flags: ad », ce qui veut dire Authentic Data). Ici, on a utilisé du DNS classique sur UDP, en clair, testons avec du DNS chiffré via TLS (kdig nous donne un peu plus de détails que dig, mais ce dernier marche aussi pour DNS sur TLS) :
% kdig +tls @2001:678:8::3 www.bortzmeyer.org ;; TLS session (TLS1.3)-(ECDHE-SECP256R1)-(RSA-PSS-RSAE-SHA256)-(AES-256-GCM) ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 57888 ;; Flags: qr rd ra ad; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1 ;; EDNS PSEUDOSECTION: ;; Version: 0; flags: ; UDP size: 1232 B; ext-rcode: NOERROR ;; QUESTION SECTION: ;; www.bortzmeyer.org. IN A ;; ANSWER SECTION: www.bortzmeyer.org. 86259 IN A 80.77.95.49 ;; Received 63 B ;; Time 2024-06-07 11:07:37 CEST ;; From 2001:678:8::3@853(TCP) in 94.9 ms
Parfait, là aussi, on s'est connecté en TLS (authentifié par RSA, clés échangées par ECDHE, chiffré par AES). On peut donc utiliser ce résolveur de manière sécurisée. (Il a également DoH mais pas encore DoQ.)
Que se passe-t-il avec les domaines qui ont un problème technique, nous donne-t-il des détails ?
% dig +tls @2001:678:8::3 servfail.nl … ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 40616 … ; EDE: 9 (DNSKEY Missing): (validation failure <servfail.nl. A IN>: signatures from unknown keys from 96.126.104.187 for <servfail.nl. SOA IN>) …
C'est à juste titre qu'il échoue (« status: SERVFAIL donc Server Failure) et il nous explique pourquoi en utilisant les EDE (Extended DNS Errors) du RFC 8914 : « signatures from unknown keys » (ce domaine sert à des tests et ses signatures DNSSEC sont délibérement cassées).
Bon, on utilise souvent les résolveurs publics pour contourner la censure mais certains peuvent aussi censurer. Je dois dire que j'ai été trop paresseux pour lire leur politique de censure et je me suis contenté de tester Sci-Hub (il n'est pas possible de tout vérifier, mais, si vous connaissez un nom censuré, vous pouvez le tester) :
% dig +tls @2001:678:8::3 sci-hub.se … ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20416 … ;; ANSWER SECTION: sci-hub.se. 60 IN A 186.2.163.219
Au moins Sci-Hub fonctionne (c'est l'adresse IP légitime).
Les gérants de ce service disent qu'il est anycasté, ce qui est une bonne chose mais vérifions avec les sondes Atlas :
% blaeu-resolve --requested 200 --nsid --tls --nameserver 2001:678:8::3 www.gouda.nl Nameserver 2001:678:8::3 [2001:9a8:a6:0:87:233:198:3 NSID: america-mex1;] : 24 occurrences [2001:9a8:a6:0:87:233:198:3 NSID: asia-sin1;] : 60 occurrences [2001:9a8:a6:0:87:233:198:3 NSID: eur-fra1;] : 106 occurrences [TIMEOUT] : 5 occurrences [NO RESPONSE FOR UNKNOWN REASON at probe 1006022] : 1 occurrences [TUCONNECT (may be a TLS negotiation error or a TCP connection issue)] : 1 occurrences [NO RESPONSE FOR UNKNOWN REASON at probe 62742] : 1 occurrences Test #73149926 done at 2024-06-07T09:18:33Z
On notera :
L'article cité mentionne que les nœuds utilisent dnsdist (qui a sa propre mémoire, donc n'envoie pas forcément aux résolveurs) et les résolveurs utilisent Unbound. (C'est amusant, c'est pareil pour mon propre résolveur public.)
Terminons avec un exemple de configuration où on utilise sur son réseau local ou sur sa machine un résolveur Unbound qui fait suivre les requêtes dont les réponses ne lui sont pas connues à DNS4ALL. On notera qu'on indique le nom du serveur, ce qui permet à Unbound de vérifier le certificat (dont le titulaire est « CN=*.dns4all.eu,O=Stichting Internet Domeinregistratie Nederland,ST=Gelderland,C=NL ») :
forward-zone: name: "." # DNS4ALL forward-addr: 2001:678:8::3#dot.dns4all.eu forward-tls-upstream: yes
En tout cas, voici un nouveau résolveur public (alors que le projet officiel de la Commission, DNS4EU, est toujours inexistant, des années après son annonce), ce qui contribue à accroitre la diversité des offres.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)