Ne e takojmë shërbimin nga Cloudflare në adresat 1.1.1.1 dhe 1.0.0.1, ose "rafti publik DNS ka mbërritur!"

Ne e takojmë shërbimin nga Cloudflare në adresat 1.1.1.1 dhe 1.0.0.1, ose "rafti publik DNS ka mbërritur!"

Kompania Cloudflare prezantuar DNS publike në adresat:

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

Politika thuhet se është "Privatësia e parë" në mënyrë që përdoruesit të kenë paqe mendore për përmbajtjen e kërkesave të tyre.

Shërbimi është interesant në atë që, përveç DNS-së së zakonshme, ofron mundësinë e përdorimit të teknologjive DNS-mbi-TLS и DNS-mbi HTTPS, e cila do të parandalojë shumë ofruesit që të përgjojnë kërkesat tuaja përgjatë rrugës së kërkesave - dhe do të mbledhë statistika, do të monitorojë, menaxhojë reklamat. Cloudflare pretendon se data e shpalljes (1 prill 2018, ose 04/01 në shënimin amerikan) nuk u zgjodh rastësisht: në cilën ditë tjetër të vitit do të paraqiten "katër njësitë"?

Meqenëse audienca e Habrit është teknikisht e zgjuar, seksioni tradicional "pse ju nevojitet DNS?" Do ta vendos në fund të postimit, por këtu do të them gjëra praktikisht më të dobishme:

Si të përdorni shërbimin e ri?

Gjëja më e thjeshtë është të specifikoni adresat e mësipërme të serverit DNS në klientin tuaj DNS (ose si në rrjedhën e sipërme në cilësimet e serverit lokal DNS që përdorni). A ka kuptim zëvendësimi i vlerave të zakonshme Google DNS (8.8.8.8, etj.), ose pak më pak të zakonshme Serverët DNS publik Yandex (77.88.8.8 dhe të tjerë si ata) te serverët nga Cloudflare - ata do të vendosin për ju, por flet për një fillestar orarin shpejtësia e përgjigjes, sipas së cilës Cloudflare është më e shpejtë se të gjithë konkurrentët (do të sqaroj: matjet janë marrë nga një shërbim i palës së tretë, dhe shpejtësia për një klient specifik, natyrisht, mund të ndryshojë).

Ne e takojmë shërbimin nga Cloudflare në adresat 1.1.1.1 dhe 1.0.0.1, ose "rafti publik DNS ka mbërritur!"

Është shumë më interesante të punosh me mënyra të reja në të cilat kërkesa fluturon në server mbi një lidhje të koduar (në fakt, përgjigja kthehet përmes saj), DNS-mbi-TLS dhe DNS-mbi-HTTPS. Fatkeqësisht, ato nuk mbështeten "jashtë kutisë" (autorët besojnë se kjo është "ende"), por nuk është e vështirë të organizoni punën e tyre në softuerin tuaj (ose edhe në harduerin tuaj):

DNS mbi HTTP (DoH)

Siç sugjeron emri, komunikimi zhvillohet përmes një kanali HTTPS, që do të thotë

  1. prania e një pike uljeje (pikë fundore) - ndodhet në adresë https://cloudflare-dns.com/dns-queryDhe
  2. një klient që mund të dërgojë kërkesa dhe të marrë përgjigje.

Kërkesat mund të jenë ose në formatin DNS Wireformat të përcaktuar në RFC1035 (dërguar duke përdorur metodat POST dhe GET HTTP), ose në formatin JSON (duke përdorur metodën GET HTTP). Për mua personalisht, ideja për të bërë kërkesa DNS përmes kërkesave HTTP dukej e papritur, por ka një kokërr racionale në të: një kërkesë e tillë do të kalojë shumë sisteme të filtrimit të trafikut, analizimi i përgjigjeve është mjaft i thjeshtë dhe gjenerimi i kërkesave është edhe më i lehtë. Bibliotekat dhe protokollet e zakonshme janë përgjegjëse për sigurinë.

Kërkoni shembuj, drejtpërdrejt nga dokumentacioni:

Kërkesa GET në formatin 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

Kërkesa POST në formatin 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

E njëjta gjë, por duke përdorur 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"
    }
  ]
}

Natyrisht, një ruter i rrallë (nëse të paktën një) shtëpiak mund të punojë me DNS në këtë mënyrë, por kjo nuk do të thotë që mbështetja nuk do të shfaqet nesër - dhe, interesant, këtu mund të zbatojmë mjaft punën me DNS në aplikacionin tonë (si tashmë do të bëjë Mozilla, vetëm në serverët Cloudflare).

DNS mbi TLS

Si parazgjedhje, pyetjet DNS transmetohen pa kriptim. DNS mbi TLS është një mënyrë për t'i dërguar ato përmes një lidhjeje të sigurt. Cloudflare mbështet DNS mbi TLS në portin standard 853 siç përshkruhet RFC7858. Kjo përdor një certifikatë të lëshuar për hostin cloudflare-dns.com, TLS 1.2 dhe TLS 1.3 mbështeten.

Krijimi i një lidhjeje dhe puna sipas protokollit shkon diçka si kjo:

  • Përpara se të krijojë një lidhje DNS, klienti ruan një hash SHA64 të koduar në bazë256 të certifikatës TLS të cloudflare-dns.com (i quajtur SPKI)
  • Klienti DNS krijon një lidhje TCP me cloudflare-dns.com:853
  • Klienti DNS fillon shtrëngimin e duarve TLS
  • Gjatë procesit të shtrëngimit të duarve TLS, hosti cloudflare-dns.com paraqet certifikatën e tij TLS.
  • Pasi të krijohet një lidhje TLS, klienti DNS mund të dërgojë kërkesa DNS përmes një kanali të sigurt, i cili parandalon që kërkesat dhe përgjigjet të përgjohen dhe të mashtrohen.
  • Të gjitha pyetjet DNS të dërguara përmes një lidhjeje TLS duhet të përputhen me dërgimi i DNS përmes TCP.

Një shembull i një kërkese nëpërmjet DNS mbi 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

Ky opsion duket se funksionon më së miri për serverët lokalë DNS që u shërbejnë nevojave të një rrjeti lokal ose të një përdoruesi të vetëm. Vërtetë, me mbështetjen e standardit nuk është shumë i mirë, por - le të shpresojmë!

Dy fjalë shpjegime se për çfarë bëhet fjalë

Shkurtesa DNS qëndron për Domain Name Service (kështu që të thuash "shërbim DNS" është disi i tepërt, shkurtesa tashmë përmban fjalën "shërbim") dhe përdoret për të zgjidhur një detyrë të thjeshtë - për të kuptuar se çfarë adrese IP ka një emër i caktuar pritës. Sa herë që një person klikon në një lidhje, ose fut një adresë në shiritin e adresave të shfletuesit (të themi, diçka si "https://habrahabr.ru/post/346430/"), kompjuteri i njeriut po përpiqet të kuptojë se cilit server duhet të dërgojë një kërkesë për të marrë përmbajtjen e faqes. Në rastin e habrahabr.ru, përgjigja nga DNS do të përmbajë një tregues të adresës IP të serverit në internet: 178.248.237.68, dhe më pas shfletuesi tashmë do të përpiqet të kontaktojë serverin me adresën IP të specifikuar.

Nga ana tjetër, serveri DNS, pasi ka marrë kërkesën "cila është adresa IP e hostit të quajtur habrahabr.ru?", përcakton nëse di ndonjë gjë për hostin e specifikuar. Nëse jo, ai u bën një kërkesë serverëve të tjerë DNS në botë dhe, hap pas hapi, përpiqet të gjejë përgjigjen e pyetjes së bërë. Si rezultat, me gjetjen e përgjigjes përfundimtare, të dhënat e gjetura i dërgohen klientit që ende i pret, plus ato ruhen në cache të vetë serverit DNS, i cili do t'ju lejojë t'i përgjigjeni një pyetjeje të ngjashme shumë më shpejt herën tjetër.

Një problem i zakonshëm është se, së pari, të dhënat e pyetjes DNS transmetohen në mënyrë të qartë (gjë që i jep çdokujt që ka akses në fluksin e trafikut mundësinë për të izoluar pyetjet DNS dhe përgjigjet që ata marrin dhe më pas i analizon ato për qëllimet e tyre; kjo i jep aftësia për të synuar reklamat me saktësi për një klient DNS, që është shumë!). Së dyti, disa ISP (ne nuk do të drejtojmë gishtin, por jo më të vegjlit) priren të shfaqin reklama në vend të një ose një faqeje tjetër të kërkuar (e cila zbatohet mjaft thjesht: në vend të adresës IP të specifikuar për një pyetje nga habranabr.ru Emri i hostit, një person i rastësishëm Kështu, kthehet adresa e ueb serverit të ofruesit, ku shërbehet faqja që përmban reklamën). Së treti, ka ofrues të aksesit në internet që zbatojnë një mekanizëm për përmbushjen e kërkesave për bllokimin e faqeve individuale duke zëvendësuar përgjigjet e sakta DNS në lidhje me adresat IP të burimeve të bllokuara të uebit me adresën IP të serverit të tyre që përmban faqe cung (si rezultat, aksesi në sajte të tilla janë dukshëm më të komplikuara), ose në adresën e serverit tuaj proxy që kryen filtrimin.

Kjo ndoshta duhet të jetë një foto nga faqja. http://1.1.1.1/, përdoret për të përshkruar lidhjen me shërbimin. Autorët duket se janë mjaft të sigurt në cilësinë e DNS-së së tyre (megjithatë, është e vështirë të presësh diçka tjetër nga Cloudflare):

Ne e takojmë shërbimin nga Cloudflare në adresat 1.1.1.1 dhe 1.0.0.1, ose "rafti publik DNS ka mbërritur!"

Dikush mund të kuptojë plotësisht Cloudflare, krijuesin e shërbimit: ata fitojnë bukën e tyre duke mirëmbajtur dhe zhvilluar një nga rrjetet më të njohura CDN në botë (i cili funksionet përfshin jo vetëm shpërndarjen e përmbajtjes, por edhe pritjen e zonave DNS), dhe, për shkak të dëshira e atyre, i cili nuk është i ditur mirë, mësojini ato të cilët nuk e njohin, për atë ku të shkojnë në rrjetin global, mjaft shpesh vuan nga bllokimi i adresave të serverëve të tyre le të mos themi se kush - Pra, të kesh një DNS që nuk ndikohet nga "bërtitjet, bilbilat dhe shkarravitjet" për kompaninë do të thotë më pak dëm për biznesin e tyre. Dhe avantazhet teknike (një gjë e vogël, por e këndshme: në veçanti, për klientët e DNS Cloudflare falas, përditësimi i të dhënave DNS të burimeve të pritura në serverët DNS të kompanisë do të jetë i menjëhershëm) e bëjnë përdorimin e shërbimit të përshkruar në postim edhe më interesant.

Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. Hyni, te lutem

A do të përdorni shërbimin e ri?

  • Po, thjesht duke e specifikuar atë në OS dhe / ose në ruter

  • Po, dhe unë do të përdor protokolle të reja (DNS mbi HTTP dhe DNS mbi TLS)

  • Jo, kam mjaft serverë aktualë (ky është një ofrues publik: Google, Yandex, etj.)

  • Jo, as nuk e di se çfarë po përdor tani

  • Unë përdor DNS-në time rekursive me një tunel SSL për ta

693 përdorues kanë votuar. 191 përdorues abstenoi.

Burimi: www.habr.com

Shto një koment