
Â
Cloudflare esituse avatud DNS-aadressid:
Â
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
Â
KĂ€ib vĂ€ide, et kasutatakse âPrivacy firstâ poliitikat, nii et kasutajad saavad oma pĂ€ringute sisu osas rahulikud olla.
Â
Teenust iseloomustab see, et tavalise DNS-i kĂ”rval pakub see ka tehnoloogiate kasutamise vĂ”imalust DNS-over-TLS ja plaane, et vaikimisi toetada, mis takistab teenusepakkujatel teie pĂ€ringute teel teie pĂ€ringute pealt kuulamist â ja statistika kogumist, jĂ€lgimist ning reklaami haldamist. Cloudflare vĂ€idab, et kuupĂ€ev, mil teade avaldati (1. aprill 2018, vĂ”i 04/01 Ameerika mĂ€rkuses), ei olnud juhuslik: mis muul pĂ€eval aastas esitleda ânelja ĂŒhteâ?
Kuna Habr'i publik on tehniliselt osav, panen traditsioonilise jaotuse âmiks on DNS vajalik?â postituse lĂ”ppu, samas kui siia toon praktiliselt kasulikud asjad:
Â
Kuidas uut teenust kasutada?
Â
KĂ”ige lihtsam on oma DNS-klientides (vĂ”i kohaliku DNS-serveri seadetes upstream-ina) mĂ€rkida ĂŒlaltoodud DNS-aadressidserveritele. Kas on mĂ”tet asendada tuntud vÀÀrtused Google'i DNS (8.8.8.8 jne), ehkki veidi vĂ€hem levinud Yandexi avalike DNS-serveritega (77.88.8.8 ja teised) Cloudflare'i serveritele â lahendab teie probleemi, kuid algaja jaoks on see rÀÀgitud. diagramm vastuste kiirus, mille kohaselt Cloudflare töötab kiiremini kui kĂ”ik konkurendid (tĂ€psustan: mÔÔtmised on tehtud kolmanda osapoole teenuse poolt, ja kiirus konkreetse kliendini vĂ”ib loomulikult erineda).
Â

Â
Olulisem on töö uute reĆŸiimidega, kus pĂ€ring saadetakse server krĂŒpteeritud ĂŒhenduse kaudu (pĂ€ringule vastatakse samuti lĂ€bi selle), mainitud DNS-over-TLS ja DNS-over-HTTPS. Kahjuks ei toeta need âkarbist vĂ€ljaâ (autorid usuvad, et see on âpraeguâ), kuid nende töö korraldamine oma tarkvaras (vĂ”i isegi oma riistvaral) ei ole keeruline:
Â
DNS over HTTPs (DoH)
Â
Nagu nimigi ĂŒtleb, toimub suhtlemine HTTPS-kanali kaudu, mis eeldab
Â
- maandumispunkti (endpoint) olemasolu â see asub aadressil https://cloudflare-dns.com/dns-query, ja
- klienti, mis oskab pÀringu saata ja vastuseid vastu vÔtta.
Â
PĂ€ringud vĂ”ivad olla kas DNS Wireformati vormingus, nagu on mÀÀratletud RFC1035 (saata HTTP-meetoditega POST ja GET), vĂ”i JSON-vormingus (kasutatakse HTTP-meetodit GET). Minu jaoks tundus idee teha DNS-pĂ€ringuid lĂ€bi HTTP-pĂ€ringute ĂŒllatavana, kuid selles on rationaalne tuum: selline pĂ€ring lĂ€bib palju liikluse filtreerimise sĂŒsteeme, vastuste parseerimine on piisavalt lihtne, ja pĂ€ringute koostamine â veelgi lihtsam. Turvalisuse tagavad tuttavad raamatukogud ja protokollid.
Â
PÀringute nÀited, otse dokumentatsioonist:
Â
GET-pÀring DNS Wireformaatide vormingus
Â
$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* Kasutatakse HTTP2, server toetab korduvat kasutust
* Ăhenduse olek muutus (HTTP/2 kinnitatud)
* HTTP/2 andmed kopeeritakse voogude puhvrist ĂŒhenduse puhvri: len=0
* Kasutatakse voolu ID: 1 (lihtne kÀitlemine 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 ajakohastatud)!
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
* Ă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 Wireformaat
Â
$ 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
* Ă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 selge, et haruldane (kui mitte ĂŒkski) kodus ruuter ei suuda DNS-iga nii töötada, kuid see ei tĂ€henda, et toetust ei vĂ”iks homme tulla â huvitaval kombel saame siin tĂ€ielikult rakendada DNS-i töötlemist oma rakenduses (nagu kavatseb teha Mozilla, just Cloudflare'i serverites).
Â
DNS ĂŒle TLS
Â
Vaikimisi saadetakse DNS pĂ€ringud ilma krĂŒpteerimiseta. DNS ĂŒle TLS on viis neid edastada kaitstud ĂŒhenduse kaudu. Cloudflare toetab DNS ĂŒle TLS-i standardporti 853, nagu ette nĂ€eb RFC7858. Sellega kasutatakse sertifikaati, mis on vĂ€ljastatud hostile cloudflare-dns.com, toetatakse TLS 1.2 ja TLS 1.3.
Â
Ăhenduse loomine ja protokolli töötamine toimub umbes nii:
Â
- Enne DNS-iga ĂŒhenduse loomist salvestab klient base64-dekooditud SHA256-hÀƥi TLS-sertifikaadist cloudflare-dns.com (nimetatakse SPKI)
- DNS klient loob TCP-ĂŒhenduse cloudflare-dns.com:853
- DNS klient algatab TLS handshake'i protseduuri
- TLS kÀepidemete protsessi kÀigus esitab host cloudflare-dns.com oma TLS sertifikaadi.
- Niipea kui TLS-ĂŒhendus on loodud, saab DNS klient saata DNS pĂ€ringud kaitstud kanali kaudu, mis takistab kuulamist ja pĂ€ringute ning vastuste valeesitust.
- KĂ”ik TLS-ĂŒhenduse kaudu saadetud DNS-pĂ€ringud peavad vastama spetsifikatsioonile DNS saatmiseks TCP kaudu.
Â
NÀide pÀringust DNS over TLS kaudu:
Â
$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com example.com
;; DEBUG: PĂ€ring omaniku (example.com.), klassi (1), tĂŒĂŒbi (1), serveri (1.1.1.1), port (853), protokolli (TCP) jaoks
;; DEBUG: TLS, importis 170 sĂŒsteemi sertifikaati
;; DEBUG: TLS, sai 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-kontroll jÀtatakse vahele
;; DEBUG: TLS, Sertifikaat on usaldusvÀÀrne.
;; TLS seanss (TLS1.2)-(ECDHE-ECDSA-SECP256R1)-(AES-256-GCM)
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58548
;; Lippude: qr rd ra; PĂRING: 1; VASTUS: 1; AUHORITY: 0; LISAND: 1
;; EDNS PSEUDOSECTION:
;; Versioon: 0; lipud: ; UDP suurus: 1536 B; ext-rcode: NOERROR
;; PADJAND: 408 B
;; KĂSIMUSE SEKKOND:
;; example.com. IN A
;; VASTUSE SEKKOND:
example.com. 2347 IN A 93.184.216.34
;; Saadud 468 B
;; Aeg 2018-03-31 15:20:57 PDT
;; Alates 1.1.1.1@853(TCP) 12.6 msÂ
See variant sobib paremini kohalikeks DNS-serveriteks, mille eesmĂ€rk on teenindada kohaliku vĂ”rgu vajadusi vĂ”i ĂŒhe kasutaja vajadusi. TĂ”si, standardi toetamisega pole kĂ”ik hĂ€sti, aga â loodame parimat!
Â
Kaks sÔna selgituseks, millest on jutt
Â
LĂŒhend DNS tĂ€hendab Domeen Name Service (nii et öelda "DNS-teenus" â on natuke ĂŒlearune, kuna lĂŒhendis on juba sĂ”na "teenus"), ja seda kasutatakse lihtsa ĂŒlesande lahendamiseks â mĂ”ista, milline IP-aadress on konkreetse hostinimega seotud. Iga kord, kui inimene klĂ”psab lingil vĂ”i kirjutab brauseri aadressiriba, nĂ€iteks midagi nagu "https://habrahabr.ru/post/346430/«), ĂŒritab tema arvuti mĂ”ista, kuhu serverisse tuleks lehekĂŒlje sisu taotlusega pöörduda. NĂ€iteks habrahabr.ru puhul sisaldab DNS-i vastus viidet veebiserveri IP-aadressile: 178.248.237.68, ja seejĂ€rel proovib brauser juba ĂŒhendust vĂ”tta antud IP-aadressiga serveriga.
Â
DNS-server, saades vastu kĂŒsimust "mis IP-aadress on hostil nimega habrahabr.ru?", mÀÀrab, kas tal on teavet mainitud hosti kohta. Kui ei, siis edastab ta pĂ€ringu teistele DNS-serveritele maailmas ja samm-sammult ĂŒritab vĂ€lja selgitada vastuse esitatud kĂŒsimusele. LĂ”puks, kui lĂ”plik vastus on leitud, saadetakse kogutud andmed tagasi ootavale kliendile ning salvestatakse ka DNS-serveri vahemĂ€lus, mis vĂ”imaldab jĂ€rgmine kord vastata sarnasele kĂŒsimusele tunduvalt kiiremini.
Â
Tavaline probleem seisneb peamiselt selles, et DNS-pĂ€ringute andmed edastatakse avatud kujul (mis vĂ”imaldab kĂ”igil, kes pÀÀsevad juurde liiklusvoole, eristada DNS-pĂ€ringuid ja saadud vastuseid ning seejĂ€rel neid oma eesmĂ€rkidel analĂŒĂŒsida; see annab reklaamimise vĂ”imaluse DNS-i kliendi tĂ€psusega, mis on mĂ€rkimisvÀÀrne!). Teiseks, mĂ”ned Interneti-teenuse pakkujad (me ei nimeta nimesid, kuid need pole just vĂ€ikseimad) nĂ€itavad reklaame selle asemel, et nĂ€idata mingit kĂŒsitud lehte (see realiseeritakse ĂŒsna lihtsalt: earu, mis on hostname'i pĂ€ringu IP-aadressi asemel, antakse inimesele juhusikult teenuse pakkuja veebiserveri aadress, kus kuvatakse reklaamidega leht). Kolmandaks, on olemas internetiĂŒhenduse pakkujad, kes kasutavad mehhanismi teatud saitide blokeerimise nĂ”uete tĂ€itmiseks, asendades Ă”iged DNS-vastused blokeeritavate veebiresursside IP-aadresside kohta enda serveri aadressiga, mis sisaldab vahepealseid lehti (seetĂ”ttu muutub juurdepÀÀs neile saitidele mĂ€rkimisvÀÀrselt keerulisemaks), vĂ”i oma filtriteemaga proxy-serveri aadressiga.
Â
Siin on tĂ”enĂ€oliselt koht, kuhu tuleks panna pilt veebisaidilt http://1.1.1.1/, mida kasutatakse teenuse ĂŒhenduse kirjeldamiseks. Autorid on selgelt kindlad oma DNS-i töö kvaliteedis (kuigi Cloudflare'lt on raske oodata midagi muud):
Â

Â
On tĂ€iesti vĂ”imalik mĂ”ista ettevĂ”tet Cloudflare, teenuse loojat: nad teenivad oma leiva, toetades ja arendades ĂŒht maailma populaarseimat CDN-vĂ”rku (mille funktsioonide seas on mitte ainult sisu jaotamine, vaid ka DNS-tsoonide hostimine), ja, kuna nad tahavad Ă”petada neid, kes ei ole just vĂ€ga kursis, Ă”petavad neid, keda nad ei tunne, sellele, kuidas ringi liikuda globaalsetes vĂ”rkudes, kannatavad nad piisavalt sageli oma serverite aadresside blokeerimise all Ă€rgem rÀÀkigem neist â nii et DNS-i olemasolu, mis ei ole mĂ”jutatud âkarjumiste, vilede ja paberitĂŒkkideâ surveest, tĂ€hendab ettevĂ”ttele vĂ€iksemat kahju nende Ă€ritegevusele. Ja tehnilised eelised (vĂ€ikese asi, kuid meeldiv: nĂ€iteks Cloudflare'i tasuta DNS-i klientide jaoks toimub DNS-kirjete vĂ€rskendamine, mis on ettevĂ”tte DNS-serverites majutatud ressursside osas, koheselt), muudavad postituses kirjeldatud teenuse kasutamise veelgi huvitavamaks.
Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.
Kas plaanite uut teenust kasutada?
- Jah, lihtsalt mÀÀrates selle operatsioonisĂŒsteemis ja/vĂ”i ruuteri seadetes
- Jah, ja hakkan kasutama uusi protokolle (DNS ĂŒle HTTPs ja DNS ĂŒle TLS)
- Ei, mul on piisavalt praeguseid servereid (need on avalikud teenusepakkujad: Google, Yandex jne.)
- Ei, ma ei tea isegi, millega ma praegu kasutan
- Kasutame oma rekursiivseid DNS-e, millel on SSL tunnel nende juurde
HÀÀletas 693 kasutajat. 191 kasutajat hoiduti hÀÀletamast.
Allikas: habr.com
