請求可以採用 DNS Wireformat 格式中定義的 RFC1035 (使用 POST 和 GET HTTP 方法發送),或以 JSON 格式(使用 GET HTTP 方法發送)。 對於我個人來說,通過 HTTP 請求發出 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 的響應將包含 Web 服務器 IP 地址的指示:178.248.237.68,然後瀏覽器將嘗試聯繫具有指定 IP 地址的服務器。
反過來,DNS 服務器在收到請求“名為 habrahabr.ru 的主機的 IP 地址是什麼?”後,會確定它是否知道有關指定主機的任何信息。 如果沒有,它會向世界上的其他 DNS 服務器發出請求,並逐步嘗試找出所提出問題的答案。 因此,在找到最終答案後,找到的數據會發送到仍在等待的客戶端,並且存儲在 DNS 服務器本身的緩存中,這將使您下次更快地回答類似的問題。
一個常見的問題是,首先,DNS 查詢數據以明文形式傳輸(這使得有權訪問流量的任何人都能夠隔離 DNS 查詢和他們收到的響應,然後根據自己的目的對其進行解析;這使得能夠為DNS 客戶端準確定位廣告,這是相當多的!)。 其次,一些 ISP(我們不會指責,但不是最小的)傾向於顯示廣告而不是一個或另一個請求的頁面(實現起來非常簡單:而不是由 habranabr.ru 查詢指定的 IP 地址)主機名,隨機人因此,返回提供商的網絡服務器的地址,其中提供包含廣告的頁面)。 第三,有些互聯網接入提供商實施了一種機制,通過將有關被阻止 Web 資源的 IP 地址的正確 DNS 響應替換為包含存根頁面的服務器的 IP 地址來滿足阻止單個站點的要求(因此,訪問此類網站明顯更複雜),或執行過濾的代理服務器的地址。
這應該是網站上的圖片。 http://1.1.1.1/,用於描述與服務的連接。 作者似乎對其 DNS 的質量非常有信心(但是,很難對 Cloudflare 抱有任何其他期望):
人們可以充分理解該服務的創建者 Cloudflare:他們通過維護和開發世界上最受歡迎的 CDN 網絡之一(其功能不僅包括分發內容,還包括託管 DNS 區域)來謀生,並且,由於那些人的願望, 誰不精通,教那些 他們不認識誰, 對此 去哪兒 在全球網絡中,經常會遭受服務器地址被封鎖的困擾 我們先不說是誰 - 因此,對於公司來說,擁有一個不受“喊叫、口哨和塗鴉”影響的 DNS 意味著對其業務的損害較小。 技術優勢(雖然微不足道,但很好:特別是對於免費 DNS Cloudflare 的客戶來說,可以即時更新公司 DNS 服務器上託管資源的 DNS 記錄)使得使用帖子中描述的服務變得更加有趣。