Rydyn ni'n cwrdd â'r gwasanaeth gan Cloudflare yng nghyfeiriadau 1.1.1.1 ac 1.0.0.1, neu “mae'r silff DNS cyhoeddus wedi cyrraedd!”

Rydyn ni'n cwrdd â'r gwasanaeth gan Cloudflare yng nghyfeiriadau 1.1.1.1 ac 1.0.0.1, neu “mae'r silff DNS cyhoeddus wedi cyrraedd!”

Cwmni Cloudflare wedi'i gyflwyno DNS cyhoeddus mewn cyfeiriadau:

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

Dywedir mai "Preifatrwydd yn gyntaf" yw'r polisi fel y gall defnyddwyr gael tawelwch meddwl ynghylch cynnwys eu ceisiadau.

Mae'r gwasanaeth yn ddiddorol gan ei fod, yn ogystal â'r DNS arferol, yn darparu'r gallu i ddefnyddio technolegau DNS-dros-TLS и DNS-dros-HTTPS, a fydd yn atal darparwyr yn fawr rhag clustfeinio ar eich ceisiadau ar hyd llwybr ceisiadau - a chasglu ystadegau, monitro, rheoli hysbysebu. Mae Cloudflare yn honni na chafodd dyddiad y cyhoeddiad (Ebrill 1, 2018, neu 04/01 mewn nodiant Americanaidd) ei ddewis ar hap: pa ddiwrnod arall o'r flwyddyn fydd y “pedair uned” yn cael eu cyflwyno?

Gan fod cynulleidfa Habr yn dechnegol ddeallus, mae'r adran draddodiadol "pam mae angen DNS arnoch chi?" Byddaf yn ei roi ar ddiwedd y post, ond yma byddaf yn nodi pethau mwy ymarferol defnyddiol:

Sut i ddefnyddio'r gwasanaeth newydd?

Y peth symlaf yw nodi'r cyfeiriadau gweinydd DNS uchod yn eich cleient DNS (neu fel i fyny'r afon yng ngosodiadau'r gweinydd DNS lleol rydych chi'n ei ddefnyddio). A yw'n gwneud synnwyr i ddisodli'r gwerthoedd arferol Google DNS (8.8.8.8, ac ati), neu ychydig yn llai cyffredin Gweinyddion DNS cyhoeddus Yandex (77.88.8.8 ac eraill tebyg iddynt) i'r gweinyddion o Cloudflare - byddant yn penderfynu ar eich rhan, ond yn siarad ar gyfer dechreuwr amserlen cyflymder ymateb, yn ôl pa Cloudflare sy'n gyflymach na'r holl gystadleuwyr (byddaf yn egluro: cymerwyd y mesuriadau gan wasanaeth trydydd parti, a gall y cyflymder i gleient penodol, wrth gwrs, fod yn wahanol).

Rydyn ni'n cwrdd â'r gwasanaeth gan Cloudflare yng nghyfeiriadau 1.1.1.1 ac 1.0.0.1, neu “mae'r silff DNS cyhoeddus wedi cyrraedd!”

Mae'n llawer mwy diddorol gweithio gyda moddau newydd lle mae'r cais yn hedfan i'r gweinydd dros gysylltiad wedi'i amgryptio (mewn gwirionedd, mae'r ymateb yn cael ei ddychwelyd drwyddo), y DNS-over-TLS a grybwyllir a DNS-over-HTTPS. Yn anffodus, nid ydynt yn cael eu cefnogi “allan o’r bocs” (mae’r awduron yn credu bod hyn “eto”), ond nid yw’n anodd trefnu eu gwaith yn eich meddalwedd (neu hyd yn oed ar eich caledwedd):

DNS dros HTTPs (DoH)

Fel y mae'r enw'n awgrymu, mae cyfathrebu'n digwydd dros sianel HTTPS, sy'n golygu

  1. presenoldeb man glanio (man terfyn) - mae wedi'i leoli yn y cyfeiriad https://cloudflare-dns.com/dns-queryAc
  2. cleient sy'n gallu anfon ceisiadau a derbyn ymatebion.

Gall ceisiadau naill ai fod yn y fformat DNS Wireformat a ddiffinnir yn RFC1035 (anfonwyd gan ddefnyddio'r dulliau POST a GET HTTP), neu mewn fformat JSON (gan ddefnyddio'r dull GET HTTP). I mi yn bersonol, roedd y syniad o wneud ceisiadau DNS trwy geisiadau HTTP yn ymddangos yn annisgwyl, ond mae graen rhesymegol ynddo: bydd cais o'r fath yn pasio llawer o systemau hidlo traffig, mae dosrannu ymatebion yn eithaf syml, ac mae cynhyrchu ceisiadau hyd yn oed yn haws. Mae'r llyfrgelloedd a'r protocolau arferol yn gyfrifol am ddiogelwch.

Gofynnwch am enghreifftiau, yn syth o'r ddogfennaeth:

GET cais mewn fformat 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

Cais POST mewn fformat 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

Yr un peth ond yn defnyddio 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"
    }
  ]
}

Yn amlwg, gall llwybrydd cartref prin (os o leiaf un) weithio gyda DNS yn y modd hwn, ond nid yw hyn yn golygu na fydd cefnogaeth yn ymddangos yfory - ac, yn ddiddorol, yma gallwn weithredu'n eithaf gweithio gyda DNS yn ein cais (fel eisoes mynd i wneud Mozilla, dim ond ar weinyddion Cloudflare).

DNS dros TLS

Yn ddiofyn, trosglwyddir ymholiadau DNS heb amgryptio. Mae DNS dros TLS yn ffordd i'w hanfon dros gysylltiad diogel. Mae Cloudflare yn cefnogi DNS dros TLS ar borthladd safonol 853 fel y rhagnodir RFC7858. Mae hyn yn defnyddio tystysgrif a roddwyd ar gyfer y gwesteiwr cloudflare-dns.com, cefnogir TLS 1.2 a TLS 1.3.

Mae sefydlu cysylltiad a gweithio yn unol â'r protocol yn mynd rhywbeth fel hyn:

  • Cyn sefydlu cysylltiad DNS, mae'r cleient yn storio stwnsh SHA64 wedi'i amgodio base256 o dystysgrif TLS cloudflare-dns.com (o'r enw SPKI)
  • Mae cleient DNS yn sefydlu cysylltiad TCP i cloudflare-dns.com:853
  • Cleient DNS yn cychwyn ysgwyd llaw TLS
  • Yn ystod y broses ysgwyd llaw TLS, mae gwesteiwr cloudflare-dns.com yn cyflwyno ei dystysgrif TLS.
  • Unwaith y bydd cysylltiad TLS wedi'i sefydlu, gall y cleient DNS anfon ceisiadau DNS dros sianel ddiogel, sy'n atal ceisiadau ac ymatebion rhag cael eu clustfeinio a'u ffugio.
  • Rhaid i bob ymholiad DNS a anfonir dros gysylltiad TLS gydymffurfio â'r anfon DNS dros TCP.

Enghraifft o gais trwy DNS dros 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

Mae'n ymddangos bod yr opsiwn hwn yn gweithio orau ar gyfer gweinyddwyr DNS lleol sy'n gwasanaethu anghenion rhwydwaith lleol neu un defnyddiwr. Gwir, nid gyda chefnogaeth y safon yn dda iawn, ond - gadewch i ni obeithio!

Dau air o eglurhad o beth yw pwrpas y sgwrs

Mae'r talfyriad DNS yn sefyll am Domain Name Service (felly mae dweud "gwasanaeth DNS" braidd yn ddiangen, mae'r talfyriad eisoes yn cynnwys y gair "gwasanaeth"), ac fe'i defnyddir i ddatrys tasg syml - i ddeall pa gyfeiriad IP sydd gan enw gwesteiwr penodol. Bob tro mae person yn clicio ar ddolen, neu'n rhoi cyfeiriad ym mar cyfeiriad y porwr (dyweder, rhywbeth fel "https://habrahabr.ru/post/346430/"), mae'r cyfrifiadur dynol yn ceisio darganfod pa weinydd i anfon cais i gael cynnwys y dudalen. Yn achos habrahabr.ru, bydd yr ymateb gan DNS yn cynnwys arwydd o gyfeiriad IP y gweinydd gwe: 178.248.237.68, ac yna bydd y porwr eisoes yn ceisio cysylltu â'r gweinydd gyda'r cyfeiriad IP penodedig.

Yn ei dro, mae'r gweinydd DNS, ar ôl derbyn y cais “beth yw cyfeiriad IP y gwesteiwr o'r enw habrahabr.ru?”, yn penderfynu a yw'n gwybod unrhyw beth am y gwesteiwr penodedig. Os na, mae'n gwneud cais i weinyddion DNS eraill yn y byd, ac, gam wrth gam, yn ceisio darganfod yr ateb i'r cwestiwn a ofynnwyd. O ganlyniad, ar ôl dod o hyd i'r ateb terfynol, mae'r data a ddarganfuwyd yn cael ei anfon at y cleient sy'n dal i aros amdanynt, ac mae'n cael ei storio yn storfa'r gweinydd DNS ei hun, a fydd yn caniatáu ichi ateb cwestiwn tebyg yn llawer cyflymach y tro nesaf.

Problem gyffredin yw, yn gyntaf, bod data ymholiad DNS yn cael ei drosglwyddo'n glir (sy'n rhoi'r gallu i unrhyw un sydd â mynediad at y llif traffig ynysu'r ymholiadau DNS a'r ymatebion a gânt ac yna eu dosrannu at eu dibenion eu hunain; mae hyn yn rhoi y gallu i dargedu hysbysebion yn gywir ar gyfer cleient DNS, sy'n eithaf llawer!). Yn ail, mae rhai ISPs (ni fyddwn yn pwyntio bysedd, ond nid y rhai lleiaf) yn tueddu i ddangos hysbysebion yn lle un neu dudalen arall y gofynnwyd amdani (sy'n cael ei gweithredu'n eithaf syml: yn lle'r cyfeiriad IP penodedig ar gyfer ymholiad gan yr habranabr.ru enw gwesteiwr, person ar hap Felly, dychwelir cyfeiriad gweinydd gwe'r darparwr, lle cyflwynir y dudalen sy'n cynnwys yr hysbyseb). Yn drydydd, mae yna ddarparwyr mynediad Rhyngrwyd sy'n gweithredu mecanwaith ar gyfer cyflawni'r gofynion ar gyfer blocio safleoedd unigol trwy ddisodli'r ymatebion DNS cywir am gyfeiriadau IP adnoddau gwe sydd wedi'u blocio gyda chyfeiriad IP eu gweinydd sy'n cynnwys tudalennau bonyn (o ganlyniad, mynediad i safleoedd o'r fath yn amlwg yn fwy cymhleth), neu i gyfeiriad eich gweinydd dirprwy sy'n perfformio hidlo.

Mae'n debyg mai llun o'r safle ddylai hwn fod. http://1.1.1.1/, a ddefnyddir i ddisgrifio'r cysylltiad â'r gwasanaeth. Mae'n ymddangos bod yr awduron yn eithaf hyderus yn ansawdd eu DNS (fodd bynnag, mae'n anodd disgwyl unrhyw beth arall gan Cloudflare):

Rydyn ni'n cwrdd â'r gwasanaeth gan Cloudflare yng nghyfeiriadau 1.1.1.1 ac 1.0.0.1, neu “mae'r silff DNS cyhoeddus wedi cyrraedd!”

Gall un ddeall yn llawn Cloudflare, crëwr y gwasanaeth: maent yn ennill eu bara trwy gynnal a datblygu un o'r rhwydweithiau CDN mwyaf poblogaidd yn y byd (y mae swyddogaethau'n cynnwys nid yn unig dosbarthu cynnwys, ond hefyd cynnal parthau DNS), ac, oherwydd dymuniad y rheini, sydd ddim yn hyddysg, dysg y rhai pwy nad ydyn nhw'n gwybod, i hyny lle i fynd yn y rhwydwaith byd-eang, yn aml yn dioddef o rwystro cyfeiriadau eu gweinyddion o gadewch i ni beidio dweud pwy - felly mae cael DNS nad yw'n cael ei effeithio gan "weiddiau, chwibanau a sgribls" i'r cwmni yn golygu llai o niwed i'w busnes. Ac mae manteision technegol (treiffl, ond braf: yn arbennig, i gleientiaid y DNS Cloudflare rhad ac am ddim, diweddaru'r cofnodion DNS o adnoddau a gynhelir ar weinyddion DNS y cwmni yn syth) yn gwneud defnyddio'r gwasanaeth a ddisgrifir yn y post hyd yn oed yn fwy diddorol.

Dim ond defnyddwyr cofrestredig all gymryd rhan yn yr arolwg. Mewngofnodios gwelwch yn dda.

A fyddwch chi'n defnyddio'r gwasanaeth newydd?

  • Ydy, trwy ei nodi'n syml yn yr OS a / neu ar y llwybrydd

  • Ydw, a byddaf yn defnyddio protocolau newydd (DNS dros HTTPs a DNS dros TLS)

  • Na, mae gen i ddigon o weinyddion cyfredol (mae hwn yn ddarparwr cyhoeddus: Google, Yandex, ac ati)

  • Na, dwi ddim hyd yn oed yn gwybod beth rydw i'n ei ddefnyddio ar hyn o bryd

  • Rwy'n defnyddio fy DNS recursive gyda thwnnel SSL iddynt

Pleidleisiodd 693 ddefnyddiwr. Ymatalodd 191 defnyddiwr.

Ffynhonnell: hab.com

Ychwanegu sylw