网页出口 IP 已经改变,域名查询却仍可能经过本地网络。本文从浏览器、系统解析器和代理内核三条路径入手,说明怎样建立检测基线、设置远程 DNS、检查 TUN 接管范围,并区分正常直连解析与意外泄漏。适合已经能连接节点、需要进一步检查 DNS 去向的桌面与安卓用户。
一、DNS 泄漏是什么:先确定哪些查询应该走代理
DNS 把域名解析成 IP 地址,网页连接与域名查询并不一定沿着同一条路径发送。浏览器通过代理访问网站时,可能把域名交给代理端解析;其他应用也可能先调用系统 DNS,再把得到的 IP 交给代理。后一种情况中,网页出口虽然在远端,本地网络仍可能看到目标域名的查询。
这里的“泄漏”应按你的路由目标判断:计划经代理解析的域名,实际交给了本地网络或未预期的解析器,才是需要修正的偏离。若局域网名称、直连网站本来就由本地 DNS 处理,检测到本地解析器不必然代表整个配置失效。
- 系统代理:只影响遵循系统代理设置的程序,不会自动接管所有 UDP 53 查询。
- TUN 模式:通过虚拟网卡接入流量;是否接管 DNS,还取决于 DNS 劫持、路由、接口排除及 IPv6 配置。
- 浏览器安全 DNS:可能通过 HTTPS 自行解析,绕过系统 DNS,但其 HTTPS 连接是否经过代理仍需另外确认。
- 分流规则:决定业务连接与 DNS 查询的去向,两者相关,却不是同一个设置。
二、DNS 泄漏检测:用三组结果建立对照
先记录关闭代理时的公网出口、DNS 解析器运营方以及当前网络,再开启代理重复测试。可选择支持随机测试域名和多轮查询的 DNS 检测网页。检测站通常显示递归解析器的出口,不一定显示电脑直接连接的 DNS 地址;公共 DNS 的任播节点与位置数据库也会影响地区显示,不能只凭国旗判断。
| 测试状态 | 记录项目 | 主要用途 |
|---|---|---|
| 关闭代理 | 公网出口、解析器运营方、网络类型 | 建立当前网络的本地基线 |
| 仅开系统代理 | 网页出口、浏览器安全 DNS 状态、解析器变化 | 确认浏览器实际采用的解析路径 |
| 开启 TUN | 解析器列表、IPv4 与 IPv6 连接、内核日志 | 检查系统流量及 DNS 的接管范围 |
每组做至少两轮,设置变化后清理缓存并重新打开测试页面。Windows 可在终端运行下面的命令;它只清除系统 DNS 缓存,不会同时清除浏览器自己的缓存,也不会改变 DNS 服务器配置。
ipconfig /flushdns
Get-DnsClientServerAddress
第二条命令用于 PowerShell,可列出各网卡的 DNS 地址,便于辨认物理网卡与虚拟网卡。它不是泄漏检测结论:网卡上仍列着路由器地址,不代表所有查询都绕过了 TUN。反过来,nslookup example.com 也不经过普通 HTTP 系统代理,只能帮助观察该工具的查询路径,不能代替浏览器和整机测试。
结论:先对照运营方,再核对实际出站
若代理前后仍出现同一家本地运营商解析器,先检查它是否来自预期直连规则;对必须走代理的域名,再结合 DNS 日志和物理网卡流量确认,而不是立即替换节点。
三、v2rayN 远程 DNS 与域名策略配置步骤
操作前记录 v2rayN 版本、当前业务内核和 TUN 使用的内核。不同版本的 DNS 页面布局会变化,下列步骤以提供「设置」→「DNS 设置」入口的界面为参照;若页面分列不同内核配置,必须编辑当前实际生效的那一组。自定义完整配置也可能覆盖图形界面生成的内容。
-
记录现状
打开「设置」→「参数设置」,记录本地监听端口和相关内核设置,并保存原来的 DNS 内容。若本机监听端口为
10808,应用就应使用这个实际端口;不要把其他教程中的10809直接套入。 -
区分解析器
进入「设置」→「DNS 设置」,区分用于代理域名的远程 DNS 与用于直连域名的本地 DNS。支持 DoH 的字段可使用
https://dns.google/dns-query这类完整端点;不要把 URL 填入只接受 IP 地址的字段。 -
检查出站
检查 DNS 设置中的出站选项或所生成配置的路由规则,确保远程解析请求按计划走代理。本地 DNS 可用于直连域名和必要的启动解析;不要仅因字段名包含“远程”就认定查询已经经代理发送。
-
核对域名策略
打开「设置」→「路由设置」,核对域名策略。Xray 路由中的
AsIs、IPIfNonMatch、IPOnDemand控制路由匹配时是否触发解析,不是 DNS 加密开关。优先确认域名规则能正确匹配,再决定是否需要解析后匹配 IP 规则。 -
应用并复测
保存设置,重启服务或重新连接节点,检查内核启动日志是否有配置错误。随后清除 DNS 缓存,重复同一组检测;一次只改一项,保留能正常工作的原始配置,方便回退。
四、TUN 防泄漏检查:DNS 接管、IPv6 与浏览器
需要覆盖不遵循系统代理的应用时,再考虑开启 v2rayN 主界面的「启用 TUN」。首次启动可能需要管理员权限。TUN 不等于自动消除所有 DNS 旁路:部分版本会由单独的内核承担 TUN 功能,其 DNS 选项与普通代理模式并非同一份配置。
- 确认虚拟网卡启动:查看日志是否成功建立 TUN 接口,不能只看开关外观。若驱动或路由创建失败,应先解决启动问题。
- 确认 DNS 接管规则:检查是否捕获发往 UDP/TCP 53 的查询。仅接管传统 DNS 端口,不会自动识别所有使用 443 端口的应用自建 DoH。
- 检查 IPv6:支持 IPv6 的网络可能同时产生 AAAA 查询和 IPv6 连接。需要核对 IPv6 路由是否被接管;临时停用 IPv6 可用于定位问题,但不是适合所有网络的长期方案。
- 统一浏览器变量:记录浏览器「设置」→「隐私和安全」中的安全 DNS 选项;具体入口因浏览器而异。测试时先固定一种解析方式,完成后再恢复个人偏好并复测。
- 检查其他虚拟网卡:其他 VPN、虚拟机和企业网络工具可能修改 DNS、路由优先级或接口指标。排查时逐个停用,避免同时改多条路径。
进阶验证可观察物理网卡是否向非预期地址发送 53 端口查询。注意限定时间窗口,并区分目标网站查询、局域网查询与节点启动解析。没有观察到明文 53 流量,也不能直接证明所有 DNS 都走代理,因为应用还可能直接访问加密 DNS 服务。
结论:测试目标域名,不追求解析器列表完全相同
保留必要的直连解析,对需要代理的域名验证 DNS 和业务连接是否都符合规则。只有明确需求是整机代理时,才把直连例外逐项收紧,并重新检查局域网服务是否正常。
五、v2rayNG 安卓端 DNS 检查清单
v2rayNG 使用 Xray 内核,安卓 VPN 接口负责接入被纳入范围的应用流量。v2flyNG 使用 V2Fly 内核,两者不能直接互抄所有 DNS 与路由字段。以下检查针对 v2rayNG;不同版本中开关名称和排列可能调整,应以当前页面说明为准。
- 确认接入模式:在 v2rayNG「设置」中检查是否使用 VPN 模式,并确认系统显示对应 VPN 连接。仅使用本地代理模式时,其他应用需要自行设置代理。
- 检查 DNS 选项:在「设置」中核对「远程 DNS」「国内 DNS」及「本地 DNS」相关选项;部分选项只在相应模式下生效。先记录原值,再修改一组,重连服务后查看日志。
- 检查分应用代理:进入「设置」→「分应用代理」,确认测试浏览器在 VPN 接管范围内。启用绕过所选应用时,列表含义与仅代理所选应用相反,不要只看应用有没有勾选。
- 检查系统私人 DNS:安卓系统设置中搜索「私人 DNS」,记录是自动、关闭还是指定提供商。它与客户端 DNS 接管的交互受系统版本和配置影响,应做前后对照,而非认定必然被覆盖。
- 分别测试网络:在 Wi-Fi 与移动网络各测一轮。切换网络后重新连接客户端,检查解析器是否改变,同时留意 IPv6 和浏览器安全 DNS。
如果只有某个应用出现不同解析器,先查它的分应用设置和自建 DNS;如果全部应用都异常,再查 VPN 接入、系统私人 DNS 与当前网络。这样可以把问题限制在具体层级,而不是反复清空订阅或更换协议。
六、DNS 设置后无法联网:按报错缩小范围
远程 DNS 改错后,常见表现是节点能选中、网页却无法打开。先恢复刚修改的设置并确认服务可启动,再按日志区分解析失败、连接超时和配置错误。下列短语会出现在不同调用链中,必须连同前后的目标地址、出站标记与时间一起阅读。
报错:no such host
原因与解法:通常表示相关名称解析没有得到有效结果。先确认报错中的域名是节点地址、DoH 端点还是业务网站,再检查拼写、解析器可达性及启动解析路径;不要把所有此类错误都归因于节点失效。
报错:context deadline exceeded
原因与解法:操作在时限内没有完成,可能涉及 DNS 请求或后续连接。若上下文明示 DNS 交换超时,检查解析器的实际出站和网络可达性;若发生在节点连接阶段,则应继续排查节点链路。
报错:network is unreachable
原因与解法:所选地址没有可用网络路径,可能与 IPv6、TUN 路由或接口变化有关。检查日志中的目标地址族,重建连接并核对路由;不要通过随意改 DNS 来掩盖接口问题。
完成修正后,用相同浏览器、相同网络和相同代理模式复测,并保存修改前后的记录。DNS 泄漏检测关注的是解析路径是否符合预期,不是检测页是否只显示一个服务器。后续更换内核、更新客户端或调整分流规则时,也应重新做一次基线对照。