在系统与浏览器中启用加密 DNS
设置项的位置随系统版本变化,下面写的是 2026 年较新版本里的路径。原则只有一条:尽量在系统层面配置一次,让所有程序走同一个解析器。
常见公共解析器的端点#
下表列出几家大型公共解析器公开的地址。是否过滤、怎样记录日志、在哪些地区有节点,各家差别很大,使用前请读运营方自己的说明;端点也以运营方页面为准。
| 运营方 | IP 地址 | DoH 模板 | DoT / DoQ 主机名 |
|---|---|---|---|
| Cloudflare | 1.1.1.1、1.0.0.1 | https://cloudflare-dns.com/dns-query | one.one.one.one(DoT) |
8.8.8.8、8.8.4.4 | https://dns.google/dns-query | dns.google(DoT) | |
| Quad9 | 9.9.9.9、149.112.112.112 | https://dns.quad9.net/dns-query | dns.quad9.net(DoT) |
| AdGuard DNS | 94.140.14.14、94.140.15.15 | https://dns.adguard-dns.com/dns-query | dns.adguard-dns.com(DoT、DoQ) |
这些服务都提供 IPv6 地址,表中从略。AdGuard 的默认端点会过滤广告与跟踪域名,Quad9 的默认端点会拦截已知恶意域名;需要不过滤的版本,请查各自文档里的替代地址。
Windows 11#
- 打开 设置 → 网络和 Internet → 选择正在使用的 Wi-Fi 或以太网 → 硬件属性(部分版本直接在连接页面里)。
- 找到“DNS 服务器分配”,点“编辑”,改为“手动”,打开 IPv4(以及 IPv6)。
- 填入首选 DNS 的 IP 地址,在其下方的“DNS over HTTPS”中选择“开(自动模板)”或“开(手动模板)”。系统认识的公共解析器可以用自动模板;其他解析器选手动并填入完整的 DoH 模板。
- “回退到纯文本”保持关闭,否则加密失败时会悄悄改走明文。
可以用命令查看系统已登记的 DoH 服务器:
PS> Get-DnsClientDohServerAddressWindows 的设置按网卡分别保存。插上另一块网卡、连上新的 Wi-Fi,往往需要重新设置一次。
Android#
Android 9 起提供“私人 DNS”(Private DNS),使用的是 DoT:
- 设置 → 网络和互联网(各厂商叫法不同,可能在“更多连接”里)→ 私人 DNS。
- 选“私人 DNS 提供商主机名”,填入解析器的 DoT 主机名,例如
dns.quad9.net。这里只能填主机名,不能填 IP 地址或 URL。
选“自动”时,系统会尝试对网络分配的解析器使用 DoT,失败则回到明文,属于机会模式。填了主机名后是严格模式:连不上就无法解析,状态栏会提示“无法访问私人 DNS 服务器”。
部分网络(例如需要网页登录的公共 Wi-Fi)在登录前会拦截 853 端口,这时私人 DNS 会导致登录页打不开,暂时改回“自动”即可。
iOS、iPadOS 与 macOS#
Apple 平台没有在设置里直接填写 DoH 地址的输入框,加密 DNS 通过两种方式启用:
- 配置描述文件(
.mobileconfig):其中的 DNS 设置载荷指定协议(HTTPS 或 TLS)、服务器地址和 URL。安装后在 设置 → 通用 → VPN 与设备管理(macOS 在“系统设置”的“描述文件”)中启用。很多解析器运营方提供现成的描述文件。 - 应用:应用可以通过系统的 DNS 设置接口注册加密解析器,再由用户在 设置 → 通用 → VPN 与设备管理 → DNS 中选择。
描述文件来自哪里很重要:它能把你的全部 DNS 查询交给任意一台服务器。只安装你信任的来源提供的文件,不用时记得删除。
Linux:systemd-resolved#
使用 systemd-resolved 的发行版可以直接启用 DoT(它目前不支持 DoH)。编辑 /etc/systemd/resolved.conf:
[Resolve]
DNS=9.9.9.9#dns.quad9.net 149.112.112.112#dns.quad9.net
DNSOverTLS=yes
DNSSEC=allow-downgrade# 后面是用来校验证书的主机名。DNSOverTLS=yes 是严格模式,opportunistic 是机会模式。改完重启服务并确认:
$ sudo systemctl restart systemd-resolved
$ resolvectl status
$ resolvectl query example.com要让程序真正走 resolved,/etc/resolv.conf 应指向它的本地监听(通常是链接到 /run/systemd/resolve/stub-resolv.conf,内容为 nameserver 127.0.0.53)。需要 DoH 或 DoQ 的,可以在本机跑一个支持这些协议的转发器,再把 resolved 或 resolv.conf 指向它。
浏览器#
- Chrome:设置 → 隐私和安全 → 安全 → “使用安全 DNS”。选“自定义”并填入 DoH 模板。默认情况下,Chrome 只在系统解析器本身支持 DoH 时才自动升级。
- Edge:设置 → 隐私、搜索和服务 → 安全性 → “使用安全的 DNS 指定如何查找网站的网络地址”。
- Firefox:设置 → 隐私与安全 → “基于 HTTPS 的 DNS”,有默认保护、增强保护、最大保护和关闭四档。“最大保护”下 DoH 失败时不会退回系统解析器。
浏览器的 DoH 只影响浏览器自己。系统里的其他程序、命令行工具仍然使用系统解析器,这经常造成“浏览器能打开、命令行解析不了”或者反过来的现象。企业或学校管理的设备上,这些选项可能被策略锁定。
怎样确认已经生效#
- 用解析器运营方提供的检测页面或特殊域名。很多运营方提供只有通过自家服务查询时才会返回特定结果的测试名字。
- 在电脑上抓包:设置正确时,不应再看到发往 UDP/53 的查询(DHCP 下发的本地域名等少数例外)。
- Windows 上
Get-DnsClientDohServerAddress、Linux 上resolvectl status能看到当前生效的配置。
改完设置后若出现异常,可以先清掉各层的缓存再测,见清理缓存。