适合已经能连接节点、但不确定域名查询是否经过代理的用户。先区分浏览器、系统与内核各自的 DNS,再用对照测试定位查询出口,最后配置远程解析、本地分流和 TUN 下的 FakeIP。重点不是让检测页只出现一个地址,而是让需要代理的域名查询按预期路径发送。
DNS 泄漏的判断边界
DNS 用来把域名转换成 IP 地址。网页连接走代理,不代表解析域名的请求也走代理:应用可能先向路由器查询地址,再把解析结果交给代理。对于原本希望通过代理解析的域名,这种本地查询就是需要排查的路径偏离。
v2rayN 是客户端界面,实际转发与解析行为取决于当前内核和配置。浏览器的“安全 DNS”、Windows 网卡 DNS、内核内置 DNS 是不同入口。只在其中一处填写公共 DNS 地址,不能保证另外两处也按相同方式工作。
| 查询入口 | 常见路径 | 检查重点 |
|---|---|---|
| Windows 系统解析 | 网卡配置的 DNS,可能先经过路由器 | 系统代理通常不接管普通 UDP DNS |
| 浏览器安全 DNS | 浏览器自己的 DoH 服务 | 是否绕开客户端 DNS 规则,连接本身是否走代理 |
| 内核内置解析 | 配置指定的本地或远程解析器 | 解析器选择与查询出站都要正确 |
| TUN 接管解析 | 捕获的 DNS 请求进入内核 | DNS 劫持、路由范围与例外规则是否生效 |
传统 DNS 常用 UDP 或 TCP 的 53 端口;DoH 通常使用 HTTPS 的 443 端口;DoT 通常使用 853 端口。加密解决的是传输可读性问题,代理解决的是出口路径问题,两者不能互相替代。
检测方法:先建立对照,再看解析器
准备一个能够显示解析器地址和所属网络的 DNS 检测页面。测试期间使用同一个页面、同一个浏览器,每轮只修改一个设置。检测页显示的通常是递归解析器访问测试域名时的出口,不一定等于电脑的公网地址,也不一定等于节点出口。
-
记录基线
在允许短暂直连的测试环境中,先关闭代理,记录检测页中的解析器地址与运营网络。不便直连时可跳过这一步,但后续判断应以路由日志为主,不能凭地理位置下结论。
-
隔离浏览器
在浏览器设置中搜索“安全 DNS”,暂时关闭自定义安全 DNS,并记录原设置。这样可以减少浏览器自带 DoH 对客户端测试的干扰;测试后再按实际需求恢复。
-
测试系统代理
在 v2rayN 托盘菜单「系统代理」中选择「自动配置系统代理」,保持节点和路由规则不变,重新运行检测。记录解析器是否变化,不把“网页能打开”当成 DNS 已接管的证明。
-
对照 TUN
关闭其他流量接管程序,再开启主界面的「启用 TUN」。按系统提示完成权限操作,并确认内核运行正常。清理缓存后重测,对比系统代理与 TUN 两种状态的解析结果。
-
核对日志
在客户端日志区域检查测试时段的 DNS 和路由记录。必要时临时提高日志级别,核对查询使用了哪个解析器、哪个出站;完成后恢复,避免长期记录访问域名。
在 Windows PowerShell 中,可以用下面两条命令检查系统解析路径。第一条清理 Windows DNS 缓存,第二条发起普通 DNS 查询;它们不会自动使用 v2rayN 的 HTTP 或 SOCKS 代理。浏览器和内核还可能保留各自的缓存,需分别重启或清理。
ipconfig /flushdns
nslookup example.com
结论:解析器所属地区不是判定标准
如果检测结果出现本地运营网络,先确认是否属于有意直连的域名查询,再核对出站日志。公共解析服务采用分布式部署,显示附近地区并不能单独证明泄漏。
v2rayN 远程 DNS:地址与出站一起设置
不同桌面界面与内核的 DNS 表单并不完全一致。先打开「设置」→「DNS 设置」,确认当前使用的内核及对应配置页。如果当前界面没有这一入口,应先核对安装包界面与设置菜单,不要把其他内核的配置文本直接粘贴进去。
远程 DNS 的目标是让需要代理的域名通过预期的解析服务查询。以 https://1.1.1.1/dns-query 为例,它是一个具体的 DoH 地址,不是订阅地址,也不是节点地址。填写这个地址后,还需要确认访问该服务的连接通过代理出站。
-
保存原配置
记录「设置」→「DNS 设置」中的原值、当前内核和路由选择。保留可回退的配置副本,不在测试前删除原有 DNS 规则。
-
设置远程解析
在当前内核对应的远程 DNS 项中填写支持的解析服务地址。若使用上面的 DoH 地址,确认表单接受完整 HTTPS URL,而不是只接受 IP 地址。
-
核对查询出站
检查 DNS 查询的出站选择或相关路由规则,让远程解析连接使用代理。Xray 配置中的
https+local://有本地直连语义,不能把它当作“强制代理”的写法。 -
重启并复测
保存设置,重启内核,再执行缓存清理与检测。若网页反而无法打开,先查看 DNS 超时和节点域名解析日志,不要同时更换节点、DNS 与路由模式。
即使内核的 DNS 已设置正确,仍需检查应用是否把域名交给代理。部分应用先在系统中解析,再提交目标 IP;此时内核 DNS 设置未必参与这次解析。需要覆盖这类应用时,应继续检查 TUN 和 DNS 接管,而不是反复更换远程解析地址。
本地 DNS 分流:明确直连与代理边界
本地 DNS 不等于错误配置。局域网设备、内部域名以及明确直连的网站,可能需要本地解析才能得到可访问的地址。关键是限定匹配范围,避免把需要代理的域名交给本地解析器,同时又把所有查询强行送往远程服务。
| 域名用途 | 解析策略 | 验证方法 |
|---|---|---|
| 局域网设备与内部域名 | 使用所在网络的 DNS,保留局域网直连 | 检查内部名称是否返回正确的私有地址 |
| 明确直连的网站 | 按域名规则使用本地 DNS | 确认解析与连接均按直连规则处理 |
| 明确代理的网站 | 使用远程 DNS,查询连接走代理 | 同时核对解析器选择与代理出站日志 |
| 节点服务器域名 | 使用不依赖该节点连接的引导解析 | 重启内核后能完成首次连接 |
例如,223.5.5.5 可作为特定网络环境下的公共本地解析候选,但它不认识企业内部域名,也不是所有网络都适用的默认答案。内部名称应优先交给所在网络提供的解析器;涉及内部域名时,还要遵守所在网络的使用规则。
- 先看匹配顺序:具体域名规则应放在宽泛兜底之前,否则细分规则可能永远不生效。
- 再看回退行为:远程解析失败后若自动回退到本地 DNS,需要确认这是否符合预期。不能只检查首选解析器。
- 最后看地址族:同时检查 A 与 AAAA 查询。仅测试 IPv4,不能证明 IPv6 流量也进入相同的代理路径。
结论:按域名用途分流,不按检测页美化结果
保留必要的本地解析,只收紧代理域名的查询路径。如果业务要求所有查询都经过代理,应明确取消对应的本地回退,再验证节点引导解析与局域网访问是否仍然正常。
FakeIP 与 TUN:接管范围比开关名称重要
FakeIP 会先给应用返回一个合成地址,由内核保存域名与地址的映射,后续连接再按域名处理。它能减少应用提前取得真实 IP 后丢失域名信息的问题,但不是一个独立的“防泄漏开关”。查询没被接管,或者后续连接没回到内核,都会影响结果。
Xray 中的相关机制通常称为 FakeDNS,其他内核的 FakeIP 配置结构不同。v2rayN 的 TUN 功能所用内核也不一定与普通代理连接相同,应以当前设置和运行日志为准。不要把 Xray 的 fakedns 字段复制到其他内核的 DNS 配置中。
- 确认 DNS 接管:TUN 启用后仍要确认普通 DNS 请求进入了内核。应用自带的加密 DNS 连接不能简单当作 UDP 53 请求劫持。
- 检查合成地址路由:部分实现使用
198.18.0.0/15内的地址池。该网段属于基准测试用途,并非真实公网目标;实际地址池以配置为准。 - 保留内部域名例外:对依赖真实地址的局域网发现、内部服务设置合适的真实解析例外,避免合成地址破坏访问。
- 切换后清缓存:关闭 FakeIP 或更换内核后,应用可能仍缓存合成地址。重启相关应用并清理缓存,必要时重启内核以重建映射。
常见报错与验收清单
日志措辞会随内核变化。下面列出的是常见错误片段,定位时应连同前后日志一起看,尤其要区分报错对象是 DNS 服务器、节点服务器还是目标网站。单条错误不能证明发生了 DNS 泄漏。
报错:lookup example.com: i/o timeout
原因:域名解析超过等待时间,可能是解析器不可达,也可能是查询出站错误。
解法:先核对当前解析器地址与查询路径,再检查对应连接是否被防火墙或路由拦截;不要直接关闭证书验证。
报错:no such host
原因:当前解析路径没有取得可用的域名结果,可能涉及域名拼写、负缓存或错误的分流规则。
解法:确认域名有效,清理缓存,并对照本地与远程解析结果;内部域名优先检查是否误送到公共 DNS。
报错:network is unreachable
原因:当前网络栈没有到目标地址的可用路径,可能涉及 IPv6、TUN 路由或合成地址连接。
解法:查看错误中的目标地址,核对网卡与路由范围;若属于 FakeIP 地址池,先清理旧映射并确认 TUN 正常运行。
配置完成后,按下面四项验收。浏览器检测只覆盖当前浏览器产生的测试流量,不能替代对其他应用的检查。v2rayNG 使用 Xray 内核,v2flyNG 使用 V2Fly 内核;迁移到 Android 时应重新检查各自的 DNS 与流量接管设置,不能把桌面系统代理的测试结论直接套用。
- 代理域名:解析器选择符合预期,查询出站与目标连接路径均可解释,没有意外的本地回退。
- 直连域名:保留有意设置的本地解析,局域网和必要的内部服务仍可访问。
- 重新启动:退出并重新打开客户端后,节点域名能完成首次解析,配置不依赖上一次留下的缓存。
- 恢复日常环境:恢复浏览器安全 DNS 的计划设置后再测一次,同时检查 IPv4、IPv6 和实际使用的应用。