本文适合 v2rayN 已显示节点连接正常、系统代理也已经开启,但浏览器或命令行仍然直连、超时或无法访问的情况。排查重点分为三层:先确认本地代理端口确实监听,再判断应用是否读取系统代理,最后检查 DNS、路由规则与终端环境变量。完成这些步骤后,可以明确问题发生在客户端、本机代理设置还是具体应用内部。
先分清系统代理影响哪些流量
“启动了 v2rayN”和“应用流量已经进入代理”是两件事。v2rayN 运行 Xray 内核后,会在本机回环地址上建立 SOCKS、HTTP 或混合入站端口;系统代理则把其中一个端口写入操作系统设置。只有主动读取该设置的应用,才会把请求交给本地端口。节点显示已连接,只能说明客户端具备出站条件,不能证明浏览器、终端或其他程序已经使用它。
以 v2rayN 7.x 的常见配置为例,本地 SOCKS 端口可见为 127.0.0.1:10808,HTTP 端口可见为 127.0.0.1:10809。实际端口应以「设置」→「参数设置」中的本地监听配置为准;如果改过起始端口,测试命令也要同步修改。把 HTTP 请求发到 SOCKS 端口,或把 SOCKS 地址写成 HTTP 地址,都会表现为连接失败。
| 应用类型 | 通常读取的设置 | 首先检查的位置 |
|---|---|---|
| Chromium 系浏览器 | 通常跟随 Windows 系统代理,但可能受企业策略或浏览器扩展影响 | 系统「网络和 Internet」→「代理」 |
| Firefox | 可选择系统代理,也可保存独立代理配置 | 浏览器「设置」→「网络设置」 |
| PowerShell、curl、包管理工具 | 依工具实现读取环境变量或命令参数,不应假定自动跟随系统设置 | HTTP_PROXY、HTTPS_PROXY 与工具配置 |
| v2rayNG、v2flyNG | 在 Android 上通过系统 VPN 服务接管所选应用流量 | 应用代理开关、分应用设置与路由规则 |
结论:先判断应用有没有进入本地端口
只要浏览器与终端的结果不同,就优先检查两者各自的代理入口,不要反复更换同一个节点。节点、订阅和协议参数完全相同时,应用是否读取代理设置才是最常见的分界线。
先验证 v2rayN 本地端口是否可用
开始检查浏览器之前,应先排除客户端端口未监听、端口被占用或内核没有成功启动。将 v2rayN 切换到准备使用的节点,查看主界面或运行日志是否出现启动成功信息,再核对当前 Core 类型。VMess、VLESS 等节点参数由核心处理,系统代理本身不会修正服务器地址、端口、传输层或用户标识填写错误。
确认核心启动
在 v2rayN 主界面选中节点并设为活动服务器,打开运行日志。正常情况下会看到核心启动与本地入站监听信息;如果窗口持续显示重启或退出,应先处理日志中的配置错误。
核对监听端口
进入「设置」→「参数设置」,记录本地 SOCKS 与 HTTP 端口。本文示例使用 SOCKS
10808、HTTP10809,不要直接套用与界面不一致的数字。设置系统代理
打开 v2rayN 的「系统代理」菜单,选择自动配置系统代理。随后进入 Windows「设置」→「网络和 Internet」→「代理」,确认地址指向
127.0.0.1,端口与客户端当前 HTTP 监听一致。测试回环连接
在 PowerShell 中执行
Test-NetConnection 127.0.0.1 -Port 10809。结果中的TcpTestSucceeded应为True;若为False,问题仍在本地监听或端口占用。做显式代理测试
执行
curl.exe --proxy http://127.0.0.1:10809 -I https://example.com。一次正常的本机测试中,回环建连时间通常低于 0.01 秒;远端响应耗时则取决于节点线路。
报错: curl: (7) Failed to connect to 127.0.0.1 port 10809
原因与解法:指定端口没有程序监听,常见原因是核心未启动、HTTP 端口填写错误或端口已被其他程序占用。回到「设置」→「参数设置」核对端口,重启核心后再次测试。
报错: failed to start app/proxyman/inbound: failed to listen TCP
原因与解法:本地监听端口发生冲突。关闭占用该端口的程序,或在参数设置中改用未占用端口,例如将 HTTP 端口由 10809 调整为 10909,然后让系统代理同步到新端口。
节点延迟测试可能通过客户端内部请求完成,即使系统代理地址写错也能得到结果。排查系统代理必须直接测试 127.0.0.1 的实际监听端口,并用显式代理请求确认数据可以经过核心。
浏览器不走代理的检查顺序
如果显式 curl 代理请求成功,而浏览器访问仍然直连,说明节点和本地端口大概率可用,下一步应聚焦浏览器读取代理设置的方式。先完全退出浏览器再重新打开,避免旧进程保留连接池或启动时读取的代理状态。仅关闭一个标签页通常不足以重建所有网络进程。
Chromium 系浏览器通常调用 Windows 系统代理,但独立代理扩展、受管理策略和启动参数可能覆盖系统设置。Firefox 则可以在自己的网络设置中选择“不使用代理”“使用系统代理设置”或“手动代理配置”。若只在 Firefox 中失败,应进入「设置」→「常规」→「网络设置」,选择使用系统代理,或者按 v2rayN 当前端口填写 HTTP 与 SOCKS 地址。
- 确认系统手动代理地址是
127.0.0.1,而不是已经失效的局域网地址。 - 确认端口与 v2rayN 当前配置一致,尤其注意切换配置目录后端口可能恢复默认值。
- 暂时停用会改写代理规则的浏览器扩展,再重启整个浏览器进程测试。
- 检查 Windows 代理设置中的例外列表,目标域名若被加入绕过清单,会直接连接。
- 分别测试普通窗口与隐私窗口;结果不同通常说明扩展权限或浏览器配置文件存在差异。
- 不要用已经缓存的单个页面判断结果,可打开开发者工具并测试一个新的 HTTPS 请求。
报错: ERR_PROXY_CONNECTION_FAILED
原因与解法:浏览器已经尝试使用代理,但无法连接配置中的本地地址。核对 Windows 系统代理端口与 v2rayN HTTP 监听端口,并确认核心进程仍在运行。
报错: ERR_TUNNEL_CONNECTION_FAILED
原因与解法:浏览器连到了 HTTP 代理,但 HTTPS 隧道未能建立。先用同一端口执行显式 curl 请求,再查看运行日志中是否存在节点超时、TLS 参数错误或路由阻断。
报错: PR_CONNECT_RESET_ERROR
原因与解法:连接在建立过程中被重置,不能只凭该提示判断系统代理失效。将 Firefox 改为使用系统代理后重试,并对照 v2rayN 日志确认请求是否进入核心。
为什么一个浏览器能打开,另一个打不开?
先比较两者的代理来源。一个可能跟随 Windows 系统代理,另一个保存了手动端口。将独立配置改为 127.0.0.1 与当前 HTTP 端口,彻底退出两个浏览器后再测。
关闭扩展后还是显示直连怎么办?
检查浏览器快捷方式是否附带代理启动参数,并查看系统代理例外列表。随后执行显式 curl 代理测试;显式测试成功而浏览器失败时,应继续排查浏览器策略与配置文件。
开了系统代理后局域网页面打不开?
在系统代理的绕过列表中保留本地地址,或在 v2rayN 路由规则中让私有地址直连。常见私有网段包括 10.0.0.0/8、172.16.0.0/12 与 192.168.0.0/16。
浏览器重启后代理又消失了?
检查 v2rayN 的系统代理模式是否为“不改变系统代理”,并确认退出客户端时是否清除了系统设置。需要常态使用时,在客户端启动后重新选择自动配置系统代理。
命令行终端要单独配置代理
命令行工具不能统一视为“自动读取系统代理”。同一个终端中,curl、PowerShell 模块、运行时包管理器和独立下载程序可能采用不同策略。最可靠的验证方法是先给单条命令显式传入代理地址,再决定是否设置当前会话的环境变量。这样可以避免把工具配置问题误判为 v2rayN 节点故障。
HTTP 代理地址应使用 v2rayN 的 HTTP 监听端口,例如 http://127.0.0.1:10809。需要使用 SOCKS 时,可写成 socks5h://127.0.0.1:10808;其中 socks5h 表示让代理端解析目标域名,可减少本地 DNS 解析与代理出站结果不一致的问题。具体工具是否支持该写法,应以命令自身的代理参数为准。
# PowerShell:仅影响当前窗口中随后启动的程序
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
$env:NO_PROXY="localhost,127.0.0.1"
# 显式测试 HTTP 代理
curl.exe --proxy http://127.0.0.1:10809 -I https://example.com
# 显式测试 SOCKS,并让代理端解析域名
curl.exe --proxy socks5h://127.0.0.1:10808 -I https://example.com
:: Windows 命令提示符:仅设置当前窗口
set HTTP_PROXY=http://127.0.0.1:10809
set HTTPS_PROXY=http://127.0.0.1:10809
set NO_PROXY=localhost,127.0.0.1
# macOS 或 Linux 的 shell:仅设置当前会话
export HTTP_PROXY=http://127.0.0.1:10809
export HTTPS_PROXY=http://127.0.0.1:10809
export NO_PROXY=localhost,127.0.0.1
| 现象 | 判断 | 处理方式 |
|---|---|---|
| 浏览器成功,curl 直连 | curl 没有采用系统代理 | 使用 --proxy 或设置当前会话环境变量 |
| 显式 HTTP 代理成功,环境变量失败 | 变量名、作用域或工具读取规则有误 | 同时设置大写与工具要求的变量,重启对应终端进程 |
| HTTP 端口失败,SOCKS 端口成功 | HTTP 入站端口错误或未监听 | 核对参数设置,不要把 10808 与 10809 混用 |
| 本机地址也被代理 | 缺少绕过配置 | 设置 NO_PROXY=localhost,127.0.0.1 |
报错: curl: (5) Could not resolve proxy: 127.0.0.1:10809
原因与解法:代理变量格式可能被写错,例如把地址与协议拆成了不可识别的值。将变量完整写为 http://127.0.0.1:10809,清除多余引号与空格后重开终端。
报错: curl: (97) connection to proxy closed
原因与解法:常见于代理协议与端口类型不匹配。HTTP 地址应连接 HTTP 端口,SOCKS 地址应连接 SOCKS 端口;核对后再分别执行两条显式测试命令。
结论:终端排查以显式参数为基准
单条带 --proxy 的命令成功,说明本地端口与节点链路已经可用。此后应修正环境变量或具体工具配置,而不是继续切换订阅、协议或路由规则。
端口正常仍无法访问时检查 DNS 与路由
本地端口可连接,只能证明应用成功到达代理入口。请求进入 Xray 后,还会经过域名解析、路由匹配和代理出站。若规则把目标域名送往直连出口,外部观察结果仍可能显示本地网络;若节点服务器域名解析失败,则所有经该节点转发的请求都可能超时。此时应在复现问题的同时观察运行日志,而不是只看浏览器错误页。
先把测试范围缩小到一个节点、一个浏览器和一个显式 curl 命令。临时停用复杂的自定义路由,保留私有地址直连,其余测试请求交给代理出站。如果这样恢复,问题通常位于规则顺序、域名集合或出站标签;如果仍失败,则检查订阅中的服务器地址、端口、VMess 或 VLESS 用户参数、TLS 与传输方式是否和服务端一致。
- 在 v2rayN 运行日志中找到测试时间点,确认能看到目标域名或目标地址。
- 看到请求但显示直连时,检查路由规则命中的出站标签与规则优先级。
- 看到
timeout时,区分连接节点服务器超时和连接最终目标超时。 - 看到域名解析失败时,核对节点服务器地址拼写,并切换到可用 DNS 后重启核心。
- 完全看不到请求时,返回应用代理设置继续排查,不要先修改节点协议参数。
报错: failed to find an available destination
原因与解法:核心没有得到可用的目标地址,可能是域名解析失败或路由结果不可用。检查节点服务器地址拼写、DNS 配置与路由出站标签,修改后重启核心。
报错: dial tcp: i/o timeout
原因与解法:到节点服务器或最终目标的 TCP 连接超过等待时间。先换同订阅中的另一个节点做对照,再核对服务器端口、本机时间和网络是否允许该连接。
报错: invalid user
原因与解法:节点身份参数未被服务端接受,常见于订阅内容过期或手动编辑时填错用户标识。这与系统代理开关无关,应更新对应订阅分组并重新选择节点。
系统代理依赖应用主动读取代理设置,TUN 模式则通过虚拟网卡接管更广范围的 IP 流量。浏览器与终端问题可以先用系统代理和显式端口完成定位;只有明确遇到不支持代理配置的应用时,再评估是否启用 TUN,并同步检查管理员权限、DNS 与路由规则。
按结果选择对应修法
排查结束后,不必同时修改所有设置。最有效的方法是保留一个已知可用节点,以测试结果决定下一步:回环端口失败就处理核心与端口;显式代理成功但浏览器失败就处理浏览器代理来源;浏览器成功但终端失败就处理命令参数和环境变量;所有应用都能进入日志但出站失败,再检查 DNS、路由与节点配置。
改完端口后系统代理还是旧数字?
先在 v2rayN 的「系统代理」菜单中清除系统代理,再重新选择自动配置。随后到 Windows「设置」→「网络和 Internet」→「代理」确认新端口已经写入。
退出 v2rayN 后浏览器全部打不开?
系统仍可能保留指向本地端口的代理设置,而客户端已经停止监听。重新启动客户端,或在系统代理菜单中执行清除,再确认 Windows 手动代理已关闭。
只有终端里的某个工具不工作?
先查该工具是否支持 HTTP_PROXY、HTTPS_PROXY 或独立代理参数。用 curl 显式代理成功后,问题已经缩小到该工具自身配置,不需要重装 v2rayN。
更新订阅后突然全部超时?
手动更新对应订阅分组,重新选择节点并检查运行日志。若本地端口仍可连接但多个节点同时超时,应对照订阅参数、系统时间与当前网络环境。
Android 上也要设置 127.0.0.1 端口吗?
通常不需要照搬桌面系统代理步骤。v2rayNG 与 v2flyNG 通过 Android 的 VPN 服务接管流量,应检查应用连接状态、分应用代理、路由模式与运行日志。
最终判断:用三次测试锁定故障层
依次执行本地端口测试、显式代理请求和应用内访问。前一步失败就停在该层修复,前两步成功而第三步失败时只检查具体应用。这个顺序能避免在端口错误时反复改路由,也能避免在终端未设置代理时误删可用节点。