Cloudflare компани
- 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/XNUMX) санамсаргүй байдлаар сонгоогүй гэж мэдэгджээ: "Дөрвөн нэгж" -ийг жилийн өөр ямар өдөр танилцуулах вэ?
Хабрын үзэгчид техникийн мэдлэгтэй байдаг тул уламжлалт хэсэг "Яагаад танд DNS хэрэгтэй байна вэ?" Би үүнийг нийтлэлийн төгсгөлд оруулах болно, гэхдээ энд би илүү практик хэрэгтэй зүйлсийг дурдах болно:
Шинэ үйлчилгээг хэрхэн ашиглах вэ?
Хамгийн энгийн зүйл бол дээрх DNS серверийн хаягуудыг өөрийн DNS клиент дээрээ (эсвэл таны ашигладаг локал DNS серверийн тохиргоонд дээд талынх) зааж өгөх явдал юм. Ердийн утгыг солих нь утга учиртай юу
Хүсэлт нь шифрлэгдсэн холболтоор сервер рүү нисдэг (үнэндээ хариу нь түүгээр буцаж ирдэг), дурдсан DNS-over-TLS болон DNS-over-HTTPS зэрэг шинэ горимуудтай ажиллах нь илүү сонирхолтой юм. Харамсалтай нь тэдгээрийг "хайрцагнаас гадуур" дэмждэггүй (зохиогчид үүнийг "одоохондоо" гэж үздэг), гэхдээ тэдний ажлыг програм хангамж дээрээ (эсвэл бүр техник хангамж дээрээ) зохион байгуулах нь тийм ч хэцүү биш юм:
HTTP дээр DNS (DoH)
Нэрнээс нь харахад харилцаа холбоо HTTPS сувгаар явагддаг бөгөөд энэ нь гэсэн үг юм
- буух цэг (төгсгөлийн цэг) байгаа эсэх - энэ нь хаяг дээр байрладаг
https://cloudflare-dns.com/dns-query болон - хүсэлт илгээж, хариу хүлээн авах боломжтой үйлчлүүлэгч.
Хүсэлтүүд нь тодорхойлогдсон DNS Wireformat форматтай байж болно
Баримт бичгээс шууд жишээ хүсэх:
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-тэй ажиллахыг програмдаа бүрэн хэрэгжүүлж чадна (хуучин шиг).
TLS дээр DNS
Анхдагч байдлаар, DNS асуулга нь шифрлэлтгүйгээр дамждаг. TLS дээрх DNS нь тэдгээрийг аюулгүй холболтоор илгээх арга юм. Cloudflare стандартын дагуу 853 стандарт порт дээр TLS дээр DNS дэмждэг
Холболт үүсгэж, протоколын дагуу ажиллах нь дараах байдалтай байна.
- DNS холболт үүсгэхийн өмнө үйлчлүүлэгч cloudflare-dns.com-ийн TLS гэрчилгээний SHA64 хэшийг (SPKI гэж нэрлэдэг) base256 кодчилолд хадгалдаг.
- 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 хаягтай болохыг ойлгоход ашигладаг. Хүн холбоос дээр дарах, эсвэл хөтчийн хаягийн мөрөнд хаяг оруулах болгонд ("
Хариуд нь DNS сервер нь "habrahabr.ru нэртэй хостын IP хаяг гэж юу вэ?" гэсэн хүсэлтийг хүлээн авснаар тухайн хостын талаар юу ч мэддэг эсэхийг тодорхойлдог. Үгүй бол энэ нь дэлхийн бусад DNS серверүүд рүү хүсэлт гаргаж, асуусан асуултын хариултыг алхам алхмаар олохыг хичээдэг. Үүний үр дүнд эцсийн хариултыг олсны дараа олсон өгөгдлийг хүлээж байгаа үйлчлүүлэгч рүү илгээхээс гадна DNS серверийн кэшэд хадгалагдах бөгөөд энэ нь дараагийн удаа ижил төстэй асуултанд илүү хурдан хариулах боломжийг олгоно.
Нийтлэг асуудал бол эхлээд DNS асуулгын өгөгдлийг тодорхой байдлаар дамжуулдаг (энэ нь замын хөдөлгөөний урсгалд хандах боломжтой хэн бүхэнд DNS асуулга болон тэдний хүлээн авсан хариултыг тусгаарлаж, дараа нь тэдгээрийг өөрийн зорилгоор задлан шинжлэх боломжийг олгодог; энэ нь DNS үйлчлүүлэгчийн хувьд зар сурталчилгааг нарийвчлалтай чиглүүлэх чадвар нь маш их юм!). Хоёрдугаарт, зарим ISP-үүд (бид хуруугаараа хуруугаараа заадаггүй, гэхдээ хамгийн жижиг нь биш) нэг эсвэл өөр хүссэн хуудасны оронд зар харуулах хандлагатай байдаг (энэ нь маш энгийн байдлаар хэрэгждэг: habranabr.ru-ийн асуулгад заасан IP хаягийн оронд). хостын нэр, санамсаргүй хүн Тиймээс, зар сурталчилгааг агуулсан хуудас үйлчлэх үйлчилгээ үзүүлэгчийн вэб серверийн хаягийг буцаана). Гуравдугаарт, хаагдсан вэб нөөцийн IP хаягийн талаарх зөв DNS хариултыг stub хуудсуудыг агуулсан серверийнхээ IP хаягаар солих замаар бие даасан сайтуудыг хаах шаардлагыг биелүүлэх механизмыг хэрэгжүүлдэг интернетийн үйлчилгээ үзүүлэгчид байдаг (үр дүнд нь Ийм сайтууд нь мэдэгдэхүйц илүү төвөгтэй) эсвэл шүүлтүүрийг гүйцэтгэдэг прокси серверийн хаяг руу илгээнэ үү.
Энэ нь магадгүй сайтаас авсан зураг байх ёстой.
Үйлчилгээг бүтээгч Cloudflare-ийг бүрэн ойлгож болно: тэд дэлхийн хамгийн алдартай CDN сүлжээнүүдийн нэгийг (зөвхөн контент түгээхээс гадна DNS бүсүүдийг байршуулах функцийг агуулдаг) хадгалж, хөгжүүлснээр хоолоо олдог. тэдний хүсэл, хэн сайн мэдэхгүй байна, тэдэнд заа тэд хэнийг мэдэхгүй, үүнд хаашаа явах дэлхийн сүлжээнд серверийнхээ хаягийг хааснаас болж ихэвчлэн зовдог хэнийг нь хэлэхээ больё - Тиймээс компанийн хувьд "хашгирах, шүгэлдэх, сараачлах" зэрэгт өртөөгүй DNS-тэй байх нь тэдний бизнест хохирол багатай гэсэн үг юм. Техникийн давуу талууд (ялангуяа, гэхдээ сайхан: DNS Cloudflare үнэгүй үйлчлүүлэгчдийн хувьд компанийн DNS сервер дээр байрлуулсан нөөцийн DNS бүртгэлийг даруй шинэчлэх болно) нь нийтлэлд тайлбарласан үйлчилгээг ашиглахыг илүү сонирхолтой болгодог.
Зөвхөн бүртгэлтэй хэрэглэгчид санал асуулгад оролцох боломжтой.
Та шинэ үйлчилгээг ашиглах уу?
-
Тийм ээ, үүнийг зүгээр л үйлдлийн систем болон / эсвэл чиглүүлэгч дээр зааж өгснөөр
-
Тийм ээ, би шинэ протоколуудыг ашиглах болно (HTTPS дээр DNS, TLS дээр DNS)
-
Үгүй ээ, надад хангалттай серверүүд байгаа (энэ нь нийтийн үйлчилгээ үзүүлэгч: Google, Yandex гэх мэт).
-
Үгүй ээ, би яг одоо юу хэрэглэж байгаагаа ч мэдэхгүй байна
-
Би тэдэнд SSL туннел бүхий рекурсив DNS-ээ ашигладаг
693 хэрэглэгч санал өгсөн. 191 хэрэглэгч түдгэлзсэн.
Эх сурвалж: www.habr.com