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 对常用站点的影响。

相关文章

继续阅读