Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında qarşılayaq, ya da "açıq DNS-lərin sayı artdı!"

Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında qarşılayaq, ya da "açıq DNS-lərin sayı artdı!"

 

Cloudflare Şirkəti tamaşası açıq DNS-lər ünvanlarında:

 

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

 

«Privacy first» prinsipi tətbiq edildiyinə görə, istifadəçilər sorğularının məzmunu üçün narahat olmamalıdırlar.

 

Bu xidmət, adi DNS-dən əlavə, istifadə etməyə imkan tanıyır DNS-over-TLSDNS-over-HTTPS, bu, provayderlərin sorğularınızı dinləməsinə və statistika toplamasına, reklamları izləməsinə mane olacaq. Cloudflare-in dediyinə görə, elan tarixi (1 aprel 2018, yəni 04/01 amerika notasında) təsadüfən seçilməyib: ilin hansı günü «dörd bir» olaraq təqdim etmək olar?

Habrın auditoriyası texniki biliklərlə dolu olduğu üçün, ənənəvi «DNS nə üçündür?» bölməsini yazının sonuna yerləşdirəcəyəm, burada daha praktiki məlumatlar təqdim edəcəyəm:

 

Yeni xidməti necə istifadə etmək olar?

 

Ən asan yol, öz DNS müştərinizdə (ya da istifadə etdiyiniz yerli DNS serverinizin parametrlərində) yuxarıda qeyd olunan DNS ünvanlarını göstərə bilərsiniz.serverləri. Adətən istifadə olunan Google DNS (8.8.8.8 və s.) və ya az tanınan Yandex-in açıq DNS serverləri (77.88.8.8 və başqaları) ilə Cloudflare serverlərini əvəz etməyə dəyərmi, bunu siz qərar verin, amma yeni başlayanlar üçün qrafik cavab sürətləri, Cloudflare-in bütün rəqiblərindən daha sürətli çalışdığını göstərir (bunu qeyd edim ki, ölçmələr xarici xidmət tərəfindən aparılıb və konkret müştəriyə qədər sürət, əlbəttə, fərqli ola bilər).

 

Cloudflare xidmətini 1.1.1.1 və 1.0.0.1 ünvanlarında qarşılayaq, ya da "açıq DNS-lərin sayı artdı!"

 

Daha maraqlı, sorğunun server şifrlənmiş əlaqə vasitəsilə getdiyi yeni rejimlər ilə işdir (yəqin ki, cavab da bu şəkildə qayıdır), yuxarıda qeyd olunan DNS-over-TLS və DNS-over-HTTPS. Təəssüf ki, «qutu dan» dəstəklənmir (müəlliflər bunun «hələlik» olduğunu düşünürlər), lakin öz proqramınızda (ya da hətta öz avadanlığınızda) onları təşkil etmək çətin deyil:

 

DNS over HTTPS (DoH)

 

Adından da göründüyü kimi, əlaqə HTTPS kanalı vasitəsilə baş verir, bu da

 

  1. bir uçuş nöqtəsinin (endpoint) olması deməkdir — o, https://cloudflare-dns.com/dns-query ünvanında yerləşir və
  2. sorğu göndərə bilən, cavab alabilən bir müştərinin olmasını tələb edir.

 

Sorğular ya RFC1035 (HTTP POST və GET metodları ilə göndərilməkdədir) formatında, ya da JSON formatında (HTTP GET metodu istifadə edilir). Mənim üçün HTTP sorğuları vasitəsilə DNS sorğuları etmə fikri gözlənilməz oldu, lakin burada məntiq var: bu cür sorğular bir çox trafik filtrasiya sistemlərindən keçəcək, cavabları parse etmək kifayət qədər asandır, sorğuları formalaşdırmaq isə daha da asandır. Təhlükəsizlik üçün tanış kitabxanalar və protokollar cavabdehdir.

 

Sorğulara dair nümunələr, birbaşa sənədləşdirmədən:

 

DNS Wireformat formatında GET sorğusu

 

$ curl -v "https://cloudflare-dns.com/dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB" | hexdump
* HTTP/2 istifadə olunur, server çoxlu istifadəni dəstəkləyir
* Bağlantı vəziyyəti dəyişdi (HTTP/2 təsdiq edildi)
* HTTP/2 məlumatlarını bağlantı yastığına kopyalamaq: len=0
* Stream ID istifadə olunur: 1 (asan idarə etmə 0x7f968700a400)
GET /dns-query?ct=application/dns-udpwireformat&dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB HTTP/2
Host: cloudflare-dns.com
User-Agent: curl/7.54.0
Accept: */*

* Bağlantı vəziyyəti dəyişdi (MAX_CONCURRENT_STREAMS yeniləndi)!
HTTP/2 200
date: Jum, 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=Şb, 23-Mar-19 05:14:02 GMT; path=/; domain=.cloudflare.com; HttpOnly
server: cloudflare-nginx
cf-ray: 3ffe69838a418c4c-SFO-DOG

{ [49 bayt məlumat]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Bağlantı #0 cloudflare-dns.com host'una rahatlıqla bağlandı
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 bayt məlumat]
100    49  100    49    0     0    493      0 --:--:-- --:--:-- --:--:--   494
* Bağlantı #0 cloudflare-dns.com host'una rahatlıqla bağlandı
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

 

Eynisi, lakin JSON istifadə edərək

 

$ 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 (əgər bircə ev routeri belə) ev routerləri DNS ilə bu cür işləyə bilir, lakin bu, dəstək gəlməyəcəyi anlamına gəlmir — və maraqlı bir tərəfi, burada öz tətbiqimizdə DNS ilə işləməyə tam olaraq deyil (artıq Mozilla bunu etmək üçün çalışır, Cloudflare serverlərində tam olaraq.

 

DNS over TLS

 

Varsayılan olaraq, DNS sorğuları şifrələnməmiş şəkildə göndərilir. DNS over TLS, onları qorunan bir əlaqə vasitəsilə göndərməyin bir yoludur. Cloudflare, standart 853 portunda DNS over TLS dəstəkləyir, bunun üçün RFC7858. Burada cloudflare-dns.com hostu üçün verilmiş sertifikat istifadə edilir, TLS 1.2 və TLS 1.3 dəstəklənir.

 

Bağlantının qurulması və protokol üzrə işləməsi təxminən belə olur:

 

  • DNS müştərisi cloudflare-dns.com-un TLS sertifikatının base64 ilə kodlanmış SHA256-hashını (SPKI adlandırılan) saxlayır
  • DNS müştərisi cloudflare-dns.com:853 ilə TCP bağlantısı qurur
  • DNS müştərisi TLS handshake prosedurunu başlayır
  • TLS handshake prosesi zamanı, cloudflare-dns.com hostu öz TLS sertifikatını təqdim edir.
  • TLS əlaqəsi qurulduqdan sonra, DNS müştərisi qorunan kanal üzərində DNS sorğuları göndərə bilər, bu, sorğuların və cavabların dinlənməsini və saxtalaşdırılmasını qarşısını alır.
  • TLS əlaqəsi vasitəsilə göndərilən bütün DNS sorğuları TCP üzərində DNS göndərmə spesifikasiyasına.

 

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

 

$ kdig -d @1.1.1.1 +tls-ca +tls-host=cloudflare-dns.com  example.com
;; DEBUG: Owner üçün sorğu (example.com.), class(1), type(1), server(1.1.1.1), port(853), protocol(TCP)
;; DEBUG: TLS, 170 sistem sertifikatı idxal edildi
;; DEBUG: TLS, sertifikat hiyerarxiyası alınıb:
;; 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, sertifikat PIN yoxlamasını atlır
;; DEBUG: TLS, Sertifikat etibarlıdır.
;; TLS sessiyası (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:
;; Versiya: 0; flags: ; UDP ölçüsü: 1536 B; ext-rcode: NOERROR
;; PADDING: 408 B

;; SUAL SEKSİYASI:
;; example.com.             IN  A

;; CAVAB SEKSİYASI:
example.com.            2347    IN  A   93.184.216.34

;; Alınan 468 B
;; Zaman 2018-03-31 15:20:57 PDT
;; From 1.1.1.1@853(TCP) within 12.6 ms

 

Bu variant, yerli DNS serverlərinin bir istifadəçi və ya yerli şəbəkənin tələblərinə xidmət etməsi üçün daha uyğun görünür. Doğrudur, standart dəstəyi ilə işlər biraz yolunda deyil, amma — ümid edək ki, yaxşı olacaq!

 

İki sözlə, söhbət nədən gedir

 

DNS abbreviaturası açılır Domen Ad Xidməti (belə ki, "DNS xidməti" demək bir qədər artıqdır, çünki abbreviaturada artıq "xidmət" sözü var), və bu, sadə bir problemi həll etmək üçün istifadə olunur — konkret bir host adı üçün hansı IP adresinin olduğunu başa düşmək. Hər dəfə bir insan bir keçidə kliklədiyində və ya brauzerin adres çubuğuna ünvan yazdığında (məsələn, "https://habrahabr.ru/post/346430/"), insanın kompüteri, veb səhifə məzmununu almaq üçün hansı serverə müraciət edilməli olduğunu başa düşməyə çalışır. Məsələn, habrahabr.ru üçün DNS cavabı, veb serverin IP adresini göstərəcək: 178.248.237.68, və bundan sonra brauzer artıq göstərilən IP adresi olan server ilə əlaqəni qurmağa çalışacaq.

 

Öz növbəsində, DNS serveri "habrahabr.ru adında hostun IP adresi nədir?" sualı aldıqda, onun göstərilən host üçün bir məlumatı olub-olmadığını müəyyən edir. Yoxdursa, o, dünyadakı digər DNS serverlərinə sorğu göndərir və addım-addım, bu sualın cavabını tapmağa çalışır. Nəticədə, son cavabın tapılması ilə, tapılan məlumatlar hələ gözləyən müştəriyə göndərilir, üstəlik, bu məlumatlar DNS serverinin öyüdündə saxlanılır ki, növbəti dəfə bu cür suala daha sürətli cavab verə bilsin.

 

Ümumi problem, birincisi, DNS sorğularının məlumatlarının açıq şəkildə ötürülməsidir (bu, trafik axınına giriş imkanı olan hər kəsə DNS sorğularını və alınan cavabları ayırd etməyə və sonra onları öz məqsədləri üçün analiz etməyə imkan verir; bu, DNS müştərisinin dəqiq hədəflənməsi üçün imkan yaradır, bu, tamamilə kiçik bir problem deyil!). İkincisi, bəzi internet provayderləri (barmağı göstərəcəyimiz yoxdur, amma ən kiçiklərdən deyillər) soruşulan hər hansı bir səhifə əvəzinə reklam göstərmək meyillidir (bu, olduqca sadə bir şəkildə həyata keçirilir: habranabr.ru host adı üçün sorğuda göstərilən IP ünvanı yerinə, istifadəçiyə təsadüfi olaraq provayderin veb serverinin ünvanı qaytarılır, burada reklamı olan bir səhifə təqdim olunur). Üçüncüsü, bəzi internet təşviqatçıları, bloklamaları ötürməsiylə əlaqədar müvafiq DNS cavablarının bloklanan veb resurslarının IP ünvanları ilə öz serverinin IP ünvanı ilə əvəz olunması mexanizmini reallaşdırır, bu, həmin vebsaytlara çıxışı əhəmiyyətli dərəcədə çətinləşdirir və ya onların proxy serverinin ünvanına, filtrasiya həyata keçirən sisteminə yönləndirir.

 

Burada, ehtimal ki, bir şəkil yerləşdirilməlidir http://1.1.1.1/, xidməti təqdim etməyi təsvir edən. Müəlliflər, görünür, DNS-lərinin işləməsi keyfiyyətində tam əminlərdir (nəticə etibarilə, 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 qarşılayaq, ya da "açıq DNS-lərin sayı artdı!"

 

Cloudflare şirkətini başa düşmək tamamilə mümkündür, çünki onlar dünyanın ən populyar CDN şəbəkələrindən birini dəstəkləyir və inkişaf etdirir (bu şəbəkənin funksiyaları arasında yalnız məzmunun yayılması yox, həm də DNS zonalarının hostinqi var) və texnologiya müstəvisində onların, çox da başa düşməyənlər, yalnız onları tanımayanlara, nəyə görə haraya getməli olduqları qlobal şəbəkədə, tez-tez server ünvanlarının bloklanması ilə bağlı əziyyət çəkir kimin olduğunu deməyək — beləliklə, təsir etməyən bir DNS-in olması şirkətə öz işinə daha az zərər deməkdir. Texniki üstünlüklər (kiçik bir şeydir, ancaq xoşdur: xüsusilə, Cloudflare-in pulsuz DNS müştəriləri üçün sistemdə DNS qeydlərinin yenilənməsi anında olacaq) bu postda təsvir olunan xidmətdən istifadə etməyə daha da maraqlı edir.

Yalnız qeydiyyatdan keçmiş istifadəçilər sorğuda iştirak edə bilərlər. Daxil olun, xahiş edirəm.

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

  • Bəli, onu yalnız OS-də və ya routerdə göstərərək
  • Bəli, yeni protokollardan (DNS over HTTPs və DNS over TLS) istifadə edəcəyəm
  • Xeyr, cari serverlər mənim üçün kifayətdir (bu, ictimai bir provayderdir: Google, Yandex və s.)
  • Xeyr, mən hazırda nə istifadə etdiyimi belə bilmirəm
  • Öz SSL tuneli ilə rekuriv DNS istifadə edirəm

693 istifadəçi səs verib. 191 istifadəçi səslərdən imtina edib.

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster