Биз Cloudflare кызматын 1.1.1.1 жана 1.0.0.1 даректеринен тосуп алабыз же "коомдук DNS текчеси келди!"

Биз Cloudflare кызматын 1.1.1.1 жана 1.0.0.1 даректеринен тосуп алабыз же "коомдук DNS текчеси келди!"

Cloudflare компаниясы берилген даректер боюнча коомдук DNS:

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

Колдонуучулар өздөрүнүн суроо-талаптарынын мазмунуна ишене алышы үчүн, "Биринчиден Купуялык" саясаты колдонулат деп айтылат.

Кызмат кызыктуу, анткени кадимки DNSден тышкары, технологияларды колдонуу мүмкүнчүлүгүн берет TLS үстүнөн DNS и DNS-over-HTTPS, бул провайдерлердин суроо-талаптарыңызды тыңшоого жана статистиканы чогултууга, мониторинг жүргүзүүгө жана жарнаманы башкарууга бөгөт коёт. Cloudflare жарыялоо датасы (1-жылдын 2018-апрели же америкалык нотада 04/01) кокустан тандалган эмес деп ырастайт: жылдын дагы кайсы күнү "төрт бирдик" көрсөтүлөт?

Хабрдын аудиториясы техникалык жактан жакшы билгендиктен, салттуу бөлүм "бизге DNS эмне үчүн керек?" Мен аны посттун аягында коём, бул жерде мен практикалык жактан пайдалуураак нерселерди баяндайм:

Жаңы кызматты кантип колдонсо болот?

Эң жөнөкөй нерсе - DNS кардарыңызда жогорудагы DNS сервер даректерин көрсөтүү (же сиз колдонгон жергиликтүү DNS серверинин жөндөөлөрүндө өйдө агым катары). Кадимки баалуулуктарды алмаштыруунун мааниси барбы? Google DNS (8.8.8.8, ж.б.), же бир аз азыраак кездешет Yandex коомдук DNS серверлери (77.88.8.8 жана башка ушул сыяктуулар) Cloudflare серверлерине - алар сиз үчүн чечишет, бирок бул башталгыч үчүн сүйлөйт ырааттама жооп ылдамдыгы, ага ылайык Cloudflare бардык атаандаштарга караганда тезирээк иштейт (түшүндүрүп берейин: өлчөө үчүнчү тараптын кызматы тарабынан жасалган жана белгилүү бир кардар үчүн ылдамдык, албетте, ар кандай болушу мүмкүн).

Биз Cloudflare кызматын 1.1.1.1 жана 1.0.0.1 даректеринен тосуп алабыз же "коомдук DNS текчеси келди!"

Сурам шифрленген туташуу (чындыгында жооп ал аркылуу кайтарылат), аталган DNS-over-TLS жана DNS-over-HTTPS аркылуу серверге учкан жаңы режимдер менен иштөө алда канча кызыктуу. Тилекке каршы, алар кутучадан тышкары колдоого алынбайт (авторлор бул "дагы эле" деп эсептешет), бирок алардын ишин программалык камсыздооңузда (же сиздин аппараттык камсыздооңузда) уюштуруу кыйын эмес:

HTTPs аркылуу DNS (DoH)

Аты айтып тургандай, байланыш HTTPS каналы аркылуу ишке ашат, бул дегенди билдирет

  1. конуу пунктунун болушу (акыркы чекит) - ал жайгашкан https://cloudflare-dns.com/dns-queryжана
  2. суроо-талаптарды жөнөтүп, жооп ала турган кардар.

Сурамдар DNS Wireformat-да аныкталган болушу мүмкүн RFC1035 (POST жана GET HTTP ыкмаларын колдонуу менен жөнөтүлөт), же JSON форматында (GET HTTP ыкмасын колдонуу менен). Жеке мен үчүн HTTP сурамдары аркылуу DNS сурамдарын жасоо идеясы күтүүсүз көрүндү, бирок анда рационалдуу дан бар: мындай суроо-талап көптөгөн трафик чыпкалоо тутумдарынан өтөт, жоопторду талдоо абдан жөнөкөй, ал эми суроо-талаптарды түзүү андан да жөнөкөй. Тааныш китепканалар жана протоколдор коопсуздук үчүн жооптуу.

Түздөн-түз документациядан алынган сурамдардын мисалы:

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

DNS Wireformat форматында POST сурамы

$ 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

Ошол эле, бирок 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"
    }
  ]
}

Албетте, бир нече (эгер бар болсо) үй роутерлери ушундай DNS менен иштей алат, бирок бул колдоо эртең пайда болбойт дегенди билдирбейт - жана, кызыгы, бул жерде биз DNS менен иштөөнү биздин тиркемеде оңой эле ишке ашыра алабыз (мурункудай эле) Mozilla жасамакчы, Cloudflare серверлеринде гана).

TLS аркылуу DNS

Демейки боюнча, DNS сурамдары шифрлөөсүз жөнөтүлөт. TLS аркылуу DNS аларды коопсуз байланыш аркылуу жөнөтүүнүн бир жолу. Cloudflare белгиленгендей стандарттуу 853 портунда TLS аркылуу DNSти колдойт RFC7858. Бул үчүн cloudflare-dns.com хосту үчүн берилген сертификат колдонулат, TLS 1.2 жана TLS 1.3 колдоого алынат.

Байланыш түзүү жана протокол менен иштөө төмөнкүдөй болот:

  • DNS менен байланышты орнотуудан мурун кардар cloudflare-dns.com'дун TLS сертификатынын (SPKI деп аталган) base64 коддолгон SHA256 хэштерин сактайт.
  • DNS кардары cloudflare-dns.com:853 менен TCP байланышын орнотот
  • DNS кардары TLS кол алышуу процедурасын баштайт
  • TLS кол алышуу учурунда cloudflare-dns.com хосту TLS сертификатын көрсөтөт.
  • TLS туташуусу орнотулгандан кийин, DNS кардары коопсуз канал аркылуу DNS сурамдарын жөнөтө алат, бул тыңшоонун жана сурамдардын жана жооптордун жасалма болушунун алдын алат.
  • TLS туташуусу аркылуу жөнөтүлгөн бардык DNS сурамдары спецификацияга ылайык келиши керек TCP аркылуу DNS жөнөтүү.

TLS аркылуу DNS аркылуу суроо-талаптын мисалы:

$ 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

Бул параметр жергиликтүү тармактын же бир колдонуучунун муктаждыктарын тейлеген жергиликтүү DNS серверлери үчүн жакшыраак окшойт. Туура, стандартты колдоо абдан жакшы эмес, бирок үмүт кылалы!

Биз эмнени айтып жатканыбызды эки сөз менен түшүндүрөт

DNS аббревиатурасы Домендик аталыш кызматы дегенди билдирет (мындайча айтканда, "DNS кызматы" бир аз ашыкча; аббревиатурада "кызмат" деген сөз бар) жана жөнөкөй тапшырманы чечүү үчүн колдонулат - белгилүү бир хосттун аталышы кандай IP дарегин түшүнүү үчүн. Ар бир адам шилтемени басканда же браузердин дарек тилкесине даректи киргизген сайын (айталы, "https://habrahabr.ru/post/346430/"), адамдын компьютери барактын мазмунун алуу үчүн суроо-талапты кайсы серверге жөнөтүү керектигин аныктоого аракет кылып жатат. Habrahabr.ru учурда, DNS жоопунда веб-сервердин IP дареги көрсөтүлөт: 178.248.237.68, андан кийин браузер көрсөтүлгөн IP дареги бар сервер менен байланышууга аракет кылат.

Өз кезегинде DNS сервери “habrahabr.ru аттуу хосттун IP дареги кандай?” деген суроону алып, көрсөтүлгөн хост жөнүндө эч нерсе билбестигин аныктайт. Болбосо, ал дүйнөдөгү башка DNS серверлерине суроо берет жана этап-этабы менен берилген суроонун жообун табууга аракет кылат. Натыйжада, акыркы жоопту тапкандан кийин, табылган маалыматтар дагы эле күтүп жаткан кардарга жөнөтүлөт, ошондой эле ал DNS серверинин кэшинде сакталат, бул кийинки жолу ушул сыяктуу суроого тезирээк жооп берүүгө мүмкүндүк берет.

Жалпы көйгөй, биринчиден, DNS сурамынын маалыматтары ачык түрдө жөнөтүлөт (бул трафик агымына кирүү мүмкүнчүлүгү бар ар бир адамга DNS сурамдарын жана натыйжада жоопторду обочолонтууга, андан кийин аларды өз максаттары үчүн талдап чыгууга мүмкүндүк берет; бул мүмкүнчүлүк берет DNS кардары үчүн тактык менен жарнаманы максаттуу, жана бул абдан көп!). Экинчиден, кээ бир интернет-провайдерлер (биз манжаларды көрсөтпөйбүз, бирок эң кичинекейлери эмес) тигил же бул суралган баракчанын ордуна жарнаманы көрсөтүүгө ыкташат (ал өтө жөнөкөй ишке ашырылат: хосттун аталышына суроо үчүн көрсөтүлгөн IP даректин ордуна habranabr.ru кокус адамга ушундай жол менен провайдердин веб-серверинин дареги кайтарылып берилет, ал жерде жарнакты камтыган баракча тейленет). Үчүнчүдөн, бөгөттөлгөн веб-ресурстардын IP даректери жөнүндө туура DNS жоопторун алардын серверинин IP дареги менен алмаштыруу аркылуу айрым сайттарды бөгөттөө талаптарын аткаруу механизмин ишке ашырган Интернетке кирүү провайдерлери бар (натыйжада, мындай сайттар байкалаарлык татаалдашат) же чыпкалоону аткарган прокси сервериңиздин дарегине.

Бул жерде сиз веб-сайттын сүрөтүн коюшуңуз керек http://1.1.1.1/, бул кызматка байланышты сүрөттөө үчүн кызмат кылат. Авторлор, сыягы, өздөрүнүн DNS сапатына толук ишенишет (бирок, Cloudflareден башка нерсени күтүү кыйын):

Биз Cloudflare кызматын 1.1.1.1 жана 1.0.0.1 даректеринен тосуп алабыз же "коомдук DNS текчеси келди!"

Кызматтын жаратуучусу болгон Cloudflareди толугу менен түшүнсө болот: алар дүйнөдөгү эң популярдуу CDN тармактарынын бирин колдоо жана өнүктүрүү аркылуу нан табышат (анын функцияларына мазмунду бөлүштүрүү гана эмес, ошондой эле DNS зоналарын жайгаштыруу кирет) жана, алардын каалоосунан улам, ким көп билбейт, буларды үйрөт алар кимди билишпейт, ошого кайда баруу керек глобалдык тармакта көбүнчө сервердин даректерин бөгөттөөдөн жапа чегет ким экенин айтпайбыз - Ошентип, "кыйкырыктар, ышкырыктар жана скрипкалар" таасир этпеген DNS болушу компания үчүн алардын бизнесине азыраак зыян келтирет. Ал эми техникалык артыкчылыктар (кичинекей нерсе, бирок жагымдуу: атап айтканда, акысыз DNS Cloudflare кардарлары үчүн, компаниянын DNS серверлеринде жайгашкан ресурстардын DNS жазууларын жаңыртуу заматта болот) постто сүрөттөлгөн кызматты колдонууну ого бетер кызыктуу кылат. .

Сурамжылоого катталган колдонуучулар гана катыша алышат. Кирүү, өтүнөмүн.

Жаңы кызматты колдоносузбу?

  • Ооба, жөн гана аны OS жана/же роутерде көрсөтүү менен

  • Ооба, мен жаңы протоколдорду колдоном (HTTPS аркылуу DNS жана TLS аркылуу DNS)

  • Жок, менде учурдагы серверлер жетиштүү (бул коомдук провайдер: Google, Yandex ж.б.)

  • Жок, мен азыр эмнени колдонуп жатканымды да билбейм

  • Мен алардын алдында SSL туннели менен өзүмдүн рекурсивдүү DNSимди колдоном

693 колдонуучу добуш берди. 191 колдонуучу добуш берүүдөн баш тартты.

Source: www.habr.com

Комментарий кошуу