Mir treffen de Service vu Cloudflare op Adressen 1.1.1.1 an 1.0.0.1, oder "den ëffentlechen DNS Regal ass ukomm!"

Mir treffen de Service vu Cloudflare op Adressen 1.1.1.1 an 1.0.0.1, oder "den ëffentlechen DNS Regal ass ukomm!"

Cloudflare Company presentéiert ëffentlechen DNS op Adressen:

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

D'Politik gëtt gesot als "Privatsphär fir d'éischt" sou datt d'Benotzer Fridden vum Geescht iwwer den Inhalt vun hiren Ufroe kënnen hunn.

De Service ass interessant datt et, nieft dem gewéinleche DNS, d'Fäegkeet bitt Technologien ze benotzen DNS-iwwer-TLS и DNS-iwwer-HTTPS, wat vill Providere verhënnert datt Är Ufroe laanscht de Wee vun Ufroen oflauschteren - a Statistike sammelen, iwwerwaachen, Reklammen verwalten. Cloudflare behaapt datt den Datum vun der Ukënnegung (1. Abrëll 2018 oder 04/01 an amerikanescher Notatioun) net zoufälleg gewielt gouf: wéi en aneren Dag vum Joer ginn déi "véier Unitéiten" presentéiert?

Zënter dem Habr säi Publikum technesch erfuerscht ass, ass déi traditionell Sektioun "Firwat braucht Dir DNS?" Ech wäert et um Enn vum Post setzen, awer hei wäert ech méi praktesch nëtzlech Saachen soen:

Wéi benotzen ech den neie Service?

Déi einfachst Saach ass déi uewe genannte DNS Server Adressen an Ärem DNS Client ze spezifizéieren (oder als Upstream an den Astellunge vum lokalen DNS Server deen Dir benotzt). Ass et Sënn fir déi üblech Wäerter ze ersetzen Google DNS (8.8.8.8, etc.), oder liicht manner heefeg Yandex ëffentlechen DNS Server (77.88.8.8 an anerer wéi se) op d'Server vu Cloudflare - si entscheeden fir Iech, awer schwätzt fir en Ufänger Zäitplang Äntwertgeschwindegkeet, no där Cloudflare méi séier ass wéi all Konkurrenten (ech wäert klären: d'Miessunge goufen vun engem Drëtt-Partei-Service geholl, an d'Geschwindegkeet fir e spezifesche Client, natierlech, kann ënnerschiddlech sinn).

Mir treffen de Service vu Cloudflare op Adressen 1.1.1.1 an 1.0.0.1, oder "den ëffentlechen DNS Regal ass ukomm!"

Et ass vill méi interessant mat neie Modi ze schaffen, an deenen d'Ufro un de Server iwwer eng verschlësselte Verbindung flitt (tatsächlech gëtt d'Äntwert doduerch zréckginn), den ernimmten DNS-iwwer-TLS an DNS-iwwer-HTTPS. Leider si se net "aus der Këscht" ënnerstëtzt (d'Auteuren gleewen datt dëst "nach") ass, awer et ass net schwéier hir Aarbecht an Ärer Software ze organiséieren (oder souguer op Ärer Hardware):

DNS iwwer HTTPs (DoH)

Wéi den Numm et scho seet, gëtt d'Kommunikatioun iwwer en HTTPS Kanal stattfonnt, dat heescht

  1. d'Präsenz vun engem Landung Punkt (Endpunkt) - et ass op der Adress etabléiert https://cloudflare-dns.com/dns-queryan
  2. e Client deen Ufroe schécken kann an Äntwerte kréien.

Ufroe kënnen entweder am DNS Wireformat Format definéiert sinn RFC1035 (geschéckt mat der POST a GET HTTP Methoden), oder am JSON Format (mat der GET HTTP Method). Fir mech perséinlech war d'Iddi fir DNS-Ufroen iwwer HTTP-Ufroen ze maachen onerwaart, awer et ass e rational Getreid dran: sou eng Ufro passéiert vill Trafficfiltersystemer, d'Äntwerten ze analyséieren ass ganz einfach, an d'Ufroe generéieren ass nach méi einfach. Déi üblech Bibliothéiken a Protokoller si verantwortlech fir d'Sécherheet.

Ufro Beispiller, direkt aus der Dokumentatioun:

GET Ufro am DNS Wireformat Format

$ 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

POST Ufro am DNS Wireformat Format

$ 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

Selwecht awer benotzt 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"
    }
  ]
}

Natierlech kann e rare (wann op d'mannst een) Heemrouter op dës Manéier mat DNS schaffen, awer dat heescht net datt d'Ënnerstëtzung net muer erschéngt - an interessant, hei kënne mir d'Aarbecht mat DNS an eiser Applikatioun ganz ëmsetzen (wéi scho wäert Mozilla maachen, just op Cloudflare Serveren).

DNS iwwer TLS

Par défaut ginn DNS Ufroen ouni Verschlësselung iwwerdroen. DNS iwwer TLS ass e Wee fir se iwwer eng sécher Verbindung ze schécken. Cloudflare ënnerstëtzt DNS iwwer TLS um Standardport 853 wéi virgeschriwwen RFC7858. Dëst benotzt e Certificat fir de Cloudflare-dns.com Host ausgestallt, TLS 1.2 an TLS 1.3 ginn ënnerstëtzt.

Eng Verbindung opzebauen an no dem Protokoll schaffen geet eppes wéi dat:

  • Ier Dir eng DNS Verbindung opstellt, späichert de Client e base64 kodéierten SHA256 Hash vum cloudflare-dns.com TLS Zertifika (genannt SPKI)
  • DNS Client erstellt eng TCP Verbindung op cloudflare-dns.com:853
  • DNS Client initiéiert TLS Handshake
  • Wärend dem TLS Handshake Prozess presentéiert de Cloudflare-dns.com Host säin TLS Zertifika.
  • Wann eng TLS Verbindung etabléiert ass, kann den DNS Client DNS Ufroen iwwer e séchere Kanal schécken, wat verhënnert datt d'Ufroen an d'Äntwerten oflauschtert a verstoppt ginn.
  • All DNS Ufroen, déi iwwer eng TLS Verbindung geschéckt ginn, musse mat der DNS iwwer TCP schécken.

E Beispill vun enger Ufro iwwer DNS iwwer 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

Dës Optioun schéngt am beschten fir lokal DNS Serveren ze schaffen, déi d'Bedierfnesser vun engem lokalen Netzwierk oder engem eenzege Benotzer servéieren. True, mat der Ënnerstëtzung vum Standard ass net ganz gutt, awer - loosst eis hoffen!

Zwee Wierder vun Erklärung iwwer wat d'Gespréich geet

D'Ofkierzung DNS steet fir Domain Name Service (also ze soen "DNS Service" ass e bësse redundant, d'Ofkierzung enthält schonn d'Wuert "Service"), a gëtt benotzt fir eng einfach Aufgab ze léisen - ze verstoen wat IP Adress e bestëmmten Hostnumm huet. All Kéier wann eng Persoun op e Link klickt, oder eng Adress an der Adressbar vum Browser agitt (soen eppes wéi "https://habrahabr.ru/post/346430/"), probéiert de mënschleche Computer erauszefannen, wéi ee Server eng Ufro schéckt fir den Inhalt vun der Säit ze kréien. Am Fall vun habrahabr.ru wäert d'Äntwert vum DNS eng Indikatioun vun der IP Adress vum Webserver enthalen: 178.248.237.68, an dann probéiert de Browser schonn de Server mat der spezifizéierter IP Adress ze kontaktéieren.

Am Tour, den DNS-Server, nodeems hien d'Ufro krut "Wat ass d'IP Adress vum Host mam Numm habrahabr.ru?", bestëmmt ob et eppes iwwer de spezifizéierte Host weess. Wann net, mécht et eng Ufro un aner DNS-Server op der Welt, a probéiert Schrëtt fir Schrëtt d'Äntwert op d'Fro erauszefannen. Als Resultat, wann Dir déi definitiv Äntwert fonnt hutt, ginn déi fonnt Daten un de Client geschéckt, deen nach ëmmer op si waart, plus et gëtt am Cache vum DNS-Server selwer gespäichert, wat Iech erlaabt Iech eng ähnlech Fro d'nächst Kéier méi séier ze beäntweren.

E gemeinsame Problem ass datt als éischt d'DNS Ufrodaten kloer iwwerdroe ginn (wat jidderengem mat Zougang zum Trafficflow d'Fäegkeet gëtt d'DNS Ufroen an d'Äntwerten ze isoléieren, déi se kréien an se dann fir hir eegen Zwecker ze analyséieren; dëst gëtt d'Fäegkeet fir Annoncen mat Genauegkeet fir en DNS Client ze zielen, wat zimmlech vill ass!). Zweetens, e puer ISPs (mir weisen net de Fanger, awer net déi klengst) tendéieren Annoncen ze weisen anstatt eng oder aner ugefrote Säit (wat ganz einfach ëmgesat gëtt: amplaz vun der spezifizéierter IP Adress fir eng Ufro vum habranabr.ru Hostnumm, eng zoufälleg Persoun Also gëtt d'Adress vum Webserver vum Provider zréckginn, wou d'Säit mat der Annonce zerwéiert gëtt). Drëttens ginn et Internetzougang Ubidder, déi e Mechanismus implementéieren fir d'Ufuerderunge fir eenzel Site ze blockéieren andeems se déi richteg DNS Äntwerten iwwer d'IP Adresse vu blockéierte Webressourcen duerch d'IP Adress vun hirem Server ersetzen, deen d'Säiten enthält (als Resultat, Zougang zu esou Siten merkbar méi komplizéiert), oder op d'Adress vun Ärem Proxy-Server deen Filteren ausféiert.

Dëst soll wahrscheinlech e Bild vum Site sinn. http://1.1.1.1/, benotzt fir d'Verbindung zum Service ze beschreiwen. D'Auteuren schéngen ganz zouversiichtlech an der Qualitéit vun hirem DNS ze sinn (awer et ass schwéier eppes anescht vu Cloudflare ze erwaarden):

Mir treffen de Service vu Cloudflare op Adressen 1.1.1.1 an 1.0.0.1, oder "den ëffentlechen DNS Regal ass ukomm!"

Et kann ee Cloudflare, de Créateur vum Service ganz verstoen: Si verdéngen hiert Brout andeems ee vun de populäersten CDN Netzwierker op der Welt erhalen an entwéckelen (déi Funktiounen enthalen net nëmmen d'Verdeelung vum Inhalt, mee och d'Hosting vun DNS Zonen), an, wéinst dem de Wonsch vun deenen, deen net gutt beherrscht ass, léieren déi déi se net kennen, zu deem wou goen am globalen Netz, leid zimlech dacks aus der Spär vun den Adressen vun hire Serveren aus loosst eis net soen wien - also en DNS ze hunn, deen net vu "Gejäiz, Pfeifen a Gekrabbelen" fir d'Firma betraff ass, heescht manner Schued fir hire Betrib. An technesch Virdeeler (eng kleng, awer flott: besonnesch fir Clienten vun der gratis DNS Cloudflare, d'Aktualiséierung vun den DNS-Records vun de Ressourcen, déi op den DNS-Server vun der Firma gehost ginn, wäerte direkt sinn) maachen d'Benotzung vum Service beschriwwen an der Post nach méi interessant.

Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen. Umellen, wann ech glift.

Wäert Dir den neie Service benotzen?

  • Jo, andeems Dir et einfach am OS an / oder um Router spezifizéiert

  • Jo, an ech wäert nei Protokoller benotzen (DNS iwwer HTTPs an DNS iwwer TLS)

  • Nee, ech hu genuch aktuell Serveren (dëst ass en ëffentleche Provider: Google, Yandex, etc.)

  • Nee, ech weess net mol wat ech elo benotzen

  • Ech benotzen meng rekursiv DNS mat engem SSL Tunnel hinnen

693 Benotzer hunn gestëmmt. 191 Benotzer huet sech enthalen.

Source: will.com

Setzt e Commentaire