DNS over HTTPS 配置指南:瀏覽器、Windows 與 macOS 的 DoH 設定

部落格 / IP 與隱私

DNS over HTTPS 配置指南:瀏覽器、Windows 與 macOS 的 DoH 設定

DNS over HTTPS(DoH)把域名查詢裝進 HTTPS 請求裡發給解析伺服器,路上的裝置看不到、也改不了你查了哪個域名。瀏覽器裡開啟一個開關就能用;想讓整臺電腦都走 DoH,Windows 11 有系統設定,macOS 要裝一個描述檔案。配完以後,到 cdnping 的 IP 與環境檢測 看一下 DNS 洩漏結果,就能確認它是否真的生效。

DoH 能防什麼,防不了什麼

傳統 DNS 走 UDP 53 埠,明文傳輸。同一個網路裡的路由器、運營商裝置都能看到查詢內容,也能偽造應答,也就是常說的 DNS 劫持和汙染。DoH 把查詢放進 443 埠的 HTTPS 連線,帶來三點變化:

  • 查詢內容加密,中間裝置看不到你查的域名;
  • 應答受 TLS 保護,中途無法篡改;
  • 解析伺服器由你指定,不再預設使用 DHCP 下發的那一個。

下面幾種常見誤解,容易讓人高估 DoH 的效果:

誤解實際情況
開了 DoH 就匿名了目標網站依然看得到你的出口 IP,DoH 只管解析這一步
別人看不到我訪問了哪個網站TLS 握手裡的 SNI 通常仍是明文,連線的目標 IP 也是可見的
解析伺服器不知道我查了什麼它全都知道。DoH 只是把信任從運營商轉給了你選的 DoH 服務商
瀏覽器開了,整臺電腦都安全瀏覽器的 DoH 只管瀏覽器,終端、IDE、命令列工具仍走系統 DNS
越遠的公共 DNS 越好國內站點的 CDN 按解析器位置排程,海外解析器可能把你分到較遠的節點

最後一條對國內開發者影響最直接。Cloudflare 公開說明 1.1.1.1 不向權威伺服器傳送 EDNS Client Subnet(ECS),國內 CDN 只能按解析器出口的位置來判斷你在哪,結果可能是訪問國內站點反而變慢。所以選 DoH 服務商時,要先想清楚自己主要訪問哪些站點。

常用的公共 DoH 地址有哪些

服務商DoH 模板地址對應 IP(系統級配置時需要)
阿里公共 DNShttps://dns.alidns.com/dns-query223.5.5.5、223.6.6.6
騰訊 DNSPodhttps://doh.pub/dns-query1.12.12.12、120.53.53.53
Cloudflarehttps://cloudflare-dns.com/dns-query1.1.1.1、1.0.0.1
Googlehttps://dns.google/dns-query8.8.8.8、8.8.4.4

阿里也接受 https://223.5.5.5/dns-query 這種直接寫 IP 的形式。用 IP 形式的好處是,連線 DoH 伺服器本身不需要先做一次明文解析。

配置之前,可以先用 curl 確認本機能連通這些 DoH 服務(curl 7.62 及以上支援 --doh-url):

# 用指定的 DoH 服務解析域名,再發起請求;成功會返回 HTTP 狀態行
curl --doh-url https://dns.alidns.com/dns-query -sI https://cdnping.org | head -1
curl --doh-url https://cloudflare-dns.com/dns-query -sI https://cdnping.org | head -1

# 檢視 Cloudflare 的 JSON 格式應答,便於對比解析結果
curl -s -H 'accept: application/dns-json' \
  'https://cloudflare-dns.com/dns-query?name=cdnping.org&type=A'

某個地址超時或失敗,就說明你當前的網路到它不通,換一個再試,不要硬配。

Chrome、Edge、Firefox 怎麼開啟 DoH

瀏覽器級 DoH 改起來最快,也最容易撤銷,適合先試一試。

Chrome

  1. 位址列開啟 chrome://settings/security。
  2. 在“高階”裡找到“使用安全 DNS”,開啟開關。
  3. 選擇“自定義”,填入模板地址,例如 https://dns.alidns.com/dns-query。

如果開關是灰色、提示“由組織管理”,說明裝置裝了企業策略,或者 Chrome 檢測到了家長控制等環境。這種情況應當聯絡管理員,不要自己去繞。

Edge

  1. 開啟 edge://settings/privacy,在“安全性”部分找到“使用安全的 DNS 指定如何查詢網站的網路地址”。
  2. 開啟開關,選擇“選擇服務提供商”。
  3. 從下拉選單裡選,或者直接輸入模板地址。

不同版本的 Edge 選單名稱略有差別,在設定頁頂部搜尋“DNS”最快。

Firefox

  1. 開啟 about:preferences#privacy,滾動到“DNS over HTTPS”。
  2. 有三檔:預設保護、增強保護、最大保護。
    • 增強保護:DoH 失敗時回退到系統 DNS;
    • 最大保護:只走 DoH,失敗就報錯,不回退。
  3. 在“選擇提供商”裡選“自定義”,填入模板地址。

想要排查得乾淨,可以選“最大保護”,這樣任何一次查詢都不會悄悄回退到明文。日常使用選“增強保護”就夠了,公司內網域名也還能正常解析。

Windows 11 怎麼配置系統級 DoH

Windows 11 的 DoH 是繫結在 DNS 伺服器 IP 上的:先填 IP,再為這個 IP 指定 DoH 模板。

圖形介面

  1. 設定 → 網路和 Internet → WLAN(或乙太網)→ 點進當前連線 → 硬體屬性。
  2. 找到“DNS 伺服器分配”,點“編輯”,改成“手動”,開啟 IPv4。
  3. 首選 DNS 填 223.5.5.5,“DNS over HTTPS”選擇“開啟(手動模板)”,模板填 https://dns.alidns.com/dns-query。
  4. 備用 DNS 用同樣方法填 223.6.6.6。用 IPv6 的話,IPv6 部分也要一併配置,否則 IPv6 查詢仍然是明文。
  5. 儲存後,連線詳情裡的 DNS 伺服器旁會顯示“(加密)”。

1.1.1.1、8.8.8.8 這類地址在 Windows 內建的已知列表裡,可以選“開啟(自動模板)”。阿里和騰訊的地址一般需要手動填模板,或者先用下面的命令登記。

命令列(管理員 PowerShell)

# 登記阿里 DoH,並禁止回退到明文 UDP
Add-DnsClientDohServerAddress -ServerAddress 223.5.5.5 `
  -DohTemplate https://dns.alidns.com/dns-query `
  -AllowFallbackToUdp $False -AutoUpgrade $True
Add-DnsClientDohServerAddress -ServerAddress 223.6.6.6 `
  -DohTemplate https://dns.alidns.com/dns-query `
  -AllowFallbackToUdp $False -AutoUpgrade $True

# 檢視已登記的 DoH 伺服器
Get-DnsClientDohServerAddress

# 把當前網絡卡的 DNS 設為這兩個地址("WLAN" 換成你的網絡卡名,可用 Get-NetAdapter 檢視)
Set-DnsClientServerAddress -InterfaceAlias "WLAN" -ServerAddresses 223.5.5.5,223.6.6.6

# 清快取,讓新配置立刻生效
Clear-DnsClientCache

-AutoUpgrade $True 的作用是:只要系統 DNS 是這個 IP,就自動改走 DoH。也可以用 netsh dns show encryption 檢視同樣的資訊。

macOS 怎麼用描述檔案開啟 DoH

macOS 11 起系統支援加密 DNS,但設定裡沒有開關,需要安裝一個 .mobileconfig 描述檔案。下面的模板可以直接用,儲存為 alidns-doh.mobileconfig:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>PayloadContent</key>
  <array>
    <dict>
      <key>DNSSettings</key>
      <dict>
        <key>DNSProtocol</key>
        <string>HTTPS</string>
        <key>ServerURL</key>
        <string>https://dns.alidns.com/dns-query</string>
        <key>ServerAddresses</key>
        <array>
          <string>223.5.5.5</string>
          <string>223.6.6.6</string>
        </array>
      </dict>
      <key>PayloadDisplayName</key>
      <string>AliDNS DoH</string>
      <key>PayloadIdentifier</key>
      <string>local.doh.alidns.dns</string>
      <key>PayloadType</key>
      <string>com.apple.dnsSettings.managed</string>
      <key>PayloadUUID</key>
      <string>8C1A6C55-3B7E-4F4B-9E0A-2D6B1F0C7A11</string>
      <key>PayloadVersion</key>
      <integer>1</integer>
    </dict>
  </array>
  <key>PayloadDisplayName</key>
  <string>AliDNS DoH</string>
  <key>PayloadIdentifier</key>
  <string>local.doh.alidns</string>
  <key>PayloadType</key>
  <string>Configuration</string>
  <key>PayloadUUID</key>
  <string>4E2D9B70-6A1F-4C83-B5D2-91F0E3A7C428</string>
  <key>PayloadVersion</key>
  <integer>1</integer>
</dict>
</plist>

安裝步驟:

  1. 終端執行 plutil -lint alidns-doh.mobileconfig,輸出 OK 表示格式沒問題。兩個 PayloadUUID 可以用 uuidgen 換成你自己的。
  2. 雙擊檔案,系統會提示“已下載描述檔案”。
  3. 開啟“系統設定 → 隱私與安全性 → 描述檔案”(部分版本在“通用 → 裝置管理”),點選安裝。
  4. 到“系統設定 → 網路 → 過濾條件”或“VPN 與過濾條件”裡,確認 DNS 項已啟用。

想換成 Cloudflare 或 Google,只需改 ServerURL 和 ServerAddresses。刪除描述檔案就能還原。來路不明的描述檔案不要裝,它能改的遠不止 DNS。

怎麼確認 DoH 生效:用 /ip 檢查 DNS 洩漏

設定頁顯示已開啟不代表所有查詢都走了 DoH,要看實際有哪些解析器在替你查詢。按下面的順序檢查:

  1. 開啟 cdnping IP 與環境檢測,等檢測跑完,看 DNS 洩漏一項。
  2. 看列出的解析器歸屬:配的是阿里,就應該看到阿里的節點;配的是 Cloudflare,就應該是 Cloudflare。如果出現本地運營商的解析器,說明還有查詢繞過了 DoH。
  3. 對照 WebRTC 洩漏和多出口檢測:開著代理的話,DNS、WebRTC、各站點看到的出口應當互相一致。原理可以看 DNS 洩漏與 WebRTC 洩漏。
  4. 只在瀏覽器裡開了 DoH 時,換另一個沒開 DoH 的瀏覽器再測一次,就能看出瀏覽器級和系統級的差別。
  5. 需要發給同事或貼到 issue 裡時,用 /ip 的“生成結果圖”匯出一張帶水印的圖片,匯出前開啟“隱藏 IP”,出口地址就不會出現在圖裡。/ip 的指紋在本地計算,不會上傳。

常見的不一致和原因:

現象可能原因處理
仍出現運營商解析器瀏覽器 DoH 回退到了系統 DNS,或只配了 IPv4Firefox 改成最大保護;Windows 補上 IPv6 配置
出現代理服務商的解析器代理客戶端接管了 DNS這是代理的設定決定的,到客戶端裡調整
國內站點明顯變慢海外 DoH 導致 CDN 排程到較遠節點換成阿里或騰訊的 DoH,或按域名分流(見 分流的原理)
公司內網域名解析失敗內網域名只在公司 DNS 上有記錄內網環境關閉 DoH,或按管理員要求配置

換了 DoH 以後,訪問速度變了嗎

換 DoH 服務商會影響 CDN 排程,最終連到哪個節點、快不快,需要實測。cdnping 首頁測速 會在瀏覽器裡測 15 個 AI 模型 API 和 9 個公共前端 CDN 的“首次連線”(含 DNS 與 TLS 握手)和“往返”,測試物件裡也有 AGI Plan(AGI Plan 是 cdnping 的商業合作方)。DoH 換前、換後各測一次,主要看“首次連線”的變化。前端 CDN 怎麼選,可以參考 CDN 速度榜 和 國內如何選擇公共 CDN。

建議的上手順序:先在一個瀏覽器裡開 DoH,用 /ip 確認沒有洩漏;再決定要不要配系統級;最後用首頁測速對比國內和海外 DoH 對常用站點的影響。

相關文章

繼續閱讀