So službou od Cloudflare sa stretávame na adresách 1.1.1.1 a 1.0.0.1, alebo „prišla verejná polica DNS!“

So službou od Cloudflare sa stretávame na adresách 1.1.1.1 a 1.0.0.1, alebo „prišla verejná polica DNS!“

Spoločnosť Cloudflare представила verejné DNS na adresách:

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

Hovorí sa, že zásada je „Ochrana súkromia na prvom mieste“, aby používatelia mohli mať pokoj v súvislosti s obsahom svojich žiadostí.

Služba je zaujímavá tým, že okrem bežného DNS poskytuje možnosť využívať technológie DNS-over-TLS и DNS-over-HTTPS, čo značne zabráni poskytovateľom odpočúvať vaše požiadavky na ceste žiadostí – a zbierať štatistiky, monitorovať, spravovať reklamu. Cloudflare tvrdí, že dátum oznámenia (1. apríl 2018 alebo 04/01 v americkej notácii) nebol vybraný náhodou: ktorý iný deň v roku budú predstavené „štyri jednotky“?

Keďže Habrovo publikum je technicky zdatné, tradičná sekcia „prečo potrebujete DNS?“ Dám to na koniec príspevku, ale tu uvediem praktickejšie užitočné veci:

Ako používať novú službu?

Najjednoduchšie je zadať vyššie uvedené adresy serverov DNS vo vašom klientovi DNS (alebo ako upstream v nastaveniach lokálneho servera DNS, ktorý používate). Má zmysel nahradiť obvyklé hodnoty Google DNS (8.8.8.8 atď.), alebo o niečo menej bežné Verejné servery DNS Yandex (77.88.8.8 a im podobné) na servery od Cloudflare - rozhodnú za vás, ale hovorím za začiatočníka naplánovať rýchlosť odozvy, podľa ktorej je Cloudflare rýchlejší ako všetci konkurenti (upresním: merania robila služba tretej strany a rýchlosť pre konkrétneho klienta sa samozrejme môže líšiť).

So službou od Cloudflare sa stretávame na adresách 1.1.1.1 a 1.0.0.1, alebo „prišla verejná polica DNS!“

Oveľa zaujímavejšia je práca s novými režimami, v ktorých požiadavka letí na server cez šifrované spojenie (v skutočnosti sa odpoveď vracia cez neho), spomínaný DNS-over-TLS a DNS-over-HTTPS. Žiaľ, nie sú podporované „po vybalení“ (autori sa domnievajú, že je to „zatiaľ“), ale nie je ťažké organizovať ich prácu vo vašom softvéri (alebo dokonca na vašom hardvéri):

DNS cez HTTPs (DoH)

Ako už názov napovedá, komunikácia prebieha cez HTTPS kanál, čo znamená

  1. prítomnosť pristávacieho bodu (koncového bodu) - nachádza sa na adrese https://cloudflare-dns.com/dns-queryA
  2. klient, ktorý môže odosielať požiadavky a prijímať odpovede.

Požiadavky môžu byť vo formáte DNS Wireformat, ktorý je definovaný v RFC1035 (odoslané pomocou metód POST a GET HTTP), alebo vo formáte JSON (pomocou metódy GET HTTP). Pre mňa osobne sa myšlienka zadávať požiadavky DNS prostredníctvom požiadaviek HTTP zdala neočakávaná, ale je v nej racionálne zrno: takáto požiadavka prejde mnohými systémami filtrovania návštevnosti, analýza odpovedí je pomerne jednoduchá a generovanie požiadaviek je ešte jednoduchšie. Za bezpečnosť sú zodpovedné bežné knižnice a protokoly.

Vyžiadajte si príklady priamo z dokumentácie:

Žiadosť GET vo formáte 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

Žiadosť POST vo formáte 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

To isté, ale pomocou 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"
    }
  ]
}

Je zrejmé, že zriedkavý (ak aspoň jeden) domáci smerovač dokáže pracovať s DNS týmto spôsobom, ale to neznamená, že podpora sa neobjaví zajtra - a čo je zaujímavé, tu môžeme celkom implementovať prácu s DNS v našej aplikácii (ako už vyrobí Mozillu, len na serveroch Cloudflare).

DNS cez TLS

V predvolenom nastavení sa DNS dotazy prenášajú bez šifrovania. DNS over TLS je spôsob, ako ich odoslať cez zabezpečené pripojenie. Cloudflare podporuje DNS cez TLS na štandardnom porte 853, ako je predpísané RFC7858. Používa certifikát vydaný pre hostiteľa cloudflare-dns.com, podporované sú TLS 1.2 a TLS 1.3.

Vytvorenie spojenia a práca podľa protokolu prebieha asi takto:

  • Pred nadviazaním pripojenia DNS si klient uloží hash SHA64 s kódovaním base256 certifikátu TLS cloudflare-dns.com (nazývaného SPKI)
  • Klient DNS vytvorí pripojenie TCP k cloudflare-dns.com:853
  • Klient DNS iniciuje nadviazanie spojenia TLS
  • Počas procesu handshake TLS hostiteľ cloudflare-dns.com predloží svoj certifikát TLS.
  • Po vytvorení pripojenia TLS môže klient DNS odosielať požiadavky DNS cez zabezpečený kanál, ktorý zabraňuje odpočúvaniu a sfalšovaniu požiadaviek a odpovedí.
  • Všetky dotazy DNS odoslané cez pripojenie TLS musia byť v súlade s odosielanie DNS cez TCP.

Príklad požiadavky cez DNS cez 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

Zdá sa, že táto možnosť funguje najlepšie pre lokálne servery DNS, ktoré slúžia potrebám lokálnej siete alebo jedného používateľa. Je pravda, že s podporou štandardu to nie je príliš dobré, ale - dúfajme!

Dve slová na vysvetlenie toho, o čom je rozhovor

Skratka DNS znamená Domain Name Service (takže výraz „služba DNS“ je trochu nadbytočný, skratka už obsahuje slovo „služba“) a používa sa na vyriešenie jednoduchej úlohy – pochopiť, akú IP adresu má konkrétny názov hostiteľa. Zakaždým, keď osoba klikne na odkaz alebo zadá adresu do panela s adresou prehliadača (povedzme niečo ako „https://habrahabr.ru/post/346430/"), ľudský počítač sa snaží zistiť, ktorý server má odoslať požiadavku na získanie obsahu stránky. V prípade habrahabr.ru bude odpoveď DNS obsahovať údaj o IP adrese webového servera: 178.248.237.68 a prehliadač sa už pokúsi kontaktovať server so zadanou IP adresou.

Na druhej strane server DNS po prijatí požiadavky „aká je IP adresa hostiteľa s názvom habrahabr.ru?“ zistí, či vie niečo o zadanom hostiteľovi. Ak nie, odošle požiadavku na iné servery DNS vo svete a krok za krokom sa pokúsi nájsť odpoveď na položenú otázku. Výsledkom je, že po nájdení konečnej odpovede sa nájdené údaje odošlú klientovi, ktorý na ne stále čaká, a navyše sa uložia do vyrovnávacej pamäte samotného servera DNS, čo vám nabudúce umožní odpovedať na podobnú otázku oveľa rýchlejšie.

Bežným problémom je, že po prvé, údaje dopytu DNS sa prenášajú v prehľadnej forme (čo každému s prístupom k toku prevádzky dáva možnosť izolovať dopyty DNS a odpovede, ktoré dostávajú, a potom ich analyzovať pre svoje vlastné účely; schopnosť presne zacieliť reklamy pre klienta DNS, čo je dosť veľa!). Po druhé, niektorí poskytovatelia internetových služieb (nebudeme ukazovať prstom, ale nie tí najmenší) majú tendenciu zobrazovať reklamy namiesto jednej alebo druhej požadovanej stránky (čo je implementované celkom jednoducho: namiesto zadanej IP adresy pre dopyt zo strany habranabr.ru názov hostiteľa, náhodná osoba Vráti sa teda adresa webového servera poskytovateľa, na ktorom sa zobrazuje stránka obsahujúca inzerát). Po tretie, existujú poskytovatelia prístupu na internet, ktorí implementujú mechanizmus na splnenie požiadaviek na blokovanie jednotlivých stránok nahradením správnych odpovedí DNS o IP adresách blokovaných webových zdrojov IP adresou ich servera obsahujúceho stub stránky (v dôsledku toho je prístup k takéto stránky sú výrazne komplikovanejšie), alebo na adresu vášho proxy servera, ktorý vykonáva filtrovanie.

Toto by mal byť pravdepodobne obrázok zo stránky. http://1.1.1.1/, ktorý sa používa na opis pripojenia k službe. Zdá sa, že autori sú si celkom istí kvalitou svojho DNS (od Cloudflare je však ťažké očakávať niečo iné):

So službou od Cloudflare sa stretávame na adresách 1.1.1.1 a 1.0.0.1, alebo „prišla verejná polica DNS!“

Cloudflare, tvorcu služby, možno úplne pochopiť: zarábajú si na chlieb udržiavaním a rozvojom jednej z najpopulárnejších sietí CDN na svete (ktoré funkcie zahŕňajú nielen distribúciu obsahu, ale aj hosťovanie zón DNS) a vďaka túžba tých, ktorý sa dobre nevyzná, naučte ich koho nepoznajú, k tomu kam ísť v globálnej sieti pomerne často trpí blokovaním adries svojich serverov nehovorme kto - takže mať DNS, ktorý nie je ovplyvnený "výkrikmi, píšťalkami a čmáranicami" pre spoločnosť znamená menšiu škodu pre ich podnikanie. A technické výhody (maličkosť, ale pekné: najmä pre klientov bezplatného DNS Cloudflare bude aktualizácia DNS záznamov zdrojov hostovaných na serveroch DNS spoločnosti okamžitá) robia používanie služby opísanej v príspevku ešte zaujímavejším.

Do prieskumu sa môžu zapojiť iba registrovaní užívatelia. Prihlásiť saProsím.

Budete využívať novú službu?

  • Áno, jednoduchým zadaním v OS a / alebo na smerovači

  • Áno a budem používať nové protokoly (DNS cez HTTPs a DNS cez TLS)

  • Nie, mám dostatok aktuálnych serverov (toto je verejný poskytovateľ: Google, Yandex atď.)

  • Nie, ani neviem, čo práve používam

  • Používam svoje rekurzívne DNS s tunelom SSL

Hlasovali 693 používatelia. 191 používateľ sa zdržal hlasovania.

Zdroj: hab.com

Pridať komentár