Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında və ya "ictimai DNS rəfi gəldi!"

Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında və ya "ictimai DNS rəfi gəldi!"

Cloudflare şirkəti təqdim Ünvanlarda ictimai DNS:

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

Siyasətin "Öncə Məxfilik" olduğu deyilir ki, istifadəçilər sorğularının məzmunu ilə bağlı rahatlıq tapsınlar.

Xidmət onunla maraqlıdır ki, adi DNS ilə yanaşı, texnologiyalardan istifadə etmək imkanı verir TLS üzərindən DNS и DNS-dən çox HTTPS, bu, provayderlərin sorğular yolunda sorğularınızı dinləməsinin qarşısını alacaq - və statistika toplayın, reklamı izləyin, idarə edin. Cloudflare iddia edir ki, elanın verilmə tarixi (1 aprel 2018-ci il və ya Amerika notasında 04/01) təsadüfən seçilməyib: “dörd vahid” ilin başqa hansı günü təqdim olunacaq?

Habrın auditoriyası texniki cəhətdən fərasətli olduğundan, ənənəvi bölmə "niyə DNS lazımdır?" Yazının sonunda qoyacağam, amma burada daha praktiki faydalı şeyləri qeyd edəcəm:

Yeni xidmətdən necə istifadə etmək olar?

Ən sadə şey, yuxarıdakı DNS server ünvanlarını DNS müştərinizdə (və ya istifadə etdiyiniz yerli DNS serverinin parametrlərində yuxarı axın kimi) təyin etməkdir. Adi dəyərləri əvəz etməyin mənası varmı? Google DNS (8.8.8.8 və s.) və ya bir qədər az rast gəlinir Yandex ictimai DNS serverləri (77.88.8.8 və onlar kimi başqaları) Cloudflare serverlərinə - onlar sizin yerinizə qərar verəcəklər, lakin yeni başlayanlar üçün danışırlar cədvəl cavab sürəti, buna görə Cloudflare bütün rəqiblərdən daha sürətlidir (aydınlaşdıracağam: ölçmələr üçüncü tərəf xidməti tərəfindən aparılmışdır və müəyyən bir müştəri üçün sürət, əlbəttə ki, fərqli ola bilər).

Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında və ya "ictimai DNS rəfi gəldi!"

Sorğunun şifrəli bir əlaqə (əslində cavab onun vasitəsilə qaytarılır), qeyd olunan DNS-over-TLS və DNS-over-HTTPS üzərindən serverə uçduğu yeni rejimlərlə işləmək daha maraqlıdır. Təəssüf ki, onlar "qutudan kənarda" dəstəklənmir (müəlliflər bunun "hələ" olduğuna inanırlar), lakin onların işlərini proqram təminatınızda (və ya hətta aparatınızda) təşkil etmək çətin deyil:

HTTP üzərindən DNS (DoH)

Adından da göründüyü kimi, əlaqə HTTPS kanalı üzərindən baş verir, yəni

  1. eniş nöqtəsinin (son nöqtə) olması - bu ünvanda yerləşir https://cloudflare-dns.com/dns-query
  2. sorğu göndərə və cavab ala bilən müştəri.

Sorğular ya da müəyyən edilmiş DNS Wireformat formatında ola bilər RFC1035 (POST və GET HTTP metodlarından istifadə etməklə göndərilir) və ya JSON formatında (GET HTTP metodundan istifadə etməklə). Şəxsən mənim üçün HTTP sorğuları vasitəsilə DNS sorğuları etmək ideyası gözlənilməz görünürdü, lakin burada rasional bir nüans var: belə bir sorğu bir çox trafik filtrləmə sistemlərindən keçəcək, cavabları təhlil etmək olduqca sadədir və sorğu yaratmaq daha asandır. Adi kitabxanalar və protokollar təhlükəsizlik üçün məsuliyyət daşıyır.

Birbaşa sənədlərdən nümunələr tələb edin:

DNS Wireformat formatında GET sorğusu

$ 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

DNS Wireformat formatında POST sorğusu

$ 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

Eyni, lakin JSON istifadə edir

$ 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"
    }
  ]
}

Aydındır ki, nadir (ən azı bir) ev marşrutlaşdırıcısı bu şəkildə DNS ilə işləyə bilər, lakin bu, dəstəyin sabah görünməyəcəyi demək deyil - və maraqlısı budur ki, tətbiqimizdə DNS ilə işləməyi tamamilə həyata keçirə bilərik (artıq olduğu kimi). Mozilla edəcək, yalnız Cloudflare serverlərində).

TLS üzərindən DNS

Varsayılan olaraq, DNS sorğuları şifrələmədən ötürülür. TLS üzərindən DNS onları təhlükəsiz bir əlaqə üzərindən göndərməyin bir yoludur. Cloudflare müəyyən edildiyi kimi standart port 853-də TLS üzərindən DNS-i dəstəkləyir RFC7858. Bu, cloudflare-dns.com hostu üçün verilmiş sertifikatdan istifadə edir, TLS 1.2 və TLS 1.3 dəstəklənir.

Bağlantı qurmaq və protokola uyğun işləmək bu kimi bir şeydir:

  • DNS bağlantısı qurmazdan əvvəl müştəri cloudflare-dns.com-un TLS sertifikatının (SPKI adlanır) baza64 kodlu SHA256 hashını saxlayır.
  • DNS müştəri cloudflare-dns.com:853 ilə TCP bağlantısı qurur
  • DNS müştəri TLS əl sıxışdırmağa başlayır
  • TLS əl sıxma prosesi zamanı cloudflare-dns.com sahibi TLS sertifikatını təqdim edir.
  • TLS bağlantısı qurulduqdan sonra DNS müştərisi təhlükəsiz kanal vasitəsilə DNS sorğularını göndərə bilər ki, bu da sorğuların və cavabların dinlənilməsinin və saxtalaşdırılmasının qarşısını alır.
  • TLS bağlantısı üzərindən göndərilən bütün DNS sorğuları uyğun olmalıdır TCP üzərindən DNS göndərilməsi.

TLS üzərindən DNS vasitəsilə sorğu nümunəsi:

$ 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

Bu seçim yerli şəbəkənin və ya tək istifadəçinin ehtiyaclarına xidmət edən yerli DNS serverləri üçün ən yaxşı şəkildə işləyir. Düzdür, standartın dəstəyi ilə çox yaxşı deyil, amma - ümid edək!

Söhbətin nədən getdiyini izah edən iki kəlmə

DNS abbreviaturası Domen Adı Xidməti mənasını verir (“DNS xidməti” demək bir qədər lazımsızdır, abbreviatura artıq “xidmət” sözünü ehtiva edir) və sadə bir işi həll etmək üçün istifadə olunur - müəyyən bir host adının hansı IP ünvanına sahib olduğunu başa düşmək üçün. İnsan hər dəfə linkə kliklədikdə və ya brauzerin ünvan çubuğuna ünvan daxil etdikdə (məsələn, "https://habrahabr.ru/post/346430/"), insan kompüteri səhifənin məzmununu əldə etmək üçün hansı serverə sorğu göndərəcəyini anlamağa çalışır. Habrahabr.ru vəziyyətində, DNS-dən gələn cavab veb server IP ünvanının göstəricisini ehtiva edəcək: 178.248.237.68 və sonra brauzer artıq göstərilən IP ünvanı ilə serverlə əlaqə saxlamağa çalışacaq.

Öz növbəsində, DNS serveri “habrahabr.ru adlı hostun IP ünvanı nədir?” sorğusunu qəbul edərək, göstərilən host haqqında nəsə bildiyini müəyyən edir. Əks halda, o, dünyanın digər DNS serverlərinə sorğu göndərir və verilən sualın cavabını addım-addım tapmağa çalışır. Nəticədə, son cavabı tapdıqdan sonra tapılan məlumatlar hələ də onları gözləyən müştəriyə göndərilir, üstəlik DNS serverinin özünün keşində saxlanılır ki, bu da növbəti dəfə oxşar suala daha sürətli cavab verməyə imkan verəcəkdir.

Ümumi problem ondan ibarətdir ki, birincisi, DNS sorğusu məlumatları aydın şəkildə ötürülür (bu, trafik axınına çıxışı olan hər kəsə DNS sorğularını və aldıqları cavabları təcrid etmək və sonra onları öz məqsədləri üçün təhlil etmək imkanı verir; bu, DNS müştərisi üçün reklamları dəqiqliklə hədəfləmək imkanı, bu olduqca çoxdur!). İkincisi, bəzi İnternet provayderləri (biz barmaqlarımızı göstərməyəcəyik, lakin ən kiçikləri deyil) bu və ya digər tələb olunan səhifənin əvəzinə reklam göstərməyə meyllidirlər (bu, olduqca sadə şəkildə həyata keçirilir: habranabr.ru tərəfindən sorğu üçün göstərilən IP ünvanı əvəzinə. host adı, təsadüfi şəxs Beləliklə, reklamı ehtiva edən səhifənin təqdim olunduğu provayderin veb serverinin ünvanı qaytarılır). Üçüncüsü, bloklanmış veb-resursların IP ünvanları haqqında düzgün DNS cavablarını öz serverlərinin stub səhifələri olan IP ünvanı ilə əvəz etməklə ayrı-ayrı saytların bloklanması tələblərinin yerinə yetirilməsi mexanizmini həyata keçirən İnternet provayderləri var (nəticədə, belə saytlar nəzərəçarpacaq dərəcədə daha mürəkkəbdir) və ya filtrləməni həyata keçirən proxy serverinizin ünvanına.

Bu, yəqin ki, saytdan bir şəkil olmalıdır. http://1.1.1.1/, xidmətə qoşulmanı təsvir etmək üçün istifadə olunur. Müəlliflər DNS-lərinin keyfiyyətinə tam əmindirlər (lakin Cloudflare-dən başqa bir şey gözləmək çətindir):

Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında və ya "ictimai DNS rəfi gəldi!"

Xidmətin yaradıcısı olan Cloudflare-i tam başa düşmək olar: onlar çörəklərini dünyanın ən populyar CDN şəbəkələrindən birini (bu funksiyalara təkcə məzmunun yayılmasını deyil, həm də DNS zonalarının yerləşdirilməsi daxildir) saxlamaq və inkişaf etdirməklə qazanırlar. olanların arzusu, yaxşı biliyi olmayan, bunları öyrət kimləri tanımırlar, buna hara getmək qlobal şəbəkədə çox vaxt serverlərinin ünvanlarını bloklamaqdan əziyyət çəkirlər kim olduğunu deməyək - beləliklə, şirkət üçün "qışqırtılar, fitlər və cızma-qaralardan" təsirlənməyən DNS-nin olması onların biznesinə daha az zərər deməkdir. Texniki üstünlüklər (xırda, lakin gözəl: xüsusən də pulsuz DNS Cloudflare müştəriləri üçün şirkətin DNS serverlərində yerləşdirilən resursların DNS qeydlərini yeniləmək dərhal olacaq) yazıda təsvir edilən xidmətdən istifadəni daha da maraqlı edir.

Sorğuda yalnız qeydiyyatdan keçmiş istifadəçilər iştirak edə bilər. Daxil olunxahiş edirəm.

Yeni xidmətdən istifadə edəcəksiniz?

  • Bəli, sadəcə onu OS-də və / və ya marşrutlaşdırıcıda göstərərək

  • Bəli və mən yeni protokollardan istifadə edəcəyəm (HTTP üzərində DNS və TLS üzərində DNS)

  • Xeyr, mənim kifayət qədər cari serverlərim var (bu ictimai provayderdir: Google, Yandex və s.)

  • Xeyr, mən indi nədən istifadə etdiyimi belə bilmirəm

  • Mən onlara SSL tuneli ilə rekursiv DNS istifadə edirəm

693 istifadəçi səs verdi. 191 istifadəçi bitərəf qaldı.

Mənbə: www.habr.com

Добавить комментарий