DNS 服务器自动检测与手动配置 — PCAPdroid 选哪个 DNS
自动检测
PCAPdroid 启动时在 Android Marshmallow(6.0)及以上版本尝试读取系统当前 DNS 服务器配置:
- IPv4:优先使用系统检测到的 DNS(运营商 DNS、路由器 DNS、或用户手动配置的)。检测失败或主网络接口切换(WiFi ↔ 4G)时回退到
8.8.8.8(Google Public DNS) - IPv6:固定使用 Google IPv6 DNS
2001:4860:4860::8888
当前实际使用的 DNS 服务器可以在 Stats 标签页查到。
为什么要关心
PCAPdroid 代理流量的时候,DNS 查询会先被自己处理。如果 PCAPdroid 用了和系统不同的 DNS:
- 应用可能解析出不同的 IP(某些运营商 DNS 劫持 CDN 域名就近接入)
- 你在 Connections 里看到的域名解析结果可能和应用实际使用的不一致
大多数场景下用默认值就好。如果遇到解析异常,可以检查一下 Stats 页显示的 DNS 是不是你期望的。
DNS 泄漏排查
在隐私场景下,PCAPdroid 默认配置可能出现 DNS 泄漏:应用绕过 PCAPdroid 配置走自己的 DNS 路径、或系统 netd 守护进程绕过 VpnService。排查方法:
- 开 PCAPdroid 抓包,去 dnsleaktest.com 检测
- 如果 PCAPdroid 抓包 Connections 里能看到 dnsleaktest.com 的 DNS 查询,但检测结果显示的 DNS 不是 PCAPdroid 设定的,就存在泄漏
解决 DNS 泄漏通常涉及 root 或第三方工具,超出 PCAPdroid 单应用范围。
DoH 与 PCAPdroid 的冲突
PCAPdroid 默认自动检测并阻断 DNS-over-HTTPS(DoH)请求——因为如果应用走 DoH,PCAPdroid 就看不到明文 DNS 查询内容(DoH 本身就是把 DNS 查询包在 TLS 里发到 HTTPS 端点)。阻断的代价是:
- 某些应用可能因为 DoH 被阻断而回退到普通 DNS(好事)
- 某些应用可能直接 DNS 失败(坏事),需要手动放行
如果你想同时获得 DNS 加密的隐私好处和 PCAPdroid 的 DNS 可见性,见下一页:DNS 服务器与 DoH 集成。