v2rayN 与 v2rayNG 的 DNS 排查需要同时检查“谁发起解析”和“解析连接从哪里出去”。本文适合已经能够连接节点、但检测结果出现本地运营商或域名访问异常的用户;先建立直连与代理对照,再分别检查桌面系统代理、安卓 VPN、远程 DNS 和分流规则,最后用日志与重复测试验证结果。
一、DNS 泄漏的判断标准
DNS 泄漏是解析请求没有遵循预期的网络路径。例如,需要代理访问的域名仍交给本地运营商解析,查询内容就可能暴露给本地解析链路。网站显示的出口 IP 属于代理服务器,只能说明该次网页连接经过代理,不能证明 DNS 查询也经过代理。
v2rayN 的系统代理只影响遵循系统代理设置的应用,并不接管整台电脑的所有 DNS。v2rayNG 的 VPN 模式可以接入更多应用流量,但分应用排除、浏览器安全 DNS、系统私人 DNS以及 IPv6 路由仍可能改变实际路径。开启 TUN 或 VPN 不是验证结束,而是验证起点。
| 检测现象 | 能说明什么 | 下一步检查 |
|---|---|---|
| 网页 IP 已变化 | 网页连接走了另一出口 | 单独检查 DNS 查询路径 |
| 出现本地运营商解析器 | 测试域名可能经本地解析链路处理 | 检查浏览器、系统 DNS 和直连规则 |
| 解析器国家与节点不同 | 可能涉及公共 DNS 的任播或转发 | 核对解析服务商与实际出站,不只看国家 |
| 代理和本地解析器同时出现 | 可能存在多条解析路径或回退 | 重复测试并排除缓存、分应用与回退配置 |
结论:按域名用途判断泄漏
分流配置可以让直连域名使用本地 DNS;需要优先修正的是代理域名意外落到本地解析链路,而不是把所有本地解析记录都视为故障。
二、建立直连与代理的检测对照
DNS 检测页面通常生成随机子域名,再从权威服务器侧观察递归解析器来源。结果反映的是最终参与递归查询的服务,未必就是客户端填写的地址。公共 DNS 的转发与任播也会影响地理定位,因此应同时记录服务商、测试模式和当前客户端配置。
-
记录基线
关闭客户端代理接入,用同一浏览器打开 DNS 检测页面,例如手动输入
dnsleaktest.com。记录网页出口 IP、解析器服务商、IPv4/IPv6 状态以及浏览器安全 DNS 是否开启。 -
启用代理
启动 v2rayN 或 v2rayNG,确认当前节点与路由预设。保持相同网络、浏览器和检测页面,再执行完整测试;不要在两次测试之间切换 Wi-Fi 与移动网络。
-
隔离变量
临时关闭浏览器自定义安全 DNS 后重测,再单独恢复它重测。每轮只改变一项,分别标记“系统代理”“TUN”或“VPN”,避免把不同接入方式的结果混在一起。
-
重复验证
每种配置至少执行 2 次测试,并观察客户端日志。修改 DNS 后重启内核或 VPN 连接;普通网页刷新可能直接使用旧缓存,不能替代新的随机域名测试。
Windows 可以用以下命令查看物理网卡、虚拟网卡的 DNS 地址并清理系统缓存。清理系统缓存不会同步清除浏览器自身缓存,也不会自动改变应用选择的解析器。
Get-DnsClientServerAddress -AddressFamily IPv4
Get-DnsClientServerAddress -AddressFamily IPv6
ipconfig /flushdns
三、v2rayN:远程 DNS 与直连 DNS 分开设置
v2rayN 的配置需要区分三个用途:代理目标域名的解析、直连目标域名的解析,以及代理服务器自身地址的解析。代理服务器使用域名时,还需要先得到该服务器的 IP,才能建立代理连接;如果把这一步也强行送进尚未建立的代理,就可能形成解析依赖循环。
v2rayN 不同版本、界面类型和内核的 DNS 编辑界面存在差异。以下按带有「设置」→「DNS设置」入口的界面说明;如果页面显示的是 DNS 配置模板或 JSON 编辑器,应先备份原配置,再按用途修改对应内核的设置,不要将另一内核的字段直接粘贴进来。
-
备份当前配置
先记录主界面当前节点、路由预设、系统代理状态与 TUN 状态,再进入「设置」→「DNS设置」保存原有内容。订阅提供的是节点参数,不应默认认为它已经覆盖本机所有 DNS 接入规则。
-
区分解析用途
远程 DNS 用于需要代理解析的域名,直连 DNS 用于本地或直连域名。例如
https://1.1.1.1/dns-query是一个 DoH 服务地址;它只是格式与服务示例,连接是否经过代理还取决于实际路由。 -
检查解析出站
检查 DNS 配置与路由规则,使远程解析连接能够命中代理出站,直连解析连接命中直连出站。使用带有本地直连语义的解析地址形式或特殊解析模式前,应确认当前内核的处理方式,不能只凭“远程 DNS”标签判断。
-
验证流量接入
仅浏览器需要代理时,先测试系统代理;应用不遵循系统代理时,再评估 TUN。开启 TUN 后检查 DNS 接管、网卡路由与 IPv6,不要同时保留多套互相冲突的虚拟网卡配置。
-
重启后复测
保存设置并重启内核,按前一节重新检测。若节点服务器地址无法解析,应先恢复可用的引导解析路径,而不是继续叠加代理规则。
| 解析方式 | 常见端口 | 需要核对的路径 |
|---|---|---|
| 传统 DNS | UDP 53、TCP 53 | 是否存在物理网卡直发与 TCP 回退 |
| DoT | TCP 853 | 加密解析连接是否按预期进入代理 |
| DoH | 通常为 HTTPS 443 | 解析服务地址、引导解析与 HTTPS 出站 |
DNS 加密与 DNS 代理是两个维度。DoH 可以加密到解析服务之间的查询,但若 DoH 连接直接从本地网络出去,它仍不满足“解析流量经代理出口”的目标。反过来,代理隧道内承载传统 DNS,也不能据此认定请求已从本地网络明文发出。
四、v2rayNG:检查本地 DNS、VPN 与应用范围
v2rayNG 使用 Xray 内核,并通过安卓 VPN 接口接入应用流量。「启用本地DNS」中的“本地”通常指客户端内的 DNS 处理能力,不等同于“把全部域名发给本地运营商”。最终去向仍由 DNS 配置、路由与 VPN 接入范围共同决定。
-
检查解析设置
进入侧边菜单「设置」,查找「远程DNS」「直连DNS」与「启用本地DNS」。这些项目可能位于设置页的不同分组;若当前版本缺少某项,先核对客户端版本和内核,不要寻找并不存在的开关。
-
检查应用范围
在「设置」→「分应用代理」检查浏览器和待测应用是否被排除。测试阶段可先关闭分应用限制,确认 VPN 接管正常后,再逐个恢复排除项。
-
隔离私人DNS
安卓系统常见入口为「设置」→「网络和互联网」→「私人 DNS」,厂商名称可能不同。记录原值,临时关闭指定服务商主机名后对照测试;企业设备或受管理网络应先确认管理策略。
-
重建VPN连接
断开并重新启动 v2rayNG 的 VPN,再检查浏览器安全 DNS、IPv6 与网络切换后的结果。仅修改设置但保留旧 VPN 会话,可能无法体现最新配置。
v2rayNG 的 IPv6 问题也需要分层检查。DNS 返回 AAAA 记录,只说明解析得到了 IPv6 地址;真正需要确认的是后续 IPv6 连接是否被 VPN 接管。可临时关闭 IPv6 做对照,但最终应修复接管或路由策略,而不是把所有异常都归因于 AAAA 记录。
五、DNS 路由与 TUN:避免规则互相抵消
Xray 的内置 DNS、路由域名策略和嗅探承担不同职责。内置 DNS 负责解析,路由规则负责选择出口,嗅探尝试从连接中补充域名信息。把路由域名策略改成某个值,不会自动让系统 DNS 全部进入代理;开启嗅探也不会接管浏览器自行发出的 DoH 连接。
- 先查宽泛直连规则:如果 DNS 服务地址落入靠前的直连 IP 规则,后面的代理规则可能没有匹配机会。应结合实际生成的内核配置检查规则顺序。
- 保留引导解析路径:代理服务器与 DoH 服务都使用域名时,应明确它们最初由谁解析,避免启动阶段循环依赖。
- 检查企业内网域名:内部域名可能只能由企业 DNS 解析,不宜把所有查询强制发送给公共解析器。应单独设置域名范围与可达路径。
- 核对 TUN 的 DNS 接管:确认请求进入虚拟网卡后由谁处理,以及直连出口如何避开再次进入 TUN 的循环。修改前先保留可恢复的原配置。
- 谨慎启用 FakeDNS:FakeDNS 返回虚拟地址以保留域名映射,不是独立的加密解析服务。接管不完整时,应用可能拿到虚拟地址却无法正确连接。
结论:先固定接入,再调整 DNS 路由
先让一个浏览器在一种接入模式下得到稳定结果,再恢复分流、分应用和浏览器安全 DNS。每次只恢复一项,才能定位究竟是哪条路径改变了解析出口。
六、常见报错与最终验收
DNS 故障不一定表现为“泄漏”。远程解析连接被错误直连、DNS 地址不可达、节点地址无法引导解析,都可能导致网页打不开。日志文字会随内核与系统变化,下面列出可出现的真实错误片段,应结合相邻的目标地址与时间判断。
lookup example.com: i/o timeout
原因:解析操作在超时前没有取得结果,可能是 DNS 服务不可达或出站路径错误。解法:先检查解析服务地址和出站规则,再测试同一服务的连接;不要仅反复切换网页目标节点。
dial tcp: lookup example.com: no such host
原因:名称解析没有得到可用结果,域名拼写错误、域名不存在或解析策略异常都可能触发。解法:检查实际域名并与另一条可用解析路径对照;不要把它直接判定为代理认证失败。
context deadline exceeded
原因:操作超过截止时间,这不是 DNS 专属错误,也可能发生在连接解析服务或目标服务器时。解法:按相邻日志定位失败阶段,再分别检查 DNS、TLS 连接与代理出站。
DNS 抓包可以补充网页检测,但只过滤 UDP 53 会遗漏 TCP 53、DoT 和 DoH。检查物理网卡时,应关注目标解析服务的地址与连接方向;发现 443 连接还需要核对目标,不能把所有 HTTPS 流量都当成 DNS。没有发现 53 端口流量,也不能单独证明解析完全按预期运行。
- 解析器符合用途:代理域名不再意外使用本地解析链路,内网或直连域名仍能正常解析。
- 出口与接入一致:系统代理、TUN、安卓 VPN 分别测试,不用其中一种的结果替代另一种。
- 缓存影响已排除:使用新生成的测试域名,修改设置后重启相关连接,并至少复测 2 次。
- 网络切换后仍有效:安卓从 Wi-Fi 切到移动网络、桌面休眠恢复后,再核对 VPN、虚拟网卡和 DNS 状态。
- 保留恢复记录:记录远程 DNS、直连 DNS、路由预设与浏览器安全 DNS 的最终值,出现故障时逐项回退。
v2rayN 与 v2rayNG 的防泄漏配置,最终目标是让解析请求和目标连接各自遵循明确规则。网页能打开、出口 IP 改变、公共 DNS 显示异地,这三项都不能替代路径验证;完成对照测试并保留配置记录,后续更换节点或网络时才容易发现变化。