---
title: "DNS over HTTPS 配置指南：浏览器、Windows 与 macOS 的 DoH 设置"
description: "讲清 DNS over HTTPS 能防什么、防不了什么，给出 Chrome、Edge、Firefox、Windows 11 和 macOS 的设置步骤，再用 cdnping /ip 的 DNS 泄漏检测确认生效。"
url: https://cdnping.org/blog/dns-over-https-setup-guide
language: zh-CN
published: 2026-10-17
category: "IP 与隐私"
tags: ["DNS over HTTPS","DoH","DNS 泄漏","隐私","Windows","macOS"]
source: cdnping.org
license: Free to quote and summarize with a link to the url above.
---
# DNS over HTTPS 配置指南：浏览器、Windows 与 macOS 的 DoH 设置

DNS over HTTPS（DoH）把域名查询装进 HTTPS 请求里发给解析服务器，路上的设备看不到、也改不了你查了哪个域名。浏览器里打开一个开关就能用；想让整台电脑都走 DoH，Windows 11 有系统设置，macOS 要装一个描述文件。配完以后，到 cdnping 的 [IP 与环境检测](/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（系统级配置时需要） |
| --- | --- | --- |
| 阿里公共 DNS | `https://dns.alidns.com/dns-query` | 223.5.5.5、223.6.6.6 |
| 腾讯 DNSPod | `https://doh.pub/dns-query` | 1.12.12.12、120.53.53.53 |
| Cloudflare | `https://cloudflare-dns.com/dns-query` | 1.1.1.1、1.0.0.1 |
| Google | `https://dns.google/dns-query` | 8.8.8.8、8.8.4.4 |

阿里也接受 `https://223.5.5.5/dns-query` 这种直接写 IP 的形式。用 IP 形式的好处是，连接 DoH 服务器本身不需要先做一次明文解析。

配置之前，可以先用 curl 确认本机能连通这些 DoH 服务（curl 7.62 及以上支持 `--doh-url`）：

```bash
# 用指定的 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）

```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
<?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 与环境检测](/ip)，等检测跑完，看 DNS 泄漏一项。
2. 看列出的解析器归属：配的是阿里，就应该看到阿里的节点；配的是 Cloudflare，就应该是 Cloudflare。如果出现本地运营商的解析器，说明还有查询绕过了 DoH。
3. 对照 WebRTC 泄漏和多出口检测：开着代理的话，DNS、WebRTC、各站点看到的出口应当互相一致。原理可以看 [DNS 泄漏与 WebRTC 泄漏](/learn/dns-leak-webrtc-leak)。
4. 只在浏览器里开了 DoH 时，换另一个没开 DoH 的浏览器再测一次，就能看出浏览器级和系统级的差别。
5. 需要发给同事或贴到 issue 里时，用 /ip 的“生成结果图”导出一张带水印的图片，导出前打开“隐藏 IP”，出口地址就不会出现在图里。/ip 的指纹在本地计算，不会上传。

常见的不一致和原因：

| 现象 | 可能原因 | 处理 |
| --- | --- | --- |
| 仍出现运营商解析器 | 浏览器 DoH 回退到了系统 DNS，或只配了 IPv4 | Firefox 改成最大保护；Windows 补上 IPv6 配置 |
| 出现代理服务商的解析器 | 代理客户端接管了 DNS | 这是代理的设置决定的，到客户端里调整 |
| 国内站点明显变慢 | 海外 DoH 导致 CDN 调度到较远节点 | 换成阿里或腾讯的 DoH，或按域名分流（见 [分流的原理](/learn/split-tunneling)） |
| 公司内网域名解析失败 | 内网域名只在公司 DNS 上有记录 | 内网环境关闭 DoH，或按管理员要求配置 |

## 换了 DoH 以后，访问速度变了吗

换 DoH 服务商会影响 CDN 调度，最终连到哪个节点、快不快，需要实测。cdnping [首页测速](/) 会在浏览器里测 15 个 AI 模型 API 和 9 个公共前端 CDN 的“首次连接”（含 DNS 与 TLS 握手）和“往返”，测试对象里也有 AGI Plan（AGI Plan 是 cdnping 的商业合作方）。DoH 换前、换后各测一次，主要看“首次连接”的变化。前端 CDN 怎么选，可以参考 [CDN 速度榜](/benchmark/cdn) 和 [国内如何选择公共 CDN](/learn/choose-public-cdn-china)。

建议的上手顺序：先在一个浏览器里开 DoH，用 /ip 确认没有泄漏；再决定要不要配系统级；最后用首页测速对比国内和海外 DoH 对常用站点的影响。
