网页出口变了,不代表域名解析也走了代理。本文适合已经能连接节点、但 DNS 检测结果仍出现本地网络解析器的桌面用户。按“建立基线、区分解析来源、修改 DNS、检查 TUN、复测”的顺序操作,重点确认需要代理的域名没有意外交给本地网络解析,而不是追求检测页只显示一个地址。
一、DNS 泄漏要看解析路径,不只看地区
DNS 把域名转换为 IP 地址。使用代理时,网页连接和 DNS 查询可能走两条不同路径:浏览器通过代理访问网站,操作系统却仍向路由器或网络运营商查询域名。若原本希望这些查询也经过代理,这种意外直连才是本文要排查的 DNS 泄漏。
v2rayN 是桌面客户端,具体解析行为由所选内核、生成配置、应用自身设置和系统网络共同决定。只修改一个“远程 DNS”地址,不能约束所有软件;只开启系统代理,也不会自动接管所有 UDP 流量。浏览器内置的加密 DNS 还可能绕过系统解析器,形成第三条路径。
| 检测现象 | 可能原因 | 下一步 |
|---|---|---|
| 网页出口改变,仍显示本地运营商解析器 | 查询可能仍由系统或直连规则发出 | 对照关闭代理时的结果,并检查 DNS 路由 |
| 出现多个公共解析器地址 | 解析服务使用集群、转发或多出口 | 核对运营机构及来源,不能仅凭数量判定 |
| 解析器地区与节点地区不同 | 公共 DNS 使用任播,地区数据库也可能有偏差 | 结合查询出口和配置判断,不按国旗下结论 |
| 国内域名由本地 DNS 解析 | 可能是预期的直连分流 | 确认是否符合自己的域名分流策略 |
判断标准:查询路径是否符合分流目标
先明确哪些域名应当走代理,再检查这些域名的解析出口。需要代理的查询意外直连值得修正;明确设置为直连的域名使用本地 DNS,不应与前者混为一谈。
二、在线检测:先保留关闭代理时的基线
可手动打开 https://www.dnsleaktest.com/,使用 Standard test 或 Extended test。检测页会让浏览器请求一组临时域名,再展示向其权威 DNS 发起查询的递归解析器。它显示的通常不是电脑网卡的 DNS 地址,也不等于查询从电脑到解析器这一段的完整网络路径。
-
记录基线
暂时关闭 TUN,并在 v2rayN 的「系统代理」菜单选择「清除系统代理」。运行一次检测,记录时间、网页出口 IP、解析器 IP 和运营机构。此时测试流量会直接使用当前网络,请在可接受这一前提时操作。
-
固定浏览器
使用同一个浏览器配置和同一网络。在浏览器「设置」中搜索「安全 DNS」或「DNS over HTTPS」,记录当前值。为先验证客户端路径,可暂时关闭浏览器自定义加密 DNS,测试结束后再单独验证该功能。
-
启用代理
选择已确认可用的节点,在「系统代理」中选择「自动配置系统代理」。先确认检测网站的网页出口确实改变;若出口未变,先排查系统代理、浏览器扩展或绕过规则。
-
重复检测
先运行 Standard test,再运行 Extended test。每种模式至少重复 2 次,并与基线比较。切换模式后重新打开检测页,避免只查看上一次结果;保留截图供后续逐项对比。
三、v2rayN 远程 DNS、本地 DNS 怎样分工
修改前先记录 v2rayN 版本、当前内核、路由模式和原始 DNS 值,并备份现有配置。常见版本可从「设置」→「DNS 设置」进入相关页面;页面通常按内核区分配置。不同版本的字段名称和布局会变化,下面的“远程 DNS”“本地 DNS”指功能角色,应以当前版本实际显示的项目为准,不要把一个内核的配置格式直接粘贴到另一个内核。
- 远程 DNS:用于需要代理的域名解析。若填写
https://1.1.1.1/dns-query这类 DoH 地址,前提是字段支持 DoH,而且到该服务的连接被正确送往预期出站。 - 本地或直连 DNS:用于直连域名和部分启动解析。可按网络实际情况使用可信的本地解析器;例如
223.5.5.5是一个具体的公共解析器地址,但是否合适仍取决于网络可达性和隐私需求。 - 节点域名解析:连接节点之前,通常需要先知道节点服务器 IP。若此时又要求所有解析都经过尚未建立的节点,可能形成启动依赖循环。应使用内核支持的独立解析安排,而不是强行删除所有直连解析。
- DNS 出站规则:决定查询连接经直连还是代理发出。加密 DNS 保护传输内容,但若 DoH 连接本身直连,解析服务仍会看到本地公网出口;“加密”与“经代理”是两个设置目标。
按一次只改一项的顺序保存
先在「设置」→「DNS 设置」选择正在使用的内核页,查看远程解析器和直连解析器各自的用途说明。仅在字段支持时填写上述地址,再检查路由配置中是否存在把该解析服务强制直连的规则。保存后重启服务或内核,确认日志没有配置加载错误,再重复在线检测。若只能看到自定义配置文本,应先按对应内核格式核对字段,不要凭相似名称添加选项。
四、TUN 模式下检查 DNS 劫持与 IPv6
系统代理主要服务于遵循代理设置的应用。TUN 则通过虚拟网络接口接入流量,更适合检查不遵循系统代理的程序,但启用 TUN 本身并不等于 DNS 已完整接管。需要同时查看 TUN 路由、DNS 接管规则和内核日志。
- 找到当前 TUN 配置。常见桌面版本可在「设置」→「参数设置」中查找「Tun 模式设置」,部分版本将其放在独立页面。先记录自动路由、严格路由和 DNS 相关项目的原值;只修改当前版本明确提供的字段。
- 确认普通 DNS 接管。如果页面提供 DNS 劫持或 DNS 接管选项,确认其覆盖预期的 UDP/TCP
53查询。它用于把普通 DNS 请求导向内核解析流程,而不是把任意加密连接都变成 DNS。 - 单独处理加密 DNS。DoH 通常使用 TCP
443,也可能通过 HTTP/3 使用 UDP443;DoT 通常使用 TCP853。只劫持53端口不会覆盖这些连接,仍需靠应用设置和路由安排。 - 核对 IPv6 路径。检查系统是否有 IPv6 DNS、TUN 是否配置 IPv6 路由,以及代理出站是否支持目标访问。查询 AAAA 记录与查询本身经 IPv6 传输不是同一件事,不能只靠禁用 AAAA 判断是否解决。
- 切换网络再测。保存配置后先在当前网络复测,再在有线、无线等实际使用环境中重新连接并检测。网络切换可能更新系统 DNS 和默认路由,旧结果不能替代新测试。
修改 TUN 后若网络整体不可用,先关闭 TUN 恢复基线,再检查权限、虚拟接口和路由冲突。关闭 IPv6 可以作为临时对照实验,但它会改变系统网络行为,不应被当成通用修复方案。需要保留 IPv6 的环境,应完善接管与路由配置。
五、用系统命令区分缓存、代理和解析失败
下面以 Windows PowerShell 为例。第一组命令清理本地 DNS 缓存并触发系统解析;它测试的是系统解析路径,不是客户端远程 DNS 的独立验收。浏览器和内核可能另有缓存,必要时还需完全退出浏览器并重启内核。
ipconfig /flushdns
Resolve-DnsName example.com -Type A
Resolve-DnsName example.com -Type AAAA
随后可用支持 SOCKS 的 curl 测试“把目标域名交给代理处理”的连接。以下假设 v2rayN 实际的 SOCKS 或混合监听端口为 10808;执行前到「设置」→「参数设置」核对本地监听端口,并按实际值修改。数字地址 127.0.0.1 用于连接本机代理,避免额外解析代理主机名。
curl.exe --socks5-hostname 127.0.0.1:10808 --connect-timeout 10 -I https://example.com/
--socks5-hostname 会把目标主机名交给 SOCKS 代理;与之相比,--socks5 通常在本地解析目标。前一条命令成功,只能说明这条显式代理路径可用,不能据此认定浏览器或后台服务没有 DNS 泄漏。
报错:DNS_PROBE_FINISHED_NXDOMAIN
原因与解法:浏览器认为域名不存在,可能是域名本身无效,也可能是缓存或所选解析器返回了否定结果。先确认域名拼写,再用已知有效域名对照;切换解析器后清理缓存并重试。
报错:curl: (7) Failed to connect
原因与解法:若错误目标是本机代理地址,通常是内核未运行或监听端口不符,尚未进入目标域名解析阶段。核对实际端口,确认内核已启动,再执行同一命令。
报错:context deadline exceeded
原因与解法:这是通用超时信息,不能单凭这一行断定 DNS 故障。只有相邻日志明确指向 DNS 查询时,才检查解析服务可达性、连接出站和启动解析依赖;否则应继续定位对应的连接环节。
六、复测清单:保留分流,验证预期出口
完成修改后,把关闭代理、仅系统代理、TUN 三种状态分开记录。每种状态使用同一浏览器设置,记录解析器运营机构,而不仅是国家或地区。若结果与预期不一致,回到最近修改的设置,恢复后再重复测试。
- 浏览器:需要代理的测试请求使用预期出口,DNS 结果与配置相符;若重新启用了浏览器安全 DNS,单独再测一轮。
- 终端:显式 SOCKS 连接成功,系统解析测试也能给出合理结果;两者不要混记为同一条路径。
- 分流:直连域名仍可访问,需要代理的域名没有因远程解析失败而回落到意外直连。
- 日志:没有持续出现 DNS 超时、循环连接或配置加载失败;短时间可提高日志详细程度,定位后恢复日常等级。
- 配置留档:保存版本、内核、DNS 地址、TUN 状态和检测日期。对外求助前遮盖订阅地址、节点凭据及不希望公开的公网 IP。
验收结论:配置与检测结果应相互对应
不要为消除检测页上的所有差异而删除必要的直连规则。先证明需要代理的查询按预期转发,再保留正常的本地服务与直连访问,这比单看解析器数量更有操作价值。
七、DNS 防泄漏设置常见问题
远程 DNS 改了,为什么检测结果没变?
先确认修改的是正在使用的内核页,并保存后重启内核。再检查浏览器安全 DNS 是否单独指定了解析服务,以及应用查询是否真正进入内核;没有进入内核的查询,不会因为修改远程 DNS 自动改变。
显示两个解析器,是不是一定泄漏了?
不是。先查看两个地址的运营机构,再与关闭代理时的基线比较。公共解析器可能使用多个出口;只有与预期路径冲突的查询来源才需要继续排查。
开了 TUN,浏览器安全 DNS 还要关闭吗?
排查阶段可暂时关闭,用来减少变量。日常可以保留,但必须确认其 DoH 连接由路由送往预期出站。TUN 的普通 DNS 接管不等于可以改写所有加密 DNS 流量。
更换 DNS 后所有网站都打不开,怎么恢复?
先恢复记录的原始 DNS 配置并重启内核;使用 TUN 时可先关闭 TUN。恢复访问后,分别检查新解析器的协议格式、可达性和节点域名启动解析,不要继续叠加新的地址。