Natutugunan namin ang serbisyo mula sa Cloudflare sa mga address 1.1.1.1 at 1.0.0.1, o "dumating na ang pampublikong DNS shelf!"

Natutugunan namin ang serbisyo mula sa Cloudflare sa mga address 1.1.1.1 at 1.0.0.1, o "dumating na ang pampublikong DNS shelf!"

Cloudflare Company ipinakita pampublikong DNS sa mga address:

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

Sinasabing "Privacy muna" ang patakaran para magkaroon ng kapayapaan ng isip ang mga user tungkol sa nilalaman ng kanilang mga kahilingan.

Ang serbisyo ay kawili-wili sa na, bilang karagdagan sa karaniwang DNS, nagbibigay ito ng kakayahang gumamit ng mga teknolohiya DNS-over-TLS ΠΈ DNS-over-HTTPS, na lubos na makakapigil sa mga provider na mag-eavesdrop sa iyong mga kahilingan kasama ang landas ng mga kahilingan - at mangolekta ng mga istatistika, subaybayan, pamahalaan ang advertising. Sinasabi ng Cloudflare na ang petsa ng anunsyo (Abril 1, 2018, o 04/01 sa American notation) ay hindi pinili ng pagkakataon: anong ibang araw ng taon ang ipapakita ng "apat na yunit"?

Dahil technically savvy ang audience ni Habr, ang tradisyonal na seksyong "bakit kailangan mo ng DNS?" Ilalagay ko ito sa dulo ng post, ngunit dito sasabihin ko ang mas praktikal na kapaki-pakinabang na mga bagay:

Paano gamitin ang bagong serbisyo?

Ang pinakasimpleng bagay ay tukuyin ang nasa itaas na mga DNS server address sa iyong DNS client (o bilang upstream sa mga setting ng lokal na DNS server na iyong ginagamit). Makatuwiran bang palitan ang mga karaniwang halaga Google DNS (8.8.8.8, atbp.), o medyo hindi gaanong karaniwan Mga pampublikong DNS server ng Yandex (77.88.8.8 at iba pang katulad nila) sa mga server mula sa Cloudflare - sila ang magpapasya para sa iyo, ngunit nagsasalita para sa isang baguhan iskedyul bilis ng pagtugon, ayon sa kung saan ang Cloudflare ay mas mabilis kaysa sa lahat ng mga kakumpitensya (Lilinawin ko: ang mga sukat ay kinuha ng isang third-party na serbisyo, at ang bilis sa isang partikular na kliyente, siyempre, ay maaaring mag-iba).

Natutugunan namin ang serbisyo mula sa Cloudflare sa mga address 1.1.1.1 at 1.0.0.1, o "dumating na ang pampublikong DNS shelf!"

Ito ay mas kawili-wiling magtrabaho sa mga bagong mode kung saan ang kahilingan ay lumilipad sa server sa isang naka-encrypt na koneksyon (sa katunayan, ang tugon ay ibinalik sa pamamagitan nito), ang nabanggit na DNS-over-TLS at DNS-over-HTTPS. Sa kasamaang-palad, hindi sila suportado "out of the box" (naniniwala ang mga may-akda na ito ay "pa"), ngunit hindi mahirap ayusin ang kanilang trabaho sa iyong software (o kahit na sa iyong hardware):

DNS over HTTPs (DoH)

Gaya ng ipinahihiwatig ng pangalan, nagaganap ang komunikasyon sa isang channel ng HTTPS, na nangangahulugang

  1. ang pagkakaroon ng isang landing point (endpoint) - ito ay matatagpuan sa address https://cloudflare-dns.com/dns-queryAt
  2. isang kliyente na maaaring magpadala ng mga kahilingan at makatanggap ng mga tugon.

Ang mga kahilingan ay maaaring nasa format ng DNS Wireformat na tinukoy sa RFC1035 (ipinadala gamit ang POST at GET HTTP method), o sa JSON format (gamit ang GET HTTP method). Para sa akin personal, ang ideya ng paggawa ng mga kahilingan sa DNS sa pamamagitan ng mga kahilingan sa HTTP ay tila hindi inaasahan, ngunit mayroong isang makatwirang butil sa loob nito: ang gayong kahilingan ay papasa sa maraming mga sistema ng pag-filter ng trapiko, ang pag-parse ng mga tugon ay medyo simple, at ang pagbuo ng mga kahilingan ay mas madali. Ang karaniwang mga aklatan at protocol ay responsable para sa seguridad.

Humiling ng mga halimbawa, mula mismo sa dokumentasyon:

GET ang kahilingan sa DNS Wireformat na 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 na kahilingan sa DNS Wireformat na 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

Pareho ngunit gumagamit ng 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"
    }
  ]
}

Malinaw, ang isang bihirang (kung hindi bababa sa isa) na router sa bahay ay maaaring gumana sa DNS sa ganitong paraan, ngunit hindi ito nangangahulugan na ang suporta ay hindi lilitaw bukas - at, kawili-wili, dito maaari naming lubos na ipatupad ang pagtatrabaho sa DNS sa aming aplikasyon (tulad ng dati. gagawa ng Mozilla, sa mga server ng Cloudflare).

DNS sa TLS

Bilang default, ipinapadala ang mga query sa DNS nang walang pag-encrypt. Ang DNS sa TLS ay isang paraan upang ipadala ang mga ito sa isang secure na koneksyon. Sinusuportahan ng Cloudflare ang DNS sa TLS sa karaniwang port 853 gaya ng inireseta RFC7858. Gumagamit ito ng certificate na ibinigay para sa cloudflare-dns.com host, TLS 1.2 at TLS 1.3 ay suportado.

Ang pagtatatag ng koneksyon at pagtatrabaho ayon sa protocol ay ganito:

  • Bago magtatag ng koneksyon sa DNS, nag-iimbak ang kliyente ng base64 na naka-encode na SHA256 hash ng TLS certificate ng cloudflare-dns.com (tinatawag na SPKI)
  • Ang DNS client ay nagtatatag ng koneksyon sa TCP sa cloudflare-dns.com:853
  • Sinimulan ng DNS client ang TLS handshake
  • Sa proseso ng TLS handshake, ipinapakita ng cloudflare-dns.com host ang TLS certificate nito.
  • Kapag naitatag na ang isang koneksyon sa TLS, maaaring magpadala ang DNS client ng mga query sa DNS sa isang secure na channel, na pumipigil sa mga kahilingan at tugon na ma-eavesdrop at ma-spoof.
  • Ang lahat ng mga query sa DNS na ipinadala sa isang TLS na koneksyon ay dapat sumunod sa pagpapadala ng DNS sa TCP.

Halimbawa ng isang kahilingan sa pamamagitan ng DNS sa 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

Mukhang pinakamahusay na gumagana ang opsyong ito para sa mga lokal na DNS server na nagsisilbi sa mga pangangailangan ng isang lokal na network o isang user. Totoo, sa suporta ng pamantayan ay hindi napakahusay, ngunit - umaasa tayo!

Dalawang salita ng pagpapaliwanag kung tungkol saan ang usapan

Ang abbreviation DNS ay kumakatawan sa Domain Name Service (kaya ang pagsasabi ng "DNS service" ay medyo kalabisan, ang pagdadaglat ay naglalaman na ng salitang "service"), at ginagamit upang malutas ang isang simpleng gawain - upang maunawaan kung anong IP address ang mayroon ang isang partikular na pangalan ng host. Sa tuwing magki-click ang isang tao sa isang link, o magpasok ng isang address sa address bar ng browser (sabihin, tulad ng "https://habrahabr.ru/post/346430/"), sinusubukan ng computer ng tao na alamin kung aling server ang magpapadala ng kahilingan upang makuha ang nilalaman ng pahina. Sa kaso ng habrahabr.ru, ang tugon mula sa DNS ay maglalaman ng indikasyon ng IP address ng web server: 178.248.237.68, at pagkatapos ay susubukan na ng browser na makipag-ugnay sa server gamit ang tinukoy na IP address.

Sa turn, ang DNS server, na natanggap ang kahilingan na "ano ang IP address ng host na pinangalanang habrahabr.ru?", ay tumutukoy kung may alam ito tungkol sa tinukoy na host. Kung hindi, humihiling ito sa iba pang mga DNS server sa mundo, at, hakbang-hakbang, sinusubukang alamin ang sagot sa tanong na itinanong. Bilang isang resulta, sa paghahanap ng pangwakas na sagot, ang nahanap na data ay ipinadala sa kliyente na naghihintay pa rin para sa kanila, kasama ito ay naka-imbak sa cache ng DNS server mismo, na magbibigay-daan sa iyo upang sagutin ang isang katulad na tanong nang mas mabilis sa susunod.

Ang isang karaniwang problema ay, una, ang data ng query ng DNS ay ipinapadala sa malinaw (na nagbibigay sa sinumang may access sa daloy ng trapiko ng kakayahang ihiwalay ang mga query sa DNS at ang mga tugon na kanilang natatanggap at pagkatapos ay i-parse ang mga ito para sa kanilang sariling mga layunin; nagbibigay ito ng ang kakayahang mag-target ng mga ad nang may katumpakan para sa isang DNS client, na napakarami!). Pangalawa, ang ilang mga ISP (hindi namin ituturo ang mga daliri, ngunit hindi ang pinakamaliit) ay may posibilidad na magpakita ng mga ad sa halip na isa o isa pang hiniling na pahina (na ipinapatupad nang simple: sa halip na ang tinukoy na IP address para sa isang query ng habranabr.ru host name, isang random na tao Kaya, ang address ng web server ng provider ay ibinalik, kung saan inihahatid ang page na naglalaman ng advertisement). Pangatlo, may mga Internet access provider na nagpapatupad ng mekanismo para sa pagtupad sa mga kinakailangan para sa pagharang sa mga indibidwal na site sa pamamagitan ng pagpapalit ng mga tamang sagot sa DNS tungkol sa mga IP address ng mga naka-block na mapagkukunan ng web sa IP address ng kanilang server na naglalaman ng mga stub page (bilang resulta, access sa kapansin-pansing mas kumplikado ang mga naturang site), o sa address ng iyong proxy server na nagsasagawa ng pag-filter.

Malamang na ito ay isang larawan mula sa site. http://1.1.1.1/, ginagamit upang ilarawan ang koneksyon sa serbisyo. Ang mga may-akda ay tila lubos na tiwala sa kalidad ng kanilang DNS (gayunpaman, mahirap umasa ng anupaman mula sa Cloudflare):

Natutugunan namin ang serbisyo mula sa Cloudflare sa mga address 1.1.1.1 at 1.0.0.1, o "dumating na ang pampublikong DNS shelf!"

Lubos na mauunawaan ng isang tao ang Cloudflare, ang lumikha ng serbisyo: kumikita sila ng kanilang tinapay sa pamamagitan ng pagpapanatili at pagbuo ng isa sa pinakasikat na mga network ng CDN sa mundo (na kasama sa mga function hindi lamang ang pamamahagi ng nilalaman, kundi pati na rin ang pagho-host ng mga DNS zone), at, dahil sa ang pagnanais ng mga iyon, na hindi bihasa, turuan mo yang mga yan sinong hindi nila kilala, para doon kung saan pupunta sa pandaigdigang network, medyo madalas na naghihirap mula sa pagharang sa mga address ng kanilang mga server mula sa wag na nating sabihin kung sino - kaya ang pagkakaroon ng DNS na hindi apektado ng "sigaw, sipol at scribbles" para sa kumpanya ay nangangahulugan ng mas kaunting pinsala sa kanilang negosyo. At ang mga teknikal na bentahe (isang maliit, ngunit maganda: lalo na, para sa mga kliyente ng libreng DNS Cloudflare, ang pag-update ng mga talaan ng DNS ng mga mapagkukunan na naka-host sa mga DNS server ng kumpanya) ay ginagawang mas kawili-wili ang paggamit ng serbisyong inilarawan sa post.

Ang mga rehistradong user lamang ang maaaring lumahok sa survey. Mag-sign in, pakiusap

Gagamitin mo ba ang bagong serbisyo?

  • Oo, sa pamamagitan lamang ng pagtukoy nito sa OS at / o sa router

  • Oo, at gagamit ako ng mga bagong protocol (DNS sa HTTP at DNS sa TLS)

  • Hindi, mayroon akong sapat na kasalukuyang mga server (ito ay isang pampublikong provider: Google, Yandex, atbp.)

  • Hindi, hindi ko alam kung ano ang ginagamit ko ngayon

  • Ginagamit ko ang aking recursive DNS na may SSL tunnel sa kanila

693 mga gumagamit ang bumoto. 191 user ang umiwas.

Pinagmulan: www.habr.com

Magdagdag ng komento