
Â
EttevÔte Cloudflare esitles avalikud DNS-d aadressidel:
Â
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
Â
Kinnitavad, et kasutatakse âPrivacy firstâ poliitikat, nii et kasutajad vĂ”ivad olla mures oma pĂ€ringute sisu pĂ€rast.
Â
Teenust iseloomustab see, et koos tavapĂ€rase DNS-iga pakub see vĂ”imalust kasutada tehnoloogiaid DNS-over-TLS ja DNS-over-HTTPS, mis takistab provideritel pĂ€ringute teel jĂ€lgida teie pĂ€ringuid â ja koguda statistikat, jĂ€lgida, hallata reklaami. Cloudflare kinnitab, et avalikustamise kuupĂ€ev (1. aprill 2018, ehk 04/01 Ameerika konventsioonis) valiti mitte juhuslikult: millisel muul pĂ€eval aastas esitleda ânelja ĂŒhtâ?
Kuna Habr'i publik on tehniliselt haritud, panen traditsioonilise jaotuse âmiks on DNS vajalik?â postituse lĂ”ppu ja rÀÀgin siin rohkem praktiliselt kasulikest asjadest:
Â
Kuidas uut teenust kasutada?
Â
Lihtsaim on mĂ€rkida oma DNS-kliendis (vĂ”i kasutada upstream'i oma kohaliku DNS-serveri seadistustes) eelnevalt mainitud DNS-aadressidserveritele. Kas on mĂ”tet asendada tuttavad vÀÀrtused Google'i DNS (8.8.8.8 jne), vĂ”i vĂ€hem levinud Yandex'i avalikud DNS-serverid (77.88.8.8 ja sarnased) Cloudflare'i serveritega â otsustavad teie, kuid algaja kasuks rÀÀgib graafik vastuste kiirusest, mille kohaselt töötab Cloudflare kiiremini kui kĂ”ik konkurendid (tĂ€psustan: mÔÔtmised on tehtud kolmanda osapoole teenuse poolt ja kiirus konkreetse kliendini vĂ”ib muidugi erineda).
Â

Â
Kaugel huvitavam on töö uute reĆŸiimidega, mille korral pĂ€ring suundub server krĂŒpteeritud ĂŒhenduse kaudu (vastus naaseb samuti selle kaudu), nimetatud DNS-over-TLS ja DNS-over-HTTPS. Kahjuks ei toetata neid âkastist vĂ€ljaâ (autorid usuvad, et see on âhetkeksâ), kuid nende töö korraldamine oma tarkvaras (vĂ”i isegi oma seadmes) ei ole keeruline:
Â
DNS over HTTPS (DoH)
Â
Nagu nimest tuleneb, toimub suhtlemine HTTPS-kanali peal, mis eeldab
Â
- maandumiskohta (endpoint) â see asub aadressil https://cloudflare-dns.com/dns-query, ja
- klienti, kes oskab saata pÀringuid ja vastu vÔtta vastuseid.
Â
PĂ€ringud vĂ”ivad olla kas DNS Wireformat formaadis, mis on mÀÀratletud RFC1035 (saabuma HTTP meetoditega POST ja GET), vĂ”i JSON vormingus (kasutatakse HTTP meetodit GET). Isiklikult tundub mulle idee teha DNS-pĂ€ringuid HTTP-pĂ€ringute kaudu ĂŒllatav, kuid selles on oma tĂ”de: selline pĂ€ring lĂ€bib paljusid liiklusfilter sĂŒsteeme, vastuseid on piisavalt lihtne parsida ja pĂ€ringute koostamine on veelgi lihtsam. Turvalisuse eest vastutavad tuttavad teegid ja protokollid.
Â
PÀringute nÀidised otse dokumentatsioonist:
Â
GET-pÀring DNS Wireformat'i vormingus
Â
$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Kasutades HTTP2, server toetab mitme kasutuse.
* Ăhenduse olek muutus (HTTP/2 kinnitatud)
* Kopeeritakse HTTP/2 andmed voogude puhverdusse seose puhverdusse pÀrast uuendamist: len=0
* Kasutades voogu ID: 1 (lihtne kÀepide 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*
* Ăhenduse olek muutus (MAX_CONCURRENT_STREAMS uuendatud)!
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 baidi andmed]
100 49 100 49 0 0 493 0 --:--:-- --:--:-- --:--:-- 494
* Ăhendus #0 hostiga cloudflare-dns.com jĂ€i puutumata
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Â
POST-pÀring DNS Wireformat'i vormingus
Â
$ echo -n 'q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB' | base64 -D | curl -H 'Content-Type: application/dns-udpwireformat' --data-binary @- https://cloudflare-dns.com/dns-query -o - | hexdump
{ [49 baidi andmed]
100 49 100 49 0 0 493 0 --:--:-- --:--:-- --:--:-- 494
* Ăhendus #0 hostiga cloudflare-dns.com jĂ€i puutumata
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
Â
Sama, aga JSON-i kasutades
Â
$ 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"
}
]
}Â
On ilmne, et harv (kui mitte ĂŒkski) koduruuter ei oska DNS-iga nii töötada, kuid see ei tĂ€henda, et tugi ei vĂ”iks homme saabuda â ja mis huvitav, siin saame tĂ€iesti rakendada DNS-i töötamist oma rakenduses (nagu juba plaanib Mozilla, just Cloudflare serverites).
Â
DNS TLS-i kaudu
Â
Vaikimisi edastatakse DNS-pĂ€ringud krĂŒpteerimata. DNS ĂŒle TLS on viis edastada need turvalise ĂŒhenduse kaudu. Cloudflare toetab DNS-i ĂŒle TLS-i standardsel pordil 853, nagu ette nĂ€htud. RFC7858. Selleks kasutatakse TLS-sertifikaati, mis on vĂ€lja antud hostile cloudflare-dns.com ja toetatakse TLS 1.2 ja TLS 1.3.
Â
Seose loomine ja protokolli kasutamine toimub umbes nii:
Â
- Enne DNS-iga ĂŒhenduse loomist salvestab klient base64 kodeeritud SHA256 rĂ€simise TLS-sertifikaadist cloudflare-dns.com (tuntud kui SPKI).
- DNS klient loob TCP-ĂŒhenduse cloudflare-dns.com:853.
- DNS klient alustab TLS-ĂŒhenduse loomise protseduuri.
- TLS-ĂŒhenduse loomise protsessi kĂ€igus esitab host cloudflare-dns.com oma TLS-sertifikaadi.
- Kui TLS-ĂŒhendus on loodud, saab DNS klient edastada DNS-pĂ€ringud turvalise kanali kaudu, mis takistab kuulamist ja pĂ€ringute ning vastuste valeandmeid.
- KĂ”ik TLS-ĂŒhenduse kaudu edastatud DNS-pĂ€ringud peavad vastama spetsifikatsioonile DNS-i edastamine TCP kaudu.
Â
NĂ€ide pĂ€ringust DNS ĂŒle TLS-i:
Â
$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com example.com
;; DEBUG: KĂŒsimine omaniku (example.com.), klassi (1), tĂŒĂŒbi (1), serveri (1.1.1.1), pordi (853), protokolli (TCP)
;; DEBUG: TLS, imporditud 170 sĂŒsteemi sertifikaati
;; DEBUG: TLS, saadud sertifikaadi hierarhia:
;; 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, sertifikaadi PIN-i kontroll vahele jÀÀnud
;; DEBUG: TLS, sertifikaat on usaldusvÀÀrne.
;; TLS sessioon (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; staatus: NOERROR; id: 58548
;; Lipud: qr rd ra; KĂSIMUS: 1; VASTUS: 1; AUTORITEET: 0; LISATUD: 1
;; EDNS PSEUDOSECTION:
;; Versioon: 0; lipud: ; UDP suurus: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B
;; KĂSIMUSE SECTION:
;; example.com. IN A
;; VASTUSE SECTION:
example.com. 2347 IN A 93.184.216.34
;; Vastatud 468 B
;; Aeg 2018-03-31 15:20:57 PDT
;; Aadressilt 1.1.1.1@853(TCP) ajas 12.6 msÂ
See variant nĂ€ib sobivat paremini kohalikele DNS-serveritele, mis teenindavad kohaliku vĂ”rgu vajadusi vĂ”i ĂŒksikuid kasutajaid. Kahjuks ei ole standardi toetus vĂ€ga hea, aga â loodame parimat!
Â
Kaks sÔna selgituseks, millest jutt kÀib
Â
LĂŒhend DNS tĂ€histab Domeen Nime Teenust (nii et öelda âDNS teenusâ on natuke liialdatud, sest lĂŒhendis on juba sĂ”na âteenusâ), ja seda kasutatakse lihtsa ĂŒlesande lahendamiseks â mĂ”ista, milline IP-aadress kuulub konkreetsele hostinimele. Iga kord, kui inimene klĂ”psab lingil vĂ”i kirjutab brauseri aadressiribale aadressi (ĂŒtleme midagi sellist nagu "https://habrahabr.ru/post/346430/In the process, the computer attempts to understand which server to route the request to in order to retrieve the page content. In the case of habrahabr.ru, the response from DNS will contain a reference to the IP address of the web server: 178.248.237.68, and then the browser will try to connect with the server at the specified IP address.
Â
In turn, the DNS server, upon receiving the request "what is the IP address of the host named habrahabr.ru?", determines whether it knows anything about the specified host. If not, it queries other DNS servers around the world, step by step trying to find the answer to the question. Ultimately, after finding the final answer, the retrieved data is sent back to the still waiting client, plus it is saved in the cache of the DNS server itself, allowing it to respond to such questions much faster next time.
Â
A common problem is that, first of all, DNS query data is transmitted in plain text (which allows anyone with access to the traffic stream to extract DNS queries and the responses received, and analyze them for their own purposes; this enables targeted advertising with precision for the DNS client, which is quite significant!). Secondly, some internet providers (let's not point fingers, but they are not the smallest) tend to display ads instead of the requested page (which is implemented quite simply: instead of the specified IP address for the request by the host name habranabr.ru, the user randomly receives the IP address of the provider's web server, where a page containing advertisements is served). Thirdly, there are internet access providers that implement mechanisms to enforce requirements to block specific sites by substituting correct DNS responses for the IP addresses of blocked web resources with the IP address of their server containing placeholder pages (resulting in significantly more difficult access to such sites), or to their proxy server that filters the content.
Â
Here, it is probably necessary to insert an image from the site http://1.1.1.1/, which serves to describe the connection to the service. The authors are quite confident in the quality of their DNS work (however, one cannot expect anything else from Cloudflare):
Â

Â
On tĂ€iesti arusaadav, miks Cloudflare, teenuse pakkuja, seda teeb: nad teenivad oma leiba, toetades ja arendades ĂŒhte maailma populaarseimat CDN-vĂ”rgustikku (mille funktsioonide hulka kuulub mitte ainult sisu jagamine, vaid ka DNS tsoonide hostimine). Ja kuna nad soovivad, et need, kes ei ole vĂ€ga kursis,, Ă”petaksid neid, keda nad ei tunne,, sellele, kuhu minna globaalvĂ”rgus, kannatavad nad sageli blokeeringute tĂ”ttu, mis on suunatud nende serverite aadressidele, Ă€rme rÀÀgi sellest, â seega tĂ€hendab DNS, mis ei allu "karjumistele, viledelele ja kirjadele", ettevĂ”ttele vĂ€hem kahju nende Ă€ritegevusele. Lisaks on tehnilised eelised (vĂ€ike, aga meeldiv: nĂ€iteks Cloudflare tasuta DNS-i klientide jaoks ressursside DNS-kirjete vĂ€rskendamine, mis on majutatud ettevĂ”tte DNS-serverites, toimub koheselt) muudab kirjeldatud teenuse kasutamise veelgi huvitavamaks.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.
Kas kavatsete uut teenust kasutada?
- Jah, lihtsalt mÀÀrates selle OS-is ja/vÔi ruuteris
- Jah, ja hakkan kasutama uusi protokolle (DNS over HTTPs ja DNS over TLS)
- Ei, mulle piisab praegustest serveritest (need on avalikud teenusepakkujad: Google, Yandex jne.)
- Ei, ma ei tea isegi, mida ma praegu kasutan
- Kasutab oma rekurssiivseid DNS-e, millele pÀÀseb SSL tunneli kaudu
HÀÀletas 693 kasutajat. 191 kasutajat jÀid erapooletuks.
Allikas: habr.com
