在 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。
時間表
日期 | 關閉步驟 |
---|---|
dns.google.com/experimental 會重新導向至 dns.google/dns-query – DONE |
|
dns.google.com 會解析為 Google 公用 DNS anycast IP 位址 – DONE |
|
2019-09-24 | dns.google.com 的舊 IP 位址會重新導向至 dns.google – DONE |
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 應用程式不會受到影響。如要與 Google DoH 搭配使用,使用
/experimental
的應用程式必須至少支援下列其中一項功能:RFC 8484 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/experimental
或 https://8.8.8.8/resolve
做為 DoH 網址的基礎;這些會傳回 HTTP 301 重新導向至 https://dns.google/dns-query
和 https://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 而予以忽略,仍然正常運作。