Услугу Цлоудфларе-а срећемо на адресама 1.1.1.1 и 1.0.0.1, или „јавна ДНС полица је стигла!“

Услугу Цлоудфларе-а срећемо на адресама 1.1.1.1 и 1.0.0.1, или „јавна ДНС полица је стигла!“

Цлоудфларе Цомпани представљени јавни ДНС на адресама:

  • 1.1.1.1
  • 1.0.0.1
  • КСНУМКС: КСНУМКС: КСНУМКС :: КСНУМКС
  • КСНУМКС: КСНУМКС: КСНУМКС :: КСНУМКС

За ову политику се каже да је „Приватност на првом месту“ како би корисници могли да буду мирни у вези са садржајем својих захтева.

Услуга је занимљива по томе што, поред уобичајеног ДНС-а, пружа могућност коришћења технологија ДНС-овер-ТЛС и ДНС преко ХТТПС-а, што ће у великој мери спречити провајдере да прислушкују ваше захтеве на путу захтева - и прикупљају статистику, прате, управљају оглашавањем. Цлоудфларе тврди да датум објаве (1. април 2018, или 04/01 у америчкој нотацији) није изабран случајно: ког другог дана у години ће бити представљене „четири јединице“?

Пошто је Хаброва публика технички поткована, традиционална рубрика "зашто вам треба ДНС?" Ставићу то на крај поста, али овде ћу навести више практично корисних ствари:

Како користити нову услугу?

Најједноставније је да наведете горе наведене адресе ДНС сервера у вашем ДНС клијенту (или као упстреам у подешавањима локалног ДНС сервера који користите). Има ли смисла заменити уобичајене вредности Гоогле ДНС (8.8.8.8, итд.), или нешто ређе Иандек јавни ДНС сервери (77.88.8.8 и њима слични) серверима са Цлоудфларе-а - они ће одлучити уместо вас, али говори у име почетника распоред брзина одзива, према којој је Цлоудфларе бржи од свих конкурената (разјаснићу: мерења је извршила услуга треће стране, а брзина до одређеног клијента, наравно, може да се разликује).

Услугу Цлоудфларе-а срећемо на адресама 1.1.1.1 и 1.0.0.1, или „јавна ДНС полица је стигла!“

Много је интересантније радити са новим режимима у којима захтев лети ка серверу преко шифроване везе (у ствари, одговор се враћа преко ње), поменути ДНС-овер-ТЛС и ДНС-овер-ХТТПС. Нажалост, нису подржани „из кутије“ (аутори верују да је то „још“), али није тешко организовати њихов рад у вашем софтверу (па чак и на вашем хардверу):

ДНС преко ХТТП-а (ДоХ)

Као што име говори, комуникација се одвија преко ХТТПС канала, што значи

  1. присуство тачке слетања (крајње тачке) - налази се на адреси https://cloudflare-dns.com/dns-queryИ
  2. клијент који може да шаље захтеве и прима одговоре.

Захтеви могу бити у формату ДНС Виреформат дефинисаном у РФЦКСНУМКС (послано коришћењем метода ПОСТ и ГЕТ ХТТП) или у ЈСОН формату (помоћу ГЕТ ХТТП методе). За мене лично, идеја о постављању ДНС захтева путем ХТТП захтева деловала је неочекивано, али у томе постоји рационално зрно: такав захтев ће проћи многе системе за филтрирање саобраћаја, рашчлањивање одговора је прилично једноставно, а генерисање захтева је још лакше. Уобичајене библиотеке и протоколи су одговорни за безбедност.

Затражите примере, директно из документације:

ГЕТ захтев у ДНС Виреформат формату

$ 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

ПОСТ захтев у ДНС Виреформат формату

$ 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

Исто, али користећи ЈСОН

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

Очигледно, ретки (ако бар један) кућни рутер може да ради са ДНС-ом на овај начин, али то не значи да се подршка неће појавити сутра - и, занимљиво, овде можемо прилично да имплементирамо рад са ДНС-ом у нашој апликацији (као што је већ направиће Мозилу, само на Цлоудфларе серверима).

ДНС преко ТЛС-а

Подразумевано, ДНС упити се преносе без шифровања. ДНС преко ТЛС-а је начин да их пошаљете преко безбедне везе. Цлоудфларе подржава ДНС преко ТЛС-а на стандардном порту 853 како је прописано РФЦКСНУМКС. Ово користи сертификат издат за хост цлоудфларе-днс.цом, подржани су ТЛС 1.2 и ТЛС 1.3.

Успостављање везе и рад по протоколу иде отприлике овако:

  • Пре успостављања ДНС везе, клијент чува басе64 кодиран СХА256 хеш ТЛС сертификата цлоудфларе-днс.цом (назван СПКИ)
  • ДНС клијент успоставља ТЦП везу са цлоудфларе-днс.цом:853
  • ДНС клијент покреће ТЛС руковање
  • Током ТЛС процеса руковања, хост цлоудфларе-днс.цом представља свој ТЛС сертификат.
  • Када се ТЛС веза успостави, ДНС клијент може да шаље ДНС упите преко безбедног канала, што спречава прислушкивање и лажирање захтева и одговора.
  • Сви ДНС упити послати преко ТЛС везе морају бити у складу са слање ДНС-а преко ТЦП-а.

Пример захтева преко ДНС-а преко ТЛС-а:

$ 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

Чини се да ова опција најбоље функционише за локалне ДНС сервере који служе потребама локалне мреже или једног корисника. Истина, уз подршку стандарда није баш добро, али - надајмо се!

Две речи објашњења о чему је разговор

Скраћеница ДНС је скраћеница од Домаин Наме Сервице (тако да је изговор „ДНС сервице“ донекле сувишан, скраћеница већ садржи реч „сервице“) и користи се за решавање једноставног задатка – да се разуме коју ИП адресу има одређено име хоста. Сваки пут када особа кликне на везу или унесе адресу у траку за адресу претраживача (рецимо, нешто попут „https://habrahabr.ru/post/346430/"), људски рачунар покушава да открије који сервер да пошаље захтев за добијање садржаја странице. У случају хабрахабр.ру, одговор ДНС-а ће садржати индикацију ИП адресе веб сервера: 178.248.237.68, а затим ће претраживач већ покушати да контактира сервер са наведеном ИП адресом.

Заузврат, ДНС сервер, пошто је примио захтев „која је ИП адреса хоста по имену хабрахабр.ру?“, утврђује да ли зна било шта о наведеном хосту. Ако не, поставља захтев другим ДНС серверима у свету и, корак по корак, покушава да пронађе одговор на постављено питање. Као резултат тога, по проналажењу коначног одговора, пронађени подаци се шаљу клијенту који их још чека, плус се чувају у кешу самог ДНС сервера, што ће вам омогућити да следећи пут одговорите на слично питање много брже.

Уобичајени проблем је што се, прво, подаци ДНС упита преносе у чистом облику (што свакоме ко има приступ протоку саобраћаја даје могућност да изолује ДНС упите и одговоре које прима, а затим их рашчлани за сопствене потребе; ово даје могућност прецизног циљања огласа за ДНС клијента, што је прилично много!). Друго, неки ИСП-ови (нећемо показивати прстом, али не и најмањи) имају тенденцију да приказују огласе уместо једне или друге тражене странице (што се имплементира прилично једноставно: уместо наведене ИП адресе за упит од стране хабранабр.ру име хоста, случајна особа. Дакле, враћа се адреса веб сервера провајдера на коме се сервира страница која садржи оглас). Треће, постоје провајдери приступа Интернету који имплементирају механизам за испуњавање захтева за блокирање појединачних сајтова тако што замењују исправне ДНС одговоре о ИП адресама блокираних веб ресурса ИП адресом свог сервера који садржи стуб странице (као резултат тога, приступ такви сајтови приметно компликованији) или на адресу вашег прокси сервера који врши филтрирање.

Ово би вероватно требало да буде слика са сајта. http://1.1.1.1/, који се користи за описивање везе са сервисом. Чини се да су аутори прилично сигурни у квалитет свог ДНС-а (међутим, тешко је очекивати нешто друго од Цлоудфларе-а):

Услугу Цлоудфларе-а срећемо на адресама 1.1.1.1 и 1.0.0.1, или „јавна ДНС полица је стигла!“

У потпуности се може разумети Цлоудфларе, творац сервиса: они зарађују за хлеб одржавајући и развијајући једну од најпопуларнијих ЦДН мрежа на свету (које функције укључују не само дистрибуцију садржаја, већ и хостовање ДНС зона), а због жеља оних, који није добро упућен, научити оне кога не познају, томе где да одем у глобалној мрежи, често пати од блокирања адреса својих сервера са да не кажемо ко - дакле имати ДНС на који не утичу "вици, звиждуци и шкработине" за компанију значи мање штете за њихово пословање. А техничке предности (ситница, али лепа: посебно за клијенте бесплатног ДНС Цлоудфлареа, ажурирање ДНС записа ресурса који се налазе на ДНС серверима компаније ће бити тренутно) чине коришћење услуге описане у посту још интересантнијим.

Само регистровани корисници могу учествовати у анкети. Пријавите се, Добродошао си.

Да ли ћете користити нову услугу?

  • Да, једноставним навођењем у ОС-у и/или на рутеру

  • Да, и користићу нове протоколе (ДНС преко ХТТП-а и ДНС преко ТЛС-а)

  • Не, имам довољно тренутних сервера (ово је јавни провајдер: Гоогле, Иандек, итд.)

  • Не, чак ни не знам шта тренутно користим

  • Користим свој рекурзивни ДНС са ССЛ тунелом до њих

693 корисника гласало. 191 корисник је био уздржан.

Извор: ввв.хабр.цом

Додај коментар