遷移至任一傳播和 RFC 8484 DoH

在 dns.google 網域和 Google 公用 DNS 廣為人知的任一傳播 IP 位址推出 DoH 的過程中,使用其他 IP 位址在 dns.google.com 網域上的 Beta 版 DoH 服務現已淘汰,日後將停用。

RFC 8484 API 的「實驗性」版本也已淘汰,但不支援 dns.google/experimental,且 dns.google/experimental 會遷移至 dns.google/dns-query。

時間表

日期 關閉步驟
2019-07-23 2019-08-01 dns.google.com/experimental 會重新導向至 dns.google/dns-queryDONE
2019-08-05 2019-08-21 dns.google.com 會解析為 Google 公用 DNS anycast IP 位址DONE
2019-09-24 dns.google.com 的舊 IP 位址會重新導向至 dns.googleDONE
2020-06-23 dns.google.com 會重新導向至 dns.google

這份時程的相關異動會在這裡更新,並發布至 public-dns-announce。訂閱該份低量郵寄清單,即可查看最新資訊。

2019 年 8 月 1 日,星期四

針對 https://dns.google.com/experimental 的要求,HTTP 301 會重新導向至 https://dns.google/dns-query

/resolve 使用 JSON API 的 DoH 應用程式不會受到影響。

2019 年 8 月 21 日,星期三

dns.google.com 會解析為 Google 公用 DNS Anycast IP 位址

對大部分的 DoH 應用程式來說,這是透明的做法,無須進行任何變更。

2019 年 9 月 24 日,星期二

對先前的 dns.google.com IP 位址執行 DoH 查詢時,HTTP 301 會重新導向至 https://dns.google/

這可能會影響使用 RFC 8484 或 JSON API 的 DoH 應用程式。

如果應用程式將 DoH 要求傳送至硬式編碼、可設定,或永久快取的 IP 位址,則必須支援以下兩者之一:

2020 年 6 月 23 日,星期二

透過任意傳播 IP 位址對 dns.google.com 進行 DoH 查詢時,HTTP 301 會重新導向至 dns.google。

這可能會影響使用 RFC 8484 或 JSON API 的 DoH 應用程式。

如要使用 Google DoH,應用程式必須至少支援下列其中一項功能:

DoH 用戶端相關異動

追蹤 HTTP 重新導向

DoH 伺服器只是處理 DNS 查詢的 HTTP 伺服器,因此,可能會傳回 HTTP 重新導向 (代碼 301、302、307 或 308),而 DoH 用戶端應跟其他 HTTP 用戶端一樣追蹤這些重新導向。

開發人員可以檢查 HTTP 重新導向支援,使用 https://8.8.8.8/experimentalhttps://8.8.8.8/resolve 做為 DoH 網址的基礎;這些會傳回 HTTP 301 重新導向至 https://dns.google/dns-queryhttps://dns.google/resolve (保留所有 GET 參數) 的機制。

將 dns.google 網域用於 Google DoH

DoH 應用程式應使用 dns.google,而非 dns.google.com。無論使用 RFC 8484 或 JSON API,凡是具有硬式編碼或設定 DoH 解析器清單的 DoH 應用程式,都必須將任何網址或 URI 範本中的 dns.google.com 替換為 dns.google。

使用 Google 公用 DNS Anycast IP 位址

如果 DoH 應用程式將 DoH 要求傳送至硬式編碼或設定的 IP 位址清單 (即使是啟動程序),也必須將 dns.google.com 的舊位址替換為 Google 公用 DNS Anycast IP 位址

用於設定的 URI 範本

DoH 應用程式應提供端點的設定,建議您使用 URI 範本進行這項操作。完整設定的 DoH 應用程式開發人員應通知使用者新網址 (URI 範本:https://dns.google/dns-query{?dns})。

使用 https://dns.google/dns-query 執行 RFC 8484 DoH

如果 DoH 應用程式採用硬式編碼或已設定的 DoH 解析器清單,就必須將網際網路草稿 DoH API 的 https://dns.google.com/experimental 網址替換成 https://dns.google/dns-query,並確認完全符合 RFC 8484 標準。

/experimental API (僅適用於 dns.google.com) 可接受使用非網頁安全 Base64 編碼的查詢,以及遭 /dns-query API 拒絕的 application/dns-udpwireformat 內容類型 (僅適用於 dns.google)。我們會在以下兩個部分說明這些差異。

針對 GET dns 參數使用 Base64Url 編碼

在 GET 要求中為 dns 參數使用網路安全 Base64Url 編碼,將 Base64 (+ /) 替換成 (- _) 並移除邊框間距 (=)。

接受並傳送 application/dns-message

請在「Accept」標頭 (以及 Content-Type 標頭中為 RFC 8484 POST) 使用 application/dns-message,並將其類型做為回應的 Content-Type。

對 POST 使用舊的 Content-Type 會失敗,並導致 415 個不支援的媒體類型。

應用程式在「接受」標頭中使用舊版 Content-Type,會收到含有 Content-Type application/dns-message 的回應。接受這些 API 的 DoH 應用程式,但避免因為非預期的 Content-Type 而予以忽略,仍然正常運作。