本文速览

适合 v2rayNG 已出现 VPN 标识、或 v2rayN 已启动内核,却仍打不开网页的情况。先确认本地网络与系统时间,再检查应用流量有没有进入客户端,随后分开验证 DNS、路由和节点。每次只改一项,保留一次失败请求的日志,比反复更换整份配置更容易找出原因。

一、先区分“已启动”和“请求成功”

Android 状态栏出现 VPN 标识,表示系统已经建立本地 VPN 接口,不等于远端节点认证成功。v2rayN 显示内核运行,也只说明本地进程已启动。网页能否打开,还取决于应用接管、域名解析、路由选择、远端连接和目标网站响应。

先固定一个测试动作:使用同一个浏览器,打开同一个完整的 HTTPS 地址。另选一个平时能访问的网站作为对照。不要一边更换节点,一边改 DNS 和浏览器设置,否则恢复后也不知道是哪项起效。

看到的现象优先检查下一步动作
全部应用都失败本地联网、VPN 接管、节点出口停止代理后先验证基础网络
只有一个浏览器失败浏览器代理扩展、安全 DNS、分应用列表换另一个浏览器做同地址对照
部分域名失败DNS、域名规则、目标网站限制查看失败请求对应的域名与出站
节点测试有结果,网页仍失败实际应用的流量路径不要把测试结果当作全链路证明

二、核对基础网络与系统时间

先停止 v2rayNG 的连接,或在 v2rayN 的「系统代理」中选择「清除系统代理」。若同时开启了 TUN,也要暂时关闭。仅清除系统代理不会自动停止 TUN 接管。再打开日常可访问的网站,确认 Wi-Fi 或移动数据本身能用。

  1. 检查联网

    关闭代理后打开浏览器。公共 Wi-Fi 若弹出登录页,先完成网络认证;若仍不能联网,切换到移动数据再测,不要先修改节点参数。

  2. 校准时间

    Android 通常在「设置」→「系统」→「日期和时间」开启自动设置时间。Windows 在「设置」→「时间和语言」→「日期和时间」中开启自动设置并执行同步;手机厂商的菜单名称可能不同。

  3. 恢复连接

    回到客户端,选择原节点并重新启动连接。设备时间偏差可能影响证书有效期判断,也可能让 VMess 的时间相关认证失败;只修改时区显示不能修正错误的实际时间。

  4. 记录结果

    记下网络类型、节点名称、失败地址和请求时间。后续每次测试沿用这个地址;网络切换后重新连接,避免把旧连接状态当成新网络的结果。

三、确认浏览器流量进入客户端

v2rayNG 要先获得 Android 的 VPN 授权。若设备正在运行另一个占用系统 VPN 接口的工具,先停止该工具,再启动 v2rayNG。v2rayN 则要区分系统代理和 TUN:前者只对遵循系统代理设置的应用有效,终端程序通常还需要单独指定代理。

在 v2rayNG 的侧边菜单进入「设置」→「分应用代理」,检查开关、列表和模式。启用“仅代理选中的应用”时,浏览器必须被选中;使用绕过模式时,被选中的浏览器反而不会经过代理。不同版本的模式文案可能有差异,要以界面描述为准。

桌面端还可以显式指定本地代理,绕开浏览器的代理设置做对照。下面是示例端口,不是所有版本的固定默认值。先查看客户端当前的监听设置,再把命令里的端口改成实际值。

10808
下方 SOCKS 测试示例端口
10809
下方 HTTP 测试示例端口
443
HTTPS 常见目标端口,非节点固定端口
# Windows 终端;目标地址替换为需要复现问题的网站
curl.exe --proxy socks5h://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/
curl.exe --proxy http://127.0.0.1:10809 --connect-timeout 10 --max-time 20 -I https://example.com/

socks5h 表示把目标域名交给代理端处理。若显式代理能返回 HTTP 状态,而浏览器仍失败,优先检查浏览器和系统代理接管。返回 403 或 405 也说明收到了 HTTP 响应,并不等于页面访问权限正常;个别网站不接受 HEAD 请求,可去掉 -I 再试。

四、分开排查节点域名与网站 DNS

DNS 有两个容易混淆的对象:节点服务器地址,以及准备访问的网站地址。如果节点地址本身是域名,客户端必须先找到它的 IP 才能建立出站。此时把所有 DNS 请求都送进尚未建立的代理,可能形成依赖环路。

另一种情况是节点可连接,但网站域名解析失败。浏览器自己的安全 DNS、Android 的私人 DNS、客户端 DNS 规则可能参与不同的解析路径。Android 通常可在「设置」→「网络和互联网」→「私人 DNS」查看当前状态;厂商界面可能放在「连接与共享」内。

报错片段:no such host

原因与解法:相关域名未得到可用解析结果。先看日志里的具体主机名,核对拼写与 DNS 可达性;若它是节点域名,确认解析不依赖尚未建立的代理。

报错片段:connection refused

原因与解法:目标地址的连接被拒绝。若目标是 127.0.0.1,核对本地监听端口与内核状态;若是远端节点,核对订阅端口并确认服务是否运行。

报错片段:i/o timeout

原因与解法:操作在期限内没有完成,不能单凭这句判定 DNS 故障。结合前后的目标地址与操作阶段,分别验证网络、解析和远端连接。

五、核对路由顺序与分流命中

如果只有部分网站失败,先看它们实际走了哪个出站。V2Ray/Xray 的路由规则按顺序匹配,前面的规则命中后,后面的规则通常不会再决定该连接。宽泛的直连规则若放在前面,可能让原本准备代理的网站走了直连。

v2rayNG 可从侧边菜单进入「路由设置」,检查当前规则与模式;v2rayN 从「设置」→「路由设置」核对所用规则集。界面中的模式名称可能随版本变化,重点是确认测试请求使用的出站,而不是只看模式标题。

  1. 保存当前路由配置,或截图记录当前模式,方便恢复。
  2. 短时使用把普通网站流量送往代理的测试模式,保留局域网必要的直连规则。
  3. 重新建立连接,再访问原来失败的网站,避免旧连接复用影响判断。
  4. 如果恢复访问,回到自定义规则,按从上到下的顺序核对域名、IP、出站标签及规则数据库。

geosite:cn 是域名集合条件,geoip:private 是私有地址集合条件,两者不是一回事。引用规则数据库时,文件缺失、集合名称错误可能导致加载失败,应以启动日志为准。也不要把含有域名条件和 IP 条件的同一条规则,想当然地理解成任意满足一个就匹配。

结论:测试模式恢复后,优先修规则

同一个节点、同一个网络下,只有切换路由模式才能打开原网站,就先比较两套规则的命中差异。此时反复更换 TLS 或传输参数,通常会让排查范围变大。

六、最后验证节点与服务端参数

流量已经进入客户端、DNS 也有结果,仍无法建立远端连接,再查节点本身。先更新订阅,确认当前选中的条目没有被旧配置替代。订阅更新只表示取回配置,不代表服务端一定在线,也不代表账户额度仍可用。

做两组对照就够:同一网络换另一个已知可用节点,同一节点换另一种本地网络。如果其他节点能用而这个节点始终失败,重点查节点配置、服务端状态和账户;如果所有节点只在某个 Wi-Fi 下失败,重点查该网络的限制和解析路径。对照结果是定位线索,不是单次测试就能确认的最终结论。

七、恢复设置与常见追问

找到原因后,把用于对照的临时设置逐项恢复。尤其是全量代理模式、私人 DNS 和浏览器安全 DNS,不应因为测试时改过就一直搁置。先确认原失败地址恢复,再测试一个直连网站和需要访问的局域网服务,避免修好一处又改变了另一处的路径。

有延迟数字,为什么还是打不开?

先看执行的是端口测试还是真实请求测试。端口可连接不代表认证、DNS 和目标网站都正常;即使测试请求成功,也只证明那条测试路径可用。接着用浏览器访问同一地址,并核对它是否进入代理。

浏览器能开,其他应用不能用?

在 v2rayNG 检查分应用代理的列表与模式;在 v2rayN 确认该应用是否遵循系统代理。不要把浏览器成功当作所有应用都已接管的依据,需要时再按教程配置 TUN 并单独验证。

锁屏后不通,重开客户端就好了?

检查 Android「设置」→「应用」→「v2rayNG」→「电池」中的后台活动限制,具体入口随设备变化。允许必要的后台运行后,锁屏再测;若仅切换网络后发生,还要检查重连情况。

已经改乱了,要不要直接重装?

先备份订阅分组和自定义规则,恢复一份已知可用的基础配置,再只选一个节点测试。重装不能修复远端服务中断,还可能丢失定位所需的配置与日志,不应作为第一步。