Wy moetsje de tsjinst fan Cloudflare op adressen 1.1.1.1 en 1.0.0.1, of "de iepenbiere DNS-plank is oankommen!"

Wy moetsje de tsjinst fan Cloudflare op adressen 1.1.1.1 en 1.0.0.1, of "de iepenbiere DNS-plank is oankommen!"

It bedriuw Cloudflare Company presintearre iepenbiere DNS op adressen:

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

It belied wurdt sein dat it "Privacy earst" is, sadat brûkers frede kinne hawwe oer de ynhâld fan har oanfragen.

De tsjinst is ynteressant yn dat it, neist de gewoane DNS, de mooglikheid biedt om technologyen te brûken DNS-over-TLS и DNS-oer-HTTPS, dy't sterk foarkomt dat providers jo oanfragen op it paad fan oanfragen ôflústerje - en statistiken sammelje, kontrolearje, advertinsjes beheare. Cloudflare beweart dat de datum fan 'e oankundiging (april 1, 2018, of 04/01 yn Amerikaanske notaasje) net per tafal is keazen: hokker oare dei fan it jier sille de "fjouwer ienheden" wurde presintearre?

Sûnt it publyk fan Habr technysk ynsjoch is, is de tradisjonele seksje "wêrom hawwe jo DNS nedich?" Ik sil it oan 'e ein fan' e post pleatse, mar hjir sil ik mear praktysk nuttige dingen oanjaan:

Hoe kinne jo de nije tsjinst brûke?

It ienfâldichste ding is om de boppesteande DNS-tsjinneradressen op te jaan yn jo DNS-kliïnt (of as streamop yn 'e ynstellings fan' e lokale DNS-tsjinner dy't jo brûke). Hat it sin om de gewoane wearden te ferfangen Google DNS (8.8.8.8, ensfh.), of wat minder faak Yandex iepenbiere DNS-tsjinners (77.88.8.8 en oaren lykas se) nei de servers fan Cloudflare - se sille foar jo beslute, mar sprekt foar in begjinner skema antwurd snelheid, neffens hokker Cloudflare is flugger as alle konkurrinten (ik sil dúdlik meitsje: de mjittingen waarden nommen troch in tsjinst fan tredden, en de snelheid nei in spesifike klant, fansels, kin ferskille).

Wy moetsje de tsjinst fan Cloudflare op adressen 1.1.1.1 en 1.0.0.1, of "de iepenbiere DNS-plank is oankommen!"

It is folle nijsgjirriger om te wurkjen mei nije modi wêryn it fersyk nei de tsjinner fljocht oer in fersifere ferbining (feitlik wurdt it antwurd dêrtroch weromjûn), de neamde DNS-over-TLS en DNS-over-HTTPS. Spitigernôch wurde se net "out of the box" stipe (de auteurs leauwe dat dit "noch") is, mar it is net dreech om har wurk yn jo software te organisearjen (of sels op jo hardware):

DNS oer HTTPs (DoH)

Lykas de namme oanjout, fynt kommunikaasje plak oer in HTTPS-kanaal, wat betsjut

  1. de oanwêzigens fan in lâningspunt (einpunt) - it leit op it adres https://cloudflare-dns.com/dns-queryen
  2. in klant dy't fersiken ferstjoere kin en antwurden ûntfange.

Oanfragen kinne wêze yn it DNS-draadformaat definieare yn RFC1035 (ferstjoerd mei de POST- en GET HTTP-metoaden), of yn JSON-formaat (mei de GET HTTP-metoade). Foar my persoanlik like it idee om DNS-oanfragen fia HTTP-oanfragen te meitsjen ûnferwachts, mar d'r is in rasjonele nôt yn: sa'n fersyk sil in protte ferkearsfiltersystemen trochjaan, antwurden analysearje is frij ienfâldich, en oanfragen generearje is noch makliker. De gewoane biblioteken en protokollen binne ferantwurdlik foar feiligens.

Foarbylden oanfreegje, direkt út 'e dokumintaasje:

GET fersyk yn 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-fersyk yn DNS Wireformat-formaat

$ 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

Itselde mar mei 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"
    }
  ]
}

Fansels kin in seldsume (as op syn minst ien) thúsrouter op dizze manier mei DNS wurkje, mar dit betsjuttet net dat stipe moarn net sil ferskine - en, ynteressant, kinne wy ​​hjir wurkje mei DNS yn ús applikaasje (lykas al sil Mozilla meitsje, gewoan op Cloudflare-tsjinners).

DNS oer TLS

Standert wurde DNS-fragen sûnder fersifering ferstjoerd. DNS oer TLS is in manier om se oer in feilige ferbining te stjoeren. Cloudflare stipet DNS oer TLS op standert poarte 853 lykas foarskreaun RFC7858. Dit brûkt in sertifikaat útjûn foar de cloudflare-dns.com host, TLS 1.2 en TLS 1.3 wurde stipe.

In ferbining oprjochtsje en wurkje neffens it protokol giet sa:

  • Foardat in DNS-ferbining opsteld wurdt, bewarret de kliïnt in base64-kodearre SHA256-hash fan it TLS-sertifikaat fan cloudflare-dns.com (neamd SPKI)
  • DNS-kliïnt stelt in TCP-ferbining op mei cloudflare-dns.com:853
  • DNS-kliïnt inisjearret TLS-handshake
  • Tidens it TLS-handshake-proses presintearret de cloudflare-dns.com-host syn TLS-sertifikaat.
  • Sadree't in TLS-ferbining is oprjochte, kin de DNS-kliïnt DNS-oanfragen stjoere oer in feilich kanaal, wat foarkomt dat fersiken en antwurden wurde ôfluisterd en spoofed.
  • Alle DNS-fragen ferstjoerd oer in TLS-ferbining moatte foldwaan oan de DNS ferstjoere oer TCP.

In foarbyld fan in fersyk fia DNS oer 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

Dizze opsje liket it bêste te wurkjen foar lokale DNS-tsjinners dy't de behoeften fan in lokaal netwurk of ien brûker tsjinje. Wier, mei de stipe fan 'e standert is net hiel goed, mar - lit ús hoopje!

Twa wurden fan útlis fan wêr't it petear oer giet

De ôfkoarting DNS stiet foar Domain Name Service (sa sizze "DNS-tsjinst" is wat oerstallich, de ôfkoarting befettet al it wurd "tsjinst") en wurdt brûkt om in ienfâldige taak op te lossen - om te begripen hokker IP-adres in bepaalde hostnamme hat. Elke kear as in persoan op in keppeling klikt, of in adres ynfiert yn 'e adresbalke fan' e browser (sizze, soksawat as "https://habrahabr.ru/post/346430/"), besiket de minsklike komputer út te finen hokker tsjinner in fersyk stjoert om de ynhâld fan 'e side te krijen. Yn it gefal fan habrahabr.ru sil it antwurd fan DNS in yndikaasje befetsje fan it IP-adres fan 'e webtsjinner: 178.248.237.68, en dan sil de browser al besykje kontakt te meitsjen mei de tsjinner mei it opjûne IP-adres.

Op syn beurt, de DNS-tsjinner, nei't it fersyk ûntfongen is "wat is it IP-adres fan 'e host mei de namme habrahabr.ru?", bepaalt oft it wat wit oer de opjûne host. As net, docht it in fersyk oan oare DNS-tsjinners yn 'e wrâld, en besiket stap foar stap it antwurd op' e stelde fraach út te finen. As gefolch, by it finen fan it definitive antwurd, wurde de fûn gegevens stjoerd nei de kliïnt dy't noch op har wachtet, en it wurdt opslein yn 'e cache fan' e DNS-tsjinner sels, wêrtroch jo de folgjende kear in ferlykbere fraach folle flugger kinne beäntwurdzje.

In mienskiplik probleem is dat, earst, de DNS-fraachgegevens yn 't dúdlik wurde oerdroegen (wat elkenien mei tagong ta de ferkearsstream de mooglikheid jout om de DNS-fragen en de antwurden dy't se ûntfange te isolearjen en se dan te parsearjen foar har eigen doelen; dit jout de mooglikheid om advertinsjes mei krektens te rjochtsjen foar in DNS-kliïnt, wat in protte is!). Twads, guon ISP's (wy sille gjin fingers wize, mar net de lytste) tend to sjen advertinsjes ynstee fan ien of oare oanfrege side (dat wurdt ymplementearre hiel gewoan: ynstee fan it opjûne IP-adres foar in query troch de habranabr.ru hostnamme, in willekeurige persoan Sa wurdt it adres fan de webtsjinner fan de provider weromjûn, wêr't de side mei de advertinsje wurdt tsjinne). As tredde binne d'r providers fan ynternet tagong dy't in meganisme ymplementearje foar it ferfoljen fan 'e easken foar it blokkearjen fan yndividuele siden troch de juste DNS-antwurden oer de IP-adressen fan blokkearre webboarnen te ferfangen troch it IP-adres fan har tsjinner mei stubsiden (as gefolch, tagong ta sokke siden merkber yngewikkelder), of nei it adres fan jo proxy-tsjinner dy't filterjen útfiert.

Dit moat wierskynlik in foto wêze fan 'e side. http://1.1.1.1/, brûkt om de ferbining mei de tsjinst te beskriuwen. De auteurs lykje frij betrouber te wêzen yn 'e kwaliteit fan har DNS (it is lykwols lestich om wat oars te ferwachtsjen fan Cloudflare):

Wy moetsje de tsjinst fan Cloudflare op adressen 1.1.1.1 en 1.0.0.1, of "de iepenbiere DNS-plank is oankommen!"

Men kin Cloudflare, de skepper fan 'e tsjinst folslein begripe: se fertsjinje har brea troch it ûnderhâlden en ûntwikkeljen fan ien fan' e populêrste CDN-netwurken yn 'e wrâld (dêr't funksjes net allinich it fersprieden fan ynhâld omfetsje, mar ek hosting fan DNS-sônes), en, fanwegen de winsk fan dy, dy't net goed ûndersocht is, lear dy dy't se net kenne,oan dat wêr te gean yn it wrâldwide netwurk, lijt frij faak fan it blokkearjen fan de adressen fan har servers fan litte wy net sizze wa - dus it hawwen fan in DNS dy't net wurdt beynfloede troch "shouts, whistles and scribbles" foar it bedriuw betsjut minder skea foar har bedriuw. En technyske foardielen (in bytsje, mar aardich: benammen foar kliïnten fan 'e fergese DNS Cloudflare, it bywurkjen fan de DNS-records fan boarnen dy't op' e DNS-tsjinners fan it bedriuw wurde hosted sil direkt wêze) meitsje it brûken fan de tsjinst beskreaun yn 'e post noch ynteressanter.

Allinnich registrearre brûkers kinne meidwaan oan 'e enkête. Ynlogge, asjebleaft.

Sille jo de nije tsjinst brûke?

  • Ja, troch it gewoan op te jaan yn it OS en / of op 'e router

  • Ja, en ik sil nije protokollen brûke (DNS oer HTTP's en DNS oer TLS)

  • Nee, ik haw genôch aktuele servers (dit is in iepenbiere provider: Google, Yandex, ensfh.)

  • Nee, ik wit net iens wat ik no brûk

  • Ik brûk myn rekursive DNS mei in SSL-tunnel nei har

693 brûkers stimden. 191 brûker ûnthâlde him.

Boarne: www.habr.com

Add a comment