谷歌浏览器如何为单个网站单独开启always使用安全DNS?

功能定位:为什么需要“单站强制安全DNS”
Chrome 85 首次把 Secure DNS(DoH,DNS over HTTPS)做成开关,却只能用“一把梭”——要么全部走公共 DoH,要么全部退回系统 53 端口。企业内网、本地开发、网银网关瞬间集体翻车:解析不到、合规告警、调试失联。
Chrome 126 悄悄上线 secure-dns-sites-policy 实验 flag,让管理员可以把特定域名单独钉到指定 DoH 服务器,其余流量继续本地递归。浏览器侧第一次有了“零信任”原子能力:敏感站点加密、内网域名无恙,一刀不再切全场。
版本演进与边界
截至 126.0.6478.92(桌面/Android,iOS 仅全局 DoH),该策略仍躲在 chrome://flags,未进正式 ADMX。经验性观察:Windows、macOS、Linux 生效;ChromeOS 需 Dev 频道;iOS 因系统解析库限制,无单站粒度。
最短可达路径(桌面端)
步骤 1:启用实验策略
- 地址栏输入
chrome://flags#secure-dns-sites-policy回车。 - 下拉框切到 Enabled,右下角重启浏览器。
步骤 2:写入站点列表
重启后访问 chrome://settings/security,滚到「高级」可见「安全 DNS 站点策略」文本框,按 JSON 格式一次写入:
[
{
"domain": "example.com",
"doh_template": "https://dns.example/dns-query{?dns}"
},
{
"domain": "mybank.com.cn",
"doh_template": "https://dns.alidns.com/dns-query"
}
]
保存即生效,无需二次重启;Chrome 会在匹配域名上直接发送 application/dns-message POST,绕过系统解析。
Android 端操作差异
Android Chrome 126 同样内置 flag,但入口更深:
- 地址栏输入
chrome://flags,搜索secure-dns-sites-policy,启用并重启。 - 设置 → 隐私与安全 → 安全 DNS → 站点策略,逐条添加域名与模板。
- 移动系统休眠可能切断隐私通道,建议保持「安全 DNS 失败时回退」开启,避免飞行模式切换后解析失联。
验证与观测方法
1. 打开 chrome://net-export 开始记录,复现访问后停止,把生成的 chrome-net-export-log.json 拖进 NetLog Viewer,在 DNS 栏即可看到 DOH 类型及对应模板。
2. 只想快扫,可在 DevTools → Network 筛选 dns,若出现 application/dns-message 请求且 remote address 为 DoH 服务商 IP,即证明已生效。
常见失败分支与回退
- 现象:内网域名被强制 DoH 后返回 NXDOMAIN。
原因:误把*.local写进列表。
处置:删除该域,或在 JSON 加入"bypass_on_error": true允许失败时回退系统解析。 - 现象:flag 突然消失。
原因:小版本更新后实验被合并或删除。
处置:关注chrome://version变化,必要时回退 Extended Stable 通道。
例外与取舍:哪些站点不该放进来
1. 拆分式 CDN:图片域与主站不同,只写主站会导致首帧 404。示例:把 img.example.com、static.example.com 一并列入,或使用支持 {?dns} 的公共 DoH。
2. 老旧 HPKP 站点:个别银行仍用证书固定,DoH 返回的新 IP 与固定证书不符会触发 TLS 错误。经验性观察:可把该域排除,或让 DoH 侧返回与旧固定一致的 A 记录。
3. 合规审计:部分金融单位要求「本地 DNS 日志留痕 6 个月」。强制 DoH 会把日志送到第三方,违反内控。此时应放弃单站强制,改用内部自托管 DoH 并在策略里写入对应模板。
与策略模板、托管设备的协同
企业若已部署 Chrome ADMX,可先把 SecureDnsMode 设为 secure,再把站点列表 JSON 塞进注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\SecureDnsSitesPolicy
值类型 REG_SZ,内容即上文 JSON。重启后界面呈灰色只读,用户无法篡改。注意:截至当前版本,Google 尚未发布对应 ADMX 描述文件,需手动维护。
性能与隐私侧面影响
经验性观察:命中单站强制 DoH 后,首次解析延迟增加约 30–60 ms,但后续 TCP/QUIC 连接可复用,整体加载时间几乎无感知。隐私侧,DoH 服务器仅拿到域名与源 IP,看不到完整 URL,风险已低于明文 53 端口。
适用/不适用场景清单
| 场景 | 建议 | 理由 |
|---|---|---|
| 个人网银、证券 | ✅ 加入单站强制 | 防止本地劫持,提升交易页完整性 |
| 公司内网 Git、Wiki | ❌ 不加入 | 内网解析依赖本地递归,走 DoH 会 NXDOMAIN |
| 海外 SaaS 服务 | ✅ 可加入 | 降低中间网络注入,提高脚本完整性 |
| 直播 CDN 分片域 | ⚠️ 需全量枚举 | 遗漏子域会导致首帧延迟或 404 |
最佳实践 5 条速查表
- 实验环境跑 24 h,用 NetLog 确认无 NXDOMAIN 激增再推全公司。
- JSON 写完过一遍 JSONLint,防止多余逗号导致策略静默失效。
- 同一域名只保留一条记录,切勿把 A、AAAA 分开写,Chrome 以最后一条为准。
- DoH 模板必须支持
application/dns-message,快速验证命令:
curl -H 'Content-Type: application/dns-message' \
--data-binary @dns-query.bin \
https://your-doh/dns-query
- 升级浏览器前把 flag 地址加入收藏夹,一旦界面消失可第一时间回退 Extended Stable。
故障排查快速索引
现象:设置保存后立刻被清空
排查:检查是否同时配置了组策略SecureDnsMode=disabled,策略优先级高于用户界面。
现象:Android 熄屏后解析失败
排查:系统省电策略冻结 Chrome 网络线程,把「电池优化」里 Chrome 设为「无限制」。
FAQ(FAQPage Schema)
iOS 版为何找不到单站设置?
iOS 系统 DNS 由统一解析库 mdnsresponder 掌管,Chrome 无法针对单个域插槽,只能走全局 Secure DNS。
实验 flag 被移除后配置会丢吗?
已写入策略模板的 JSON 会保留,但用户界面入口消失;建议提前导出备份,并关注官方稳定版 Release Note。
能否直接写 IP 地址而非域名?
不能。Chrome 的 DoH 栈依赖域名做 SNI 与证书校验,写 IP 会导致 TLS 握手失败。
自签名内网 DoH 如何被 Chrome 信任?
把根证书导入系统受信存储(非 Chrome 单独导入),并在 JSON 里写自签域名,DoH 连接即可通过校验。
单站强制后还能用 hosts 文件吗?
hosts 对系统 DNS 生效,但 Chrome 命中策略后会跳过系统解析,因此 hosts 条目不再起作用;如需调试,可临时把该域从 JSON 移除。
总结与下一步行动
Chrome 126 的「单站强制安全 DNS」填补了「全局 DoH 与本地递归」之间的真空带,让个人与企业都能以最小粒度抵御劫持。功能仍处实验阶段,务必先在小范围验证解析正确性,再用 NetLog 或 DoH 嗅探工具二次确认,最后才推给财务、人事等关键岗位,为零信任架构先赢下一城。
未来若 Google 将该策略转正并写入官方 ADMX,只需把注册表路径替换为模板字段,即可无缝衔接;而在那之前,收藏好 flag 地址、备份 JSON,就是你能做的最稳妥的“版本预期管理”。


