自定义 DNS 服务器:替换系统默认 DNS
为什么替换 DNS
Android 默认使用运营商提供的 DNS 服务器。使用运营商 DNS 的问题:
- 运营商可能会记录你的 DNS 查询历史(行为追踪)
- 运营商 DNS 响应可能被劫持或污染
- 部分运营商 DNS 主动屏蔽某些网站(DNS 层面的网络审查)
- 运营商 DNS 可能很慢或不稳定
NetGuard 允许在高级选项里设置两台自定义 DNS 服务器,完全替换系统默认 DNS。
设置位置
主菜单 → 设置 → 高级选项 → DNS 服务器配置区域。
注意这个 DNS 设置和 Android 系统设置里的「私人 DNS」是两套独立的东西:
| 设置 | 控制方 | 影响 |
|---|---|---|
| Android 私人 DNS | 系统 | 所有应用的 DNS 请求 |
| NetGuard 自定义 DNS | NetGuard | 只有在 NetGuard 防火墙启用时生效 |
必须填两台
NetGuard 的行为:
- 只填一台 DNS:这台 DNS 会与系统默认 DNS 一起使用(部分替换)
- 填了两台 DNS:这两台 DNS 完全替换系统默认 DNS
所以想完全摆脱运营商 DNS 的控制,必须同时填两台。
推荐的隐私友好 DNS
| DNS 服务 | 主 DNS | 备用 DNS | 特点 |
|---|---|---|---|
| Cloudflare | 1.1.1.1 | 1.0.0.1 | 全球最快、隐私友好、不记录 |
| Quad9 | 9.9.9.9 | 149.112.112.112 | 安全 DNS(拦截恶意域名)、隐私友好 |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | 老牌 DNS,支持自定义域名过滤 |
| 8.8.8.8 | 8.8.4.4 | 速度快、稳定,但有隐私顾虑(Google 会记录) | |
| NextDNS | 自定义 | 自定义 | 高度可配置、有免费版、支持 DoT/DoH |
关于隐私 DNS 的注意
Cloudflare 和 Quad9 都承诺不记录用户 DNS 查询历史(或只保留极短时间的匿名数据),是目前最推荐的隐私友好 DNS。
Google DNS(8.8.8.8)虽然速度快,但 Google 的隐私政策允许收集 DNS 查询数据用于"改善服务"——如果在意隐私,建议选 Cloudflare 或 Quad9。
设置后验证
设置完两台自定义 DNS 后:
- Chrome 地址栏输入
chrome://net-internals/#dns→ 清除 DNS 缓存 - 访问
dnsleaktest.com→ 查看返回的 DNS 服务器 IP 是否是你设置的那两台 - 如果显示的还是运营商 DNS,说明设置没生效,回到 NetGuard 高级选项确认
运营商 DNS 劫持问题
某些运营商在网络层面有 DNS 劫持——无论你在 NetGuard 里填什么 DNS 地址,DNS 请求都会被强制重定向到运营商自己的 DNS。遇到这种情况:
- 表现:即使填了 Cloudflare 1.1.1.1,DNS leak test 仍然显示运营商 DNS
- 解决办法:在路由器管理页面里设置自定义 DNS(路由器层面绕开运营商劫持比 Android 层面更有效)
- 如果有条件:使用 DoT(DNS over TLS)加密 DNS 请求——但要注意 NetGuard 无法处理加密 DNS 的域名匹配(见 Hosts 拦截页面)
NetGuard 默认允许 DNS 请求
不管自定义 DNS 设置成什么,NetGuard 的一个核心行为是默认允许所有 DNS 请求——即使域名在 Hosts 文件里被标记为拦截,NetGuard 仍然允许 DNS 查询完成。原因:
NetGuard 按真实域名做拦截判断。要知道某个域名是否在 Hosts 里,它必须先让 DNS 查询完成、拿到"域名 → IP"映射,然后在 IP 层拦截对应的流量。
所以你会看到:
- DNS 查询(UDP 53)✅ 允许通过
- DNS 返回的 IP → 后续 TCP / UDP 连接 → ❌ 被拦截(如果该域名在 Hosts 里)
这是 NetGuard 与其他 DNS 级拦截器(如 Pi-hole)的关键区别——其他拦截器直接在 DNS 层面拦截(返回 0.0.0.0),NetGuard 让 DNS 通过、在 IP 层面拦截。
清空自定义 DNS
如果自定义 DNS 设置出了问题导致所有应用无法联网:
- 主菜单 → 设置 → 高级选项
- 清空所有 DNS 服务器地址输入框
- 保存后 NetGuard 会恢复使用系统默认 DNS
DNS 设置与 Hosts 拦截的关系
两者独立工作、互不依赖:
- 自定义 DNS 控制"用哪个服务器做 DNS 解析"
- Hosts 拦截控制"解析出的域名是否允许连接"
你可以用 Cloudflare DNS 做解析,同时让 NetGuard 用 StevenBlack Hosts 文件拦截广告域名——两套机制叠加工作。