天天看點

公共DNS安全傳輸服務介紹(DoH/DoT)

作者:科技混兒

概述

公共DNS為廣大的網際網路使用者提供快速、穩定和安全的DNS解析。然而傳統的DNS查詢和應答采用UDP和TCP明文傳輸,存在網絡監聽、DNS劫持、中間裝置幹擾的風險:

  • 網絡監聽風險:即便使用者采用HTTPs加密的方式通路站點,DNS查詢應答并沒有采用加密傳輸
  • DNS劫持:傳統DNS應答資料會被篡改,使用者的通路會被路由到釣魚網站和惡意站點
  • 中間裝置幹擾:主要是一些防火牆對DNS查詢的幹擾,基于域名的過濾,還有大包MTU分片的影響等

為了應對以上挑戰,國内多個提供公共DNS服務的廠商,建立DoH(RFC8484)和DoT(RFC7858) 标準對外提供DNS的安全傳輸服務, 支援 DNS over HTTP(s), DNS Json API, 和DNS over TLS三種安全傳輸模式。DNS的安全傳輸服務可以适用于移動應用程式、浏覽器、作業系統、物聯網裝置和網關路由器等多個場景。通過傳輸加密的方式發送DNS查詢,加強了使用者通路網際網路的安全性、解析穩定和隐私保護。

除了隐私加密以外,DNS安全傳輸服務采用TCP和HTTP連接配接使用者端和DNS伺服器,一方面可以服務精準的基于位置的DNS解析和流量排程,另一方面基于DNS端到端的連接配接特性,DNS的動态變更可以實作秒級端到端生效。

1. DNS over HTTPs(DoH)

通過RFC 8484指定的經過TLS加密的HTTP連接配接提供DNS解析

DNS over HTTPs(DoH)的URI接口 :(僅提供TLS API)

  • https://dns.alidns.com/dns-query?
  • https://alidns_ip/dns-query?
注意:其中alidns_ip是dns.alidns.com 的A和AAAA記錄,可以是以下四個位址之一 :223.5.5.5,223.6.6.6,2400:3200::1, 2400:3200:baba::1.

請求方式: GET

請求參數 :

參數 類型 描述 示例 預設值
dns string base64url編碼的DNS請求内容 dig alibaba.comd A, dns=uGkBAAABAAAAAAAAB2FsaWJhYmEDY29tAAABAAE 必須包含

請求示例 : https://dns.alidns.com/dns-query?dns=uGkBAAABAAAAAAAAB2FsaWJhYmEDY29tAAABAAE

傳回的DNS二進制資料 :

b869 8180 0001 0004 0000 0001 0761 6c69
6261 6261 0363 6f6d 0000 0100 0107 616c
6962 6162 6103 636f 6d00 0001 0001 0000
012c 0004 6a0b d097 0761 6c69 6261 6261
0363 6f6d 0000 0100 0100 0001 2c00 04cb
77d7 5207 616c 6962 6162 6103 636f 6d00
0001 0001 0000 012c 0004 6a0b df65 0761
6c69 6261 6261 0363 6f6d 0000 0100 0100
0001 2c00 04cb 7781 6d00 0029 1000 0000
0000 000c 0008 0008 0001 2018 6a0b 22e6           

注:根據RFC8484的定義,DoH服務适用于兩類場景:一種是DNS HTTPS隧道,一種是應用層通路DNS資料。DNS wireformat二進制格式對應用不夠友好,比如要處理DNS名字壓縮機制等。DNS Json的API是為了提供給應用更友好的接入方式。

2. DNS JSON API

DNS JSON API的URL 接口 (提供TLS和非TLS API)

  • https://dns.alidns.com/resolve?
  • https://alidns_ip/resolve?
  • http://dns.alidns.com/resolve?
  • http://alidns_ip/resolve?
注意:其中alidns_ip是dns.alidns.com 的A和AAAA記錄,可以是以下四個位址之一 :223.5.5.5,223.6.6.6,2400:3200::1, 2400:3200:baba::1.

請求方式 : GET

請求參數 :

參數 類型 描述 示例 使用方法和預設值
name string 請求域名 name=www.taobao.com. 必選,無預設值
type number 請求類型 type=1 可選,1
edns_client_subnet IP ECS IP edns_client_subnet=1.2.3.4/24 DNS代理使用,普通用戶端不适用

**

關于edns_client_subnet參數 :

edns_client_subnet是為了支援DNS ECS功能(RFC7871),将使用者的子網資訊傳遞給權威DNS,做更精确的DNS解析和流量排程。其中掩碼越長位址資訊越精确,掩碼越短使用者隐私效果越好。建議使用"/24" 掩碼長度

注:該參數是特地為DNS代理(proxy)使用DNS JSON API場景設計,即使用者發送DNS查詢給DNS代理,DNS代理通過該參數攜帶使用者的子網資訊傳遞給阿裡公共DNS,最後傳遞到權威DNS伺服器。

例如edns_client_subnet=1.2.3.4/24,權威伺服器會收到基于1.2.3.0/24位址字首資訊來幫助使用者選擇DNS鍊路。

關于type參數支援類型:

記錄類型 ID 意義 示例(以 taobao.com , www.taobao.com 為例)
A 1 IPv4 位址 101.37.183.171
NS 2 NS 記錄 ns1.taobao.com.
CNAME 5 域名 CNAME 記錄 www.taobao.com.danuoyi.tbcache.com.
SOA 6 ZONE 的 SOA 記錄 ns4.taobao.com. hostmaster.alibabadns.com. 2018011109 3600 1200 3600 360
TXT 16 TXT 記錄 "v=spf1 include:spf1.staff.mail.aliyun.com -all"
AAAA 28 IPv6 位址 240e:e1:f300:1:3::3fa

請求示例:

http://dns.alidns.com/resolve?name=www.taobao.com.&type=1

傳回示例:

{
    "Status":0,  
    "TC":false,
    "RD":true,
    "RA":true,
    "AD":false,
    "CD":false,
    "Question":{       // 請求段
        "name":"www.taobao.com.",
        "type":1
    },
    "Answer":[         // 應答段
        {
            "name":"www.taobao.com.",
            "TTL":45,
            "type":5,
            "data":"www.taobao.com.danuoyi.tbcache.com."
        },
        {
            "name":"www.taobao.com.danuoyi.tbcache.com.",
            "TTL":45,
            "type":1,
            "data":"47.246.24.234"
        },
        {
            "name":"www.taobao.com.danuoyi.tbcache.com.",
            "TTL":45,
            "type":1,
            "data":"47.246.24.233"
        }
    ]
    //"Authority" 權威段, 如果有資料與Answer字段一緻 
    //"Additional" 附加段, 如果有資料與Answer字段一緻
    // 可選 "edns_client_subnet":"1.2.3.4/24"  
}           

注:使用者可以在用戶端應用或APP中調用DoH和DNS JSON API解析DNS 。

3. DNS over TLS (DoT)

通過RFC 7858指定的經過TLS加密的TCP連接配接提供DNS解析。提供兩種模式接入:域名方式和IP方式。基本流程是:

  1. 終端裝置配置DoT的解析伺服器dns.alidns.com 或alidns_ip
  2. 如果配置的是alidns.com,用戶端先解析alidns.com獲得位址alidns_ip
  3. 獲得DoT解析伺服器IP位址之後,終端裝置再建立與DoT解析伺服器在端口853 的TCP連接配接
  4. 經過TLS握手協商,終端裝置與DoT解析伺服器建立TLS連接配接
  5. 通過該TLS連接配接,終端裝置可以發送DNS查詢到遠端DoT解析伺服器

對使用安卓手機的使用者來說,可以設定在手機設定界面設定阿裡公共DNS的域名和位址來擷取DNS的DoT安全傳輸服務。

公共DNS安全傳輸服務介紹(DoH/DoT)
公共DNS安全傳輸服務介紹(DoH/DoT)

繼續閱讀