Scuntremu u serviziu da Cloudflare à l'indirizzi 1.1.1.1 è 1.0.0.1, o "u scaffale DNS publicu hè ghjuntu!"

Scuntremu u serviziu da Cloudflare à l'indirizzi 1.1.1.1 è 1.0.0.1, o "u scaffale DNS publicu hè ghjuntu!"

Cumpagnia Cloudflare prisentatu DNS publicu à l'indirizzi:

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

Si dice chì a pulitica hè "Privacy first" in modu chì l'utilizatori ponu avè tranquillità nantu à u cuntenutu di e so dumande.

U serviziu hè interessante chì, in più di u DNS abituale, furnisce a capacità di utilizà tecnulugia DNS-over-TLS и DNS-over-HTTPS, chì impediscenu assai i fornituri di spiegà e vostre richieste in u percorsu di e dumande - è recullà statistiche, monitorizà, gestione publicità. Cloudflare dichjara chì a data di l'annunziu (1 d'aprile 2018, o 04/01 in notazione americana) ùn hè micca sceltu per casu: chì altru ghjornu di l'annu seranu presentati i "quattru unità"?

Siccomu l'audienza di Habr hè tecnicamente savvy, a sezione tradiziunale "perchè avete bisognu di DNS?" U metteraghju à a fine di u post, ma quì diceraghju cose più praticamenti utili:

Cumu aduprà u novu serviziu?

A cosa più simplice hè di specificà l'indirizzi di u servitore DNS sopra in u vostru cliente DNS (o cum'è upstream in i paràmetri di u servitore DNS locale chì utilizate). Hè sensu di rimpiazzà i valori di solitu Google DNS (8.8.8.8, etc.), o pocu menu cumuni Servitori DNS publichi Yandex (77.88.8.8 è altri cum'è elli) à i servitori da Cloudflare - decideranu per voi, ma parla per un principiante pianu a velocità di risposta, secondu chì Cloudflare hè più veloce di tutti i cuncurrenti (aghju da esse chjarificatu: e misurazioni sò state pigliate da un serviziu di terzu, è a vitezza à un cliente specificu, sicuru, pò differisce).

Scuntremu u serviziu da Cloudflare à l'indirizzi 1.1.1.1 è 1.0.0.1, o "u scaffale DNS publicu hè ghjuntu!"

Hè assai più interessante di travaglià cù novi modi in quale a dumanda vola à u servitore nantu à una cunnessione criptata (in fattu, a risposta hè tornata per ellu), u DNS-over-TLS è DNS-over-HTTPS citati. Sfortunatamente, ùn sò micca supportati "fora di a scatula" (l'autori credi chì questu hè "ancora"), ma ùn hè micca difficiule d'urganizà u so travagliu in u vostru software (o ancu in u vostru hardware):

DNS sopra HTTPs (DoH)

Cum'è u nome suggerisce, a cumunicazione si faci nantu à un canale HTTPS, chì significa

  1. a prisenza di un puntu di sbarcu (puntu finale) - hè situatu à l'indirizzu https://cloudflare-dns.com/dns-querye
  2. un cliente chì pò mandà dumande è riceve risposte.

E dumande ponu esse in u formatu DNS Wireformat definitu in RFC 1035 (inviatu cù i metudi POST è GET HTTP), o in formatu JSON (usendu u metudu GET HTTP). Per mè personalmente, l'idea di fà dumande DNS via richieste HTTP pareva inesperu, ma ci hè un granu raziunale in questu: una tale dumanda passerà parechji sistemi di filtrazione di u trafficu, l'analisi di e risposte hè abbastanza simplice è a generazione di richieste hè ancu più faciule. E biblioteche è protokolli di solitu sò rispunsevuli di a sicurità.

Richiede esempi, direttamente da a documentazione:

GET dumanda in format DNS Wireformat

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*

* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
HTTP/2 200
date: Fri, 23 Mar 2018 05:14:02 GMT
content-type: application/dns-udpwireformat
content-length: 49
cache-control: max-age=0
set-cookie: __cfduid=dd1fb65f0185fadf50bbb6cd14ecbc5b01521782042; expires=Sat, 23-Mar-19 05:14:02 GMT; path=/; domain=.cloudflare.com; HttpOnly
server: cloudflare-nginx
cf-ray: 3ffe69838a418c4c-SFO-DOG

{ [49 bytes data]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Connection #0 to host cloudflare-dns.com left intact
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

Richiesta POST in 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 bytes data]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Connection #0 to host cloudflare-dns.com left intact
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

Stessa ma cù 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"
    }
  ]
}

Ovviamente, un router di casa raru (se almenu unu) pò travaglià cù DNS in questu modu, ma questu ùn significa micca chì u supportu ùn apparisce micca dumane - è, curiosamente, quì pudemu implementà abbastanza à travaglià cù DNS in a nostra applicazione (cum'è digià). andà à fà Mozilla, solu nantu à i servitori Cloudflare).

DNS sopra TLS

Per automaticamente, e dumande DNS sò trasmesse senza criptografia. DNS over TLS hè un modu per mandà à una cunnessione sicura. Cloudflare supporta DNS sopra TLS in u portu standard 853 cum'è prescritto RFC 7858. Questu usa un certificatu emessu per l'ospite cloudflare-dns.com, TLS 1.2 è TLS 1.3 sò supportati.

Stabbilimentu di una cunnessione è travaglià secondu u protokollu va qualcosa cusì:

  • Prima di stabilisce una cunnessione DNS, u cliente guarda un hash SHA64 codificato in base256 di u certificatu TLS di cloudflare-dns.com (chjamatu SPKI)
  • U cliente DNS stabilisce una cunnessione TCP à cloudflare-dns.com:853
  • U cliente DNS inizia una stretta di mano TLS
  • Durante u prucessu di handshake TLS, l'ospite cloudflare-dns.com presenta u so certificatu TLS.
  • Una volta chì una cunnessione TLS hè stabilita, u cliente DNS pò mandà dumande DNS nantu à un canale sicuru, chì impedisce chì e richieste è e risposte sò intercettate è falsificate.
  • Tutte e dumande DNS mandate nantu à una cunnessione TLS devenu cunfurmà cù u mandendu DNS nantu à TCP.

Un esempiu di una dumanda via DNS sopra TLS:

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Querying for owner(example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, imported 170 system certificates
;; DEBUG: TLS, received certificate hierarchy:
;; DEBUG:  #1, C=US,ST=CA,L=San Francisco,O=Cloudflare, Inc.,CN=*.cloudflare-dns.com
;; DEBUG:      SHA-256 PIN: yioEpqeR4WtDwE9YxNVnCEkTxIjx6EEIwFSQW+lJsbc=
;; DEBUG:  #2, C=US,O=DigiCert Inc,CN=DigiCert ECC Secure Server CA
;; DEBUG:      SHA-256 PIN: PZXN3lRAy+8tBKk2Ox6F7jIlnzr2Yzmwqc3JnyfXoCw=
;; DEBUG: TLS, skipping certificate PIN check
;; DEBUG: TLS, The certificate is trusted.
;; TLS session (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58548
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1

;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B

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

;; ANSWER SECTION:
example.com.            2347    IN  A   93.184.216.34

;; Received 468 B
;; Time 2018-03-31 15:20:57 PDT
;; From 1.1.1.1@853(TCP) in 12.6 ms

Questa opzione pare funziona megliu per i servitori DNS lucali chì servenu i bisogni di una reta lucale o un utilizatore unicu. True, cù u sustegnu di u standard ùn hè micca assai bonu, ma - speremu!

Dui parolle di spiegazione di ciò chì hè a cunversazione

L'abbreviazione DNS significa Domain Name Service (per quessa, dicendu "serviziu DNS" hè un pocu redundante, l'abbreviazione cuntene digià a parolla "serviziu"), è hè aduprata per risolve un compitu simplice - per capisce quale indirizzu IP hà un nome d'ospitu particulari. Ogni volta chì una persona cliccate nantu à un ligame, o inserisce un indirizzu in a barra di indirizzu di u navigatore (per dì, qualcosa cum'è "https://habrahabr.ru/post/346430/"), l'urdinatore umanu prova à capisce quale servitore mandà una dumanda per uttene u cuntenutu di a pagina. In u casu di habrahabr.ru, a risposta da DNS cuntene una indicazione di l'indirizzu IP di u servitore web: 178.248.237.68, è dopu u navigatore hà digià pruvatu à cuntattà u servitore cù l'indirizzu IP specificatu.

À u turnu, u servitore DNS, dopu avè ricevutu a dumanda "chì hè l'indirizzu IP di l'ospitu chjamatu habrahabr.ru?", determina s'ellu sapi qualcosa di l'ospitu specificatu. Se no, face una dumanda à l'altri servitori DNS in u mondu, è, passu à passu, prova à capisce a risposta à a quistione dumandata. In u risultatu, dopu à truvà a risposta finale, i dati truvati sò mandati à u cliente chì l'aspittava sempre, in più hè guardatu in a cache di u servitore DNS stessu, chì vi permetterà di risponde à una quistione simili assai più veloce a prossima volta.

Un prublema cumuni hè chì, prima, i dati di e dumande DNS sò trasmessi in u chjaru (chì dà à qualchissia cù accessu à u flussu di trafficu a capacità di isolà e dumande DNS è e risposte chì ricevenu è poi analizà per i so propiu scopi; questu dà l'abilità di destinà l'annunzii cù precisione per un cliente DNS, chì hè assai assai!). In siconda, certi ISP (ùn avemu micca indicatu u dito, ma micca i più chjuchi) tendenu à vede annunzii invece di una o una altra pagina dumandata (chì hè implementata abbastanza simplicemente: invece di l'indirizzu IP specificatu per una dumanda da habranabr.ru). nome d'ospite, una persona aleatoria Cusì, l'indirizzu di u servitore web di u fornitore hè tornatu, induve a pagina chì cuntene l'annunziu hè servita). In terzu, ci sò fornituri d'accessu à Internet chì implementanu un mecanismu per cumpiendu i requisiti per ubligatoriu di siti individuali rimpiazzendu e risposte DNS currette nantu à l'indirizzi IP di risorse web bluccate cù l'indirizzu IP di u so servitore chì cuntene pagine stub (per via di u risultatu, l'accessu à tali siti notevolmente più complicati), o à l'indirizzu di u vostru servitore proxy chì eseguisce u filtru.

Questu deve esse probabilmente una foto da u situ. http://1.1.1.1/, usatu per discrìviri a cunnessione à u serviziu. L'autori parenu esse abbastanza cunfidenti in a qualità di u so DNS (in ogni modu, hè difficiule d'aspittà qualcosa altru da Cloudflare):

Scuntremu u serviziu da Cloudflare à l'indirizzi 1.1.1.1 è 1.0.0.1, o "u scaffale DNS publicu hè ghjuntu!"

Si pò capisce cumplettamente Cloudflare, u creatore di u serviziu: guadagnanu u so pane mantenendu è sviluppendu una di e rete CDN più populari in u mondu (chì e funzioni includenu micca solu a distribuzione di cuntenutu, ma ancu l'ospitu di zoni DNS), è, per via u desideriu di quelli, chì ùn hè micca bè versatu, insegna à quelli chì ùn cunnosci micca, à quessa induve andà in a reta glubale, abbastanza spessu soffre di bluccà l'indirizzi di i so servitori da ùn dicemu micca quale - cusì avè un DNS chì ùn hè micca affettatu da "grida, fischi è scribbles" per a cumpagnia significa menu dannu à a so attività. E vantaghji tecnichi (un pocu, ma piacevule: in particulare, per i clienti di u DNS Cloudflare gratuitu, l'aghjurnà i registri DNS di risorse allughjate nantu à i servitori DNS di a cumpagnia) facenu l'usu di u serviziu descrittu in u post ancu più interessante.

Solu l'utilizatori registrati ponu participà à l'indagine. Firmà lu, per piacè.

Aduprà u novu serviziu?

  • Iè, basta à specificà in u SO è / o in u router

  • Iè, è aduprà novi protokolli (DNS over HTTPs è DNS over TLS)

  • No, aghju abbastanza servitori attuali (questu hè un fornitore publicu: Google, Yandex, etc.)

  • Innò, ùn sò mancu ciò chì aghju utilizatu avà

  • Aghju utilizatu u mo DNS recursive cun un tunnel SSL per elli

693 utilizatori anu vutatu. 191 utilizatore s'hè astenutu.

Source: www.habr.com

Add a comment