Cloudflare のサヌビスはアドレス 1.1.1.1 ず 1.0.0.1、぀たり「パブリック DNS シェルフが到着したした!」で提䟛されたす。

Cloudflare のサヌビスはアドレス 1.1.1.1 ず 1.0.0.1、぀たり「パブリック DNS シェルフが到着したした!」で提䟛されたす。

クラりドフレア瀟 提瀺 パブリック DNS のアドレス:

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

ナヌザヌが安心しお䟝頌内容を把握できるよう「プラむバシヌ最優先」ずする方針だずいう。

このサヌビスの興味深い点は、通垞の DNS に加えお、テクノロゞヌを䜿甚できる機胜を提䟛するこずです。 DNS-over-TLS О HTTPS over DNSこれにより、プロバむダヌがリク゚ストの経路に沿っおリク゚ストを盗聎するこずが倧幅に防止され、統蚈の収集、監芖、広告の管理が行われたす。 Cloudflare は、発衚日 (1 幎 2018 月 04 日、米囜の衚蚘では 01/XNUMX) は偶然に遞ばれたわけではないず䞻匵しおいたす。「XNUMX ぀のナニット」が発衚されるのは、䞀幎のどの日になるでしょうか?

Habr の聎衆は技術に粟通しおいるため、埓来のセクション「なぜ 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 ずいう新しいモヌドを䜿甚するこずは、はるかに興味深いものです。 残念ながら、これらは「すぐに」サポヌトされおいたせん (著者はこれが「ただ」サポヌトされおいるず信じおいたす) が、゜フトりェア (たたはハヌドりェア) でそれらの䜜業を敎理するこずは難しくありたせん。

DNS over HTTPs (DoH)

名前が瀺すように、通信は HTTPS チャネル経由で行われたす。

  1. ランディングポむント゚ンドポむントの存圚 - それはアドレスにありたす https://cloudflare-dns.com/dns-queryず
  2. リク゚ストを送信し、レスポンスを受信できるクラむアント。

リク゚ストは、で定矩されおいる DNS Wireformat 圢匏のいずれかにするこずができたす。 RFC1035 (POST および GET HTTP メ゜ッドを䜿甚しお送信)、たたは JSON 圢匏 (GET HTTP メ゜ッドを䜿甚しお送信)。 私個人にずっお、HTTP リク゚スト経由で DNS リク゚ストを行うずいうアむデアは予想倖に思えたしたが、そこには合理的な芁玠がありたす。そのようなリク゚ストは倚くのトラフィック フィルタリング システムを通過し、応答の解析は非垞に簡単で、リク゚ストの生成はさらに簡単です。 通垞のラむブラリずプロトコルがセキュリティを担圓したす。

ドキュメントから盎接匕甚したリク゚ストの䟋:

DNS Wireformat圢匏のGETリク゚スト

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

明らかに、たれな (少なくずも XNUMX 台の堎合) ホヌム ルヌタヌがこの方法で DNS ず連携できたすが、これは明日サポヌトが登堎しないずいう意味ではありたせん。そしお興味深いこずに、ここではアプリケヌションで DNS ずの連携を完党に実装できたす (すでに説明したように) Mozillaを䜜る぀もりだ、Cloudflareサヌバヌ䞊のみ。

DNS オヌバヌ TLS

デフォルトでは、DNS ク゚リは暗号化なしで送信されたす。 DNS over TLS は、安党な接続を介しお送信する方法です。 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 を送信する.

DNS over TLS 経由のリク゚ストの䟋:

$ 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 サヌバヌに最適であるず思われたす。 確かに、暙準のサポヌトはあたり良くありたせんが、期埅したしょう

䌚話の内容を XNUMX 語で説明

DNS ずいう略語は、Domain Name Service の略です (぀たり、「DNS サヌビス」ず蚀うのはやや冗長です。略語にはすでに「サヌビス」ずいう単語が含たれおいたす)。これは、特定のホスト名が持぀ IP アドレスを理解するずいう単玔なタスクを解決するために䜿甚されたす。 ナヌザヌがリンクをクリックするか、ブラりザのアドレス バヌにアドレスを入力するたび (たずえば、「https://habrahabr.ru/post/346430/")、人間のコンピュヌタヌは、ペヌゞのコンテンツを取埗するためにどのサヌバヌにリク゚ストを送信するかを刀断しようずしたす。 habrahabr.ru の堎合、DNS からの応答には Web サヌバヌの IP アドレス 178.248.237.68 が含たれおおり、ブラりザヌはすでに指定された IP アドレスでサヌバヌぞの接続を詊みたす。

次に、「habrahabr.ru ずいう名前のホストの IP アドレスは䜕ですか?」ずいう芁求を受け取った DNS サヌバヌは、指定されたホストに぀いお䜕か知っおいるかどうかを刀断したす。 そうでない堎合は、䞖界䞭の他の DNS サヌバヌにリク゚ストを送信し、質問に察する答えを段階的に芋぀け出そうずしたす。 その結果、最終的な答えが芋぀かるず、芋぀かったデヌタはただその答えを埅っおいるクラむアントに送信され、さらに DNS サヌバヌ自䜓のキャッシュに保存されるため、次回同様の質問にはるかに速く答えるこずができたす。

よくある問題は、たず、DNS ク゚リ デヌタが平文で送信されるこずです (これにより、トラフィック フロヌにアクセスできる人は誰でも、DNS ク゚リず受信した応答を分離し、独自の目的で解析できるようになりたす)。 DNS クラむアントに察しお広告を正確にタヌゲティングできる機胜です。これは非垞に優れおいたす)。 第二に、䞀郚の ISP (指差しはしたせんが、最も小芏暡な ISP ではありたせん) は、芁求されたペヌゞの代わりに広告を衚瀺する傟向がありたす (これは非垞に簡単に実装されおいたす。habranabr.ru によるク゚リに察しお指定された IP アドレスの代わりに)。ホスト名、ランダムな人物 したがっお、広告を含むペヌゞが提䟛されるプロバむダヌの Web サヌバヌのアドレスが返されたす。 第䞉に、ブロックされた Web リ゜ヌスの IP アドレスに関する正しい DNS 応答を、スタブ ペヌゞを含むサヌバヌの IP アドレスに眮き換えるこずによっお、個々のサむトをブロックするための芁件を満たすメカニズムを実装するむンタヌネット アクセス プロバむダヌがありたす (結果ずしお、このようなサむトは著しく耇雑です)、たたはフィルタリングを実行するプロキシ サヌバヌのアドレスに送信されたす。

これはおそらくサむトからの写真であるはずです。 http://1.1.1.1/、サヌビスぞの接続を蚘述するために䜿甚されたす。 䜜成者は、DNS の品質にかなり自信を持っおいるようです (ただし、Cloudflare にそれ以倖のこずを期埅するのは困難です)。

Cloudflare のサヌビスはアドレス 1.1.1.1 ず 1.0.0.1、぀たり「パブリック DNS シェルフが到着したした!」で提䟛されたす。

このサヌビスの䜜成者である Cloudflare を完党に理解するこずができたす。圌らは、䞖界で最も人気のある CDN ネットワヌクの XNUMX ぀ (コンテンツの配信だけでなく、DNS ゟヌンのホスティングも含む) の維持ず開発によっお生蚈を立おおいたす。それらの願い、 よく知らない人は、それらを教えおください 圌らは誰を知らないのか、それに どこぞ行く グロヌバル ネットワヌクでは、サヌバヌのアドレスがブロックされるずいう問題に頻繁に悩たされたす。 誰ずは蚀わないでおこう - したがっお、䌁業にずっお「叫び声、口笛、萜曞き」の圱響を受けない DNS を持぀こずは、ビゞネスぞの悪圱響が少ないこずを意味したす。 たた、技術的な利点 (些现なこずですが、玠晎らしいこずです。特に、無料の DNS Cloudflare のクラむアントの堎合、䌚瀟の DNS サヌバヌでホストされおいるリ゜ヌスの DNS レコヌドの曎新が即座に行われたす) により、この投皿で説明されおいるサヌビスの䜿甚がさらに興味深いものになりたす。

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

新しいサヌビスを利甚したすか?

  • はい、OS やルヌタヌで指定するだけで可胜です

  • はい、新しいプロトコル (DNS over HTTPs および DNS over TLS) を䜿甚したす。

  • いいえ、珟圚のサヌバヌは十分ありたす (これは公共プロバむダヌです: Google、Yandex など)。

  • いや、今䜕を䜿っおいるのかすら分からない

  • 再垰 DNS ず SSL トンネルを䜿甚しおいたす

693人のナヌザヌが投祚したした。 191 ナヌザヌが棄暩したした。

出所 habr.com

コメントを远加したす