Accueillons le service de Cloudflare aux adresses 1.1.1.1 et 1.0.0.1, ou « la section des DNS publics est arrivée ! »

Accueillons le service de Cloudflare aux adresses 1.1.1.1 et 1.0.0.1, ou « la section des DNS publics est arrivée ! »

 

La société Cloudflare présentée DNS publics aux adresses :

 

  • 1.1.1.1
  • 1.0.0.1
  • 2606:4700:4700::1111
  • 2606:4700:4700::1001

 

Il est affirmĂ© que la politique « Privacy first » est utilisĂ©e, de sorte que les utilisateurs peuvent ĂȘtre tranquilles quant au contenu de leurs requĂȘtes.

 

Le service est intĂ©ressant car, en plus du DNS habituel, il offre la possibilitĂ© d'utiliser des technologies DNS-over-TLS et DNS-over-HTTPS, ce qui empĂȘche fortement les fournisseurs de surveiller vos requĂȘtes en cours de route — et de collecter des statistiques, de suivre et de gĂ©rer la publicitĂ©. Cloudflare affirme que la date de lancement (1er avril 2018, ou 04/01 dans la notation amĂ©ricaine) n'a pas Ă©tĂ© choisie par hasard : quel autre jour de l'annĂ©e pourrait-on prĂ©senter « quatre unitĂ© » ?

Étant donnĂ© que l'audience de Habr est techniquement avertie, je placerai la section traditionnelle « pourquoi le DNS est-il nĂ©cessaire ? » Ă  la fin du post, et ici j'exposerai des choses plus pratiques :

 

Comment utiliser le nouveau service ?

 

Le plus simple est d'indiquer dans votre client DNS (ou comme upstream dans les paramĂštres de votre serveur DNS local) les adresses DNS mentionnĂ©es ci-dessus -serveurs. Faut-il remplacer les valeurs habituelles des DNS de Google (8.8.8.8, etc.), ou des serveurs publics moins rĂ©pandus de Yandex (77.88.8.8 et autres) par les serveurs de Cloudflare — vous dĂ©ciderez, mais les dĂ©butants seront convaincus par un graphique des temps de rĂ©ponse, selon lequel Cloudflare fonctionne plus vite que tous ses concurrents (je prĂ©cise que les mesures ont Ă©tĂ© rĂ©alisĂ©es par un service externe, et la vitesse pour un client spĂ©cifique peut bien sĂ»r varier).

 

Accueillons le service de Cloudflare aux adresses 1.1.1.1 et 1.0.0.1, ou « la section des DNS publics est arrivée ! »

 

Il est beaucoup plus intĂ©ressant de travailler avec les nouveaux modes, dans lesquels la requĂȘte est envoyĂ©e sur serveur une connexion chiffrĂ©e (en fait, la rĂ©ponse est renvoyĂ©e par celle-ci), mentionnĂ©e dans DNS-over-TLS et DNS-over-HTTPS. Malheureusement, « par dĂ©faut », ils ne sont pas pris en charge (les auteurs espĂšrent que c'est « pour l'instant »), mais il est facile de les faire fonctionner dans votre logiciel (ou mĂȘme sur votre matĂ©riel) :

 

DNS over HTTPs (DoH)

 

Comme son nom l'indique, la communication se fait sur un canal HTTPS, ce qui implique

 

  1. la nĂ©cessitĂ© d'un point d'atterrissage (endpoint) — il se trouve Ă  l'adresse https://cloudflare-dns.com/dns-query, et
  2. d'un client capable d'envoyer des requĂȘtes et de recevoir des rĂ©ponses.

 

Les requĂȘtes peuvent ĂȘtre en format DNS Wireformat, dĂ©fini dans RFC1035 (envoyer avec les mĂ©thodes HTTP POST et GET), ou au format JSON (utilisant la mĂ©thode HTTP GET). Personnellement, l'idĂ©e d'effectuer des requĂȘtes DNS via des requĂȘtes HTTP m'a semblĂ© inattendue, cependant, elle a un fondement rationnel : une telle requĂȘte passera de nombreux systĂšmes de filtrage du trafic, analyser les rĂ©ponses est assez simple, et formuler des requĂȘtes l'est encore plus. Les bibliothĂšques et protocoles habituels garantissent la sĂ©curitĂ©.

 

Exemples de requĂȘtes, directement depuis la documentation :

 

RequĂȘte GET au format DNS Wireformat

 

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Utilisation de HTTP2, le serveur supporte les connexions multiples
* État de la connexion changĂ© (HTTP/2 confirmĂ©)
* Copie des données HTTP/2 dans le tampon de connexion aprÚs la mise à niveau : len=0
* Utilisation de l'ID de flux : 1 (manipulation facile 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*

* État de la connexion changĂ© (MAX_CONCURRENT_STREAMS mis Ă  jour)!
HTTP/2 200
date: ven., 23 mars 2018 05:14:02 GMT
content-type: application/dns-udpwireformat
content-length: 49
cache-control: max-age=0
set-cookie: __cfduid=dd1fb65f0185fadf50bbb6cd14ecbc5b01521782042; expires=sam., 23 mars 2019 05:14:02 GMT; path=/; domain=.cloudflare.com; HttpOnly
server: cloudflare-nginx
cf-ray: 3ffe69838a418c4c-SFO-DOG

{ [49 octets de données]
100     49  100   49    0     0    493      0 --:--:-- --:--:-- --:--:--  494
* Connexion #0 au serveur cloudflare-dns.com laissée intacte
0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77
0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00
0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8
0000030 22
0000031

 

RequĂȘte POST au format DNS Wireformat

 

$ echo -n 'q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | base64 -D | curl -H 'Content-Type: application/dns-udpwireformat' --data-binary @- https://cloudflare-dns.com/dns-query -o - | hexdump

{ [49 octets de données]
100     49  100   49    0     0    493      0 --:--:-- --:--:-- --:--:--  494
* Connexion #0 au serveur cloudflare-dns.com laissée intacte
0000000 ab cd 81 80 00 01 00 01 00 00 00 00 03 77 77 77
0000010 07 65 78 61 6d 70 6c 65 03 63 6f 6d 00 00 01 00
0000020 01 c0 0c 00 01 00 01 00 00 0a 8b 00 04 5d b8 d8
0000030 22
0000031

 

La mĂȘme chose, mais en utilisant JSON

 

$ curl 'https://cloudflare-dns.com/dns-query?ct=application/dns-json&name=example.com&type=AAAA'

{
  "Status": 0,
  "TC": false,
  "RD": true,
  "RA": true,
  "AD": true,
  "CD": false,
  "Question": [
    {
      "name": "example.com.",
      "type": 1
    }
  ],
  "Answer": [
    {
      "name": "example.com.",
      "type": 1,
      "TTL": 1069,
      "data": "93.184.216.34"
    }
  ]
}

 

Il est Ă©vident qu'un routeur domestique rare (s'il y en a un) sait travailler ainsi avec DNS, mais cela ne signifie pas que le support n'apparaĂźtra pas demain — et ce qui est intĂ©ressant, c'est qu'ici, nous pouvons tout Ă  fait mettre en Ɠuvre le travail avec DNS dans notre application (comme cela) prĂ©voit de le faire Mozilla, prĂ©cisĂ©ment sur les serveurs Cloudflare).

 

DNS sur TLS

 

Par dĂ©faut, les requĂȘtes DNS sont envoyĂ©es sans cryptage. DNS over TLS est une mĂ©thode pour les transmettre via une connexion sĂ©curisĂ©e. Cloudflare prend en charge DNS over TLS sur le port standard 853, comme le stipule RFC7858. Un certificat dĂ©livrĂ© pour l'hĂŽte cloudflare-dns.com est utilisĂ©, prenant en charge TLS 1.2 et TLS 1.3.

 

L'établissement de la connexion et le fonctionnement selon le protocole se déroulent à peu prÚs comme suit :

 

  • Avant d'Ă©tablir une connexion avec DNS, le client DNS conserve le hachage SHA256 du certificat TLS de cloudflare-dns.com (appelĂ© SPKI) encodĂ© en base64.
  • Le client DNS Ă©tablit une connexion TCP avec cloudflare-dns.com:853
  • Le client DNS initie la procĂ©dure de handshake TLS
  • Au cours du handshake TLS, l'hĂŽte cloudflare-dns.com prĂ©sente son certificat TLS.
  • Une fois que la connexion TLS est Ă©tablie, le client DNS peut envoyer des requĂȘtes DNS sur le canal sĂ©curisĂ©, empĂȘchant ainsi l'Ă©coute clandestine et la falsification des requĂȘtes et rĂ©ponses.
  • Toutes les requĂȘtes DNS envoyĂ©es via une connexion TLS doivent ĂȘtre conformes Ă  la spĂ©cification sur l'envoi de DNS sur TCP.

 

Exemple de requĂȘte via DNS over TLS :

 

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Interrogation pour le propriétaire(example.com.), classe(1), type(1), serveur(1.1.1.1), port(853), protocole(TCP)
;; DEBUG: TLS, importé 170 certificats systÚmes
;; DEBUG: TLS, hiérarchie de certificats reçue :
;; DEBUG:  #1, C=US,ST=CA,L=San Francisco,O=Cloudflare, Inc.,CN=*.cloudflare-dns.com
;; DEBUG:      PIN SHA-256 : yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert ECC Secure Server CA
;; DEBUG:      PIN SHA-256 : PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw=
;; DEBUG: TLS, vérification du PIN du certificat ignorée
;; DEBUG: TLS, Le certificat est de confiance.
;; session TLS (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; statut: NOERROR; id: 58548
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; SECTION PSEUDOEDNS :
;; Version: 0; flags: ; taille UDP: 1536 B; code-err-ext: NOERROR
;; PADDING: 408 B

;; SECTION QUESTION :
;; example.com.             IN  A

;; SECTION RÉPONSE :
example.com.            2347    IN  A   93.184.216.34

;; Reçu 468 B
;; Temps 2018-03-31 15:20:57 PDT
;; Depuis 1.1.1.1@853(TCP) en 12.6 ms

 

Cette option semble mieux adaptée pour les serveurs DNS locaux, répondant aux besoins d'un réseau local ou d'un seul utilisateur. Bien que le support de la norme ne soit pas trÚs bon, espérons !

 

Deux mots d'explications sur le sujet

 

L'acronyme DNS signifie Domaine Name Service (donc dire « service DNS » est un peu redondant, l'acronyme contient dĂ©jĂ  le mot « service »), et est utilisĂ© pour rĂ©soudre une tĂąche simple : comprendre quelle adresse IP correspond Ă  un nom d'hĂŽte spĂ©cifique. Chaque fois qu'une personne clique sur un lien ou saisit une adresse dans la barre d'adresse du navigateur (disons quelque chose comme «https://habrahabr.ru/post/346430/L'ordinateur de l'utilisateur essaie de comprendre Ă  quel serveur il doit diriger la requĂȘte pour obtenir le contenu de la page. Dans le cas de habrahabr.ru, la rĂ©ponse du DNS indiquera l'adresse IP du serveur web : 178.248.237.68, et ensuite, le navigateur essaiera de se connecter au serveur Ă  l'adresse IP indiquĂ©e.

 

À son tour, le serveur DNS, ayant reçu la requĂȘte « quelle est l'adresse IP de l'hĂŽte avec le nom habrahabr.ru ? », dĂ©termine s'il sait quelque chose sur l'hĂŽte en question. S'il ne sait pas, il fait appel Ă  d'autres serveurs DNS dans le monde, et, Ă©tape par Ă©tape, essaie de trouver une rĂ©ponse Ă  la question posĂ©e. En fin de compte, une fois la rĂ©ponse trouvĂ©e, les donnĂ©es trouvĂ©es sont envoyĂ©es au client qui les attend toujours, et de plus, elles sont enregistrĂ©es dans le cache du serveur DNS lui-mĂȘme, ce qui permettra de rĂ©pondre beaucoup plus rapidement Ă  une question similaire la prochaine fois.

 

Un problĂšme courant est que, tout d'abord, les donnĂ©es des requĂȘtes DNS sont transmises en clair (ce qui permet Ă  quiconque ayant accĂšs au flux de trafic d'extraire les requĂȘtes DNS et les rĂ©ponses reçues, puis de les analyser Ă  ses propres fins ; cela permet un ciblage publicitaire prĂ©cis pour le client DNS, ce qui n'est pas nĂ©gligeable !). DeuxiĂšmement, certains fournisseurs d'accĂšs Ă  Internet (sans donner de noms, mais ce ne sont pas les plus petits) ont tendance Ă  afficher des publicitĂ©s au lieu de telle ou telle page demandĂ©e (ce qui est rĂ©alisĂ© de maniĂšre trĂšs simple : au lieu de l'adresse IP spĂ©cifiĂ©e pour la requĂȘte du nom d'hĂŽte habranabr.ru, on renvoie au client alĂ©atoirement l'adresse du serveur web du fournisseur, oĂč une page contenant de la publicitĂ© est affichĂ©e). TroisiĂšmement, il existe des fournisseurs d'accĂšs Ă  Internet qui mettent en Ɠuvre un mĂ©canisme de blocage de certains sites, en remplaçant les rĂ©ponses DNS correctes des adresses IP des ressources bloquĂ©es par l'adresse de leur propre serveur contenant des pages de remplacement (ce qui complique considĂ©rablement l'accĂšs Ă  ces sites), ou par l'adresse de leur serveur proxy qui effectue le filtrage.

 

Il semble qu'ici, il faille insérer une image du site http://1.1.1.1/, visant à décrire la connexion au service. Les auteurs sont manifestement trÚs confiants dans la qualité du travail de leur DNS (d'ailleurs, il est difficile d'attendre autre chose de Cloudflare) :

 

Accueillons le service de Cloudflare aux adresses 1.1.1.1 et 1.0.0.1, ou « la section des DNS publics est arrivée ! »

 

On peut comprendre Cloudflare, le crĂ©ateur du service : ils gagnent leur vie en soutenant et en dĂ©veloppant l'une des CDN les plus populaires au monde (dont les fonctionnalitĂ©s incluent non seulement la distribution de contenu, mais aussi l'hĂ©bergement de zones DNS), et en raison du dĂ©sir de ceux, qui ne s'y connaissent pas trĂšs bien, d'Ă©duquer ceux, qu'ils ne connaissent pas, sur oĂč aller dans le rĂ©seau mondial, souffre souvent de blocages d'adresses de leurs serveurs de la part de nous ne dirons pas qui — donc avoir un DNS, pas soumis aux "cries, sifflets et messages Ă©crits", signifie pour l'entreprise un moindre prĂ©judice pour leur activitĂ©. Et les avantages techniques (c'est un petit quelque chose, mais c'est agrĂ©able : en particulier, pour les clients du DNS gratuit de Cloudflare, la mise Ă  jour des enregistrements DNS des ressources hĂ©bergĂ©es sur les serveurs DNS de l'entreprise sera instantanĂ©e) rendent l'utilisation du service dĂ©crit dans le post encore plus attrayante.

Seuls les utilisateurs enregistrés peuvent participer au sondage. Connectez-vous, s'il vous plaßt.

Utiliserez-vous le nouveau service ?

  • Oui, en le spĂ©cifiant simplement dans le systĂšme d'exploitation et/ou sur le routeur
  • Oui, et j'utiliserai les nouveaux protocoles (DNS sur HTTPs et DNS sur TLS)
  • Non, mes serveurs actuels me suffisent (c'est un fournisseur public : Google, Yandex, etc.)
  • Non, je ne sais mĂȘme pas ce que j'utilise actuellement
  • J'utilise mes DNS rĂ©cursifs avec un tunnel SSL vers eux

693 utilisateurs ont voté. 191 utilisateurs se sont abstenus.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster