先确认 v2rayN 的核心、节点与本地入站端口正常,再把浏览器和终端拆开检查。浏览器重点确认代理设置由谁控制,终端重点确认当前进程是否读取了正确的 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY。完成文中的端口测试、环境变量检查与对照命令后,可以判断问题位于客户端、系统设置还是具体应用。
先确认代理链路的三个基础状态
“系统代理已开启”只代表操作系统保存了一组代理地址,不等于目标应用一定使用这组地址。完整链路至少包含三个环节:V2Ray 或 Xray 内核已经运行,本地监听端口能够接受连接,目标应用愿意读取系统代理或显式代理配置。任何一环断开,表现都可能是网页直连、请求超时或终端完全不走代理。
排查时不要先改 VMess、VLESS 或路由规则。先观察 v2rayN 主界面的运行状态和日志。节点连接成功后,本地通常会监听一个 SOCKS、HTTP 或 mixed 入站端口。v2rayN 7.x 常见配置使用 127.0.0.1 作为监听地址,端口则以「设置」→「参数设置」中的实际值为准。本文示例把 mixed 端口写为 10808,把独立 HTTP 端口写为 10809;如果界面显示不同数字,所有命令都要同步替换。
确认节点
在 v2rayN 主界面选中一个订阅节点并设为活动服务器,重新连接后确认状态不再持续停留在启动或重连阶段。
读取端口
进入「设置」→「参数设置」→「基础设置」,记录本地监听地址、mixed 端口或 HTTP 与 SOCKS 端口,不要凭旧教程猜端口。
查看日志
打开运行日志,确认没有端口占用、节点地址解析失败、TLS 握手失败或配置加载失败信息。
显式测试
先用命令显式指定代理访问测试地址。显式代理成功后,再继续检查系统代理和应用继承关系。
判断原则:显式指定 127.0.0.1 与正确端口仍然失败,优先查本地监听和客户端日志;显式指定后成功,只有浏览器或终端失败,则问题已经缩小到应用设置。
浏览器不生效:检查代理设置由谁控制
浏览器侧最常见的问题不是节点失效,而是代理来源冲突。浏览器可能跟随操作系统设置,也可能使用自己的网络配置,还可能由某个代理扩展接管。三个来源同时存在时,最后生效的地址不一定是 v2rayN 写入系统的 127.0.0.1。
基于 Chromium 的浏览器通常会调用系统网络设置,但不同运行参数、企业策略和扩展仍可能改变结果。Firefox 类浏览器可以独立选择“不使用代理”“使用系统代理设置”或“手动代理配置”。因此,同一台电脑上一个浏览器正常、另一个浏览器直连,并不矛盾。
暂停扩展
临时关闭所有会修改代理服务器、PAC 或网络请求路径的浏览器扩展,完全退出浏览器后重新打开。
核对系统
在 v2rayN 托盘菜单选择设置系统代理的模式,再打开操作系统代理页面,确认服务器是 127.0.0.1,端口与客户端当前 HTTP 或 mixed 入站一致。
检查浏览器
如果浏览器提供独立网络设置,先选择“使用系统代理设置”。需要手动填写时,HTTP 代理填写 127.0.0.1 与对应 HTTP 端口。
清理旧进程
关闭全部浏览器窗口,并在任务管理器确认后台进程已经退出。重新启动后再访问页面,避免旧进程继续沿用启动时读取的代理配置。
对照测试
分别用普通窗口和停用扩展后的窗口测试。如果只有原配置失败,逐个恢复扩展即可定位冲突来源。
报错: ERR_PROXY_CONNECTION_FAILED
原因与解法:浏览器已经尝试连接代理,但 127.0.0.1 对应端口没有服务监听。回到 v2rayN 查看核心状态,并把浏览器端口改成「参数设置」中显示的当前值。
报错: ERR_TUNNEL_CONNECTION_FAILED
原因与解法:浏览器连到了 HTTP 代理,但代理无法为 HTTPS 请求建立隧道。检查节点日志、协议参数和路由阻断规则,再换一个已知可用节点复测。
报错: The proxy server is refusing connections
原因与解法:浏览器的手动代理地址可达性失败,常见于把 SOCKS 端口误填为 HTTP 端口。改为 mixed 端口,或在 SOCKS 设置栏填写正确端口并选择 SOCKS5。
还要检查“绕过代理”的地址列表。localhost、127.0.0.1 和局域网地址通常应该直连,但如果列表里存在过宽的通配规则,普通网站也可能绕过代理。先把自定义绕过项备份,再保留必要的本地地址进行测试。确认恢复后,再逐条加回业务所需规则。
终端不生效:环境变量必须进入当前进程
多数终端程序不会主动读取桌面系统代理。curl、包管理器、运行时工具和脚本可能各自实现代理逻辑,最通用的做法是为当前终端会话设置 HTTP_PROXY、HTTPS_PROXY 和 ALL_PROXY。变量名大小写的兼容情况取决于程序,因此排查阶段可以同时设置大写与小写版本。
环境变量只会影响设置之后启动的进程。已经打开的终端、编辑器内置终端或后台任务不会自动获得新变量。修改系统级环境变量后,应关闭原窗口并新开终端;只在当前会话执行赋值,则关闭窗口后配置自然失效。
PowerShell 当前会话
$env:HTTP_PROXY = "http://127.0.0.1:10808"
$env:HTTPS_PROXY = "http://127.0.0.1:10808"
$env:ALL_PROXY = "socks5h://127.0.0.1:10808"
$env:NO_PROXY = "localhost,127.0.0.1"
Get-ChildItem Env:HTTP_PROXY
Get-ChildItem Env:HTTPS_PROXY
Get-ChildItem Env:ALL_PROXY
curl.exe -I --proxy http://127.0.0.1:10808 https://v2ray-os.com/zh-CN/
PowerShell 中的 curl 可能被映射为其他命令,因此示例明确调用 curl.exe。`-I` 只请求响应头,适合快速判断连接是否建立。如果 mixed 端口不是 10808,应改成 v2rayN 当前显示的端口。使用独立 HTTP 入站时,则把地址替换为类似 `http://127.0.0.1:10809` 的实际配置。
命令行与常见 Shell
export HTTP_PROXY="http://127.0.0.1:10808"
export HTTPS_PROXY="http://127.0.0.1:10808"
export ALL_PROXY="socks5h://127.0.0.1:10808"
export NO_PROXY="localhost,127.0.0.1"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
export no_proxy="$NO_PROXY"
env | grep -i proxy
curl -I --proxy socks5h://127.0.0.1:10808 https://v2ray-os.com/zh-CN/
报错: curl: (7) Failed to connect to 127.0.0.1 port 10808
原因与解法:本地端口没有监听,或命令使用了错误端口。确认 v2rayN 核心已启动,再从「设置」→「参数设置」读取当前入站端口。
报错: curl: (5) Could not resolve proxy
原因与解法:代理变量格式错误,常见原因是协议头遗漏、引号不完整或地址中混入空格。按 `http://127.0.0.1:10808` 的完整格式重新设置。
报错: curl: (35) OpenSSL SSL_connect
原因与解法:本地代理通常已经接通,但远端 TLS 建连失败。查看核心日志中的服务器名称、时间误差和握手信息,并用另一个可用订阅节点对照。
报错: connection reset by peer
原因与解法:连接建立后被远端或中间线路重置。先排除节点异常,再检查 VMess 或 VLESS 的传输层、TLS 与服务器名称是否和订阅下发内容一致。
注意:`socks5://` 通常由本机解析目标域名,`socks5h://` 会把域名交给代理侧处理。遇到终端中域名失败而直接 IP 可连接时,优先使用 `socks5h://` 复测,并继续检查 DNS 配置。
用对照测试定位系统代理、端口与路由问题
一次只改变一个变量,才能看出故障层级。建议依次执行直连请求、显式 HTTP 代理请求和显式 SOCKS5 请求,并记录状态码、连接时间与日志变化。如果直连成功而两种显式代理都失败,问题位于客户端或节点;如果显式代理成功而默认请求直连,问题位于系统代理继承或环境变量。
| 测试结果 | 优先判断 | 下一步 |
|---|---|---|
| 浏览器和显式命令都失败 | 核心未运行、端口错误或节点不可用 | 查看 v2rayN 日志,核对 127.0.0.1 与监听端口,切换可用节点 |
| 显式命令成功,浏览器失败 | 浏览器未跟随系统代理或扩展冲突 | 关闭代理扩展,重启浏览器,检查独立网络设置 |
| 浏览器成功,终端失败 | 终端程序未读取系统代理 | 设置 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY,再新开进程 |
| HTTP 成功,SOCKS 失败 | SOCKS 端口或代理类型填写错误 | 读取实际 SOCKS 或 mixed 端口,使用 socks5h 重新测试 |
| 连接成功但部分域名失败 | DNS 或路由分流规则不匹配 | 检查域名解析策略、规则命中结果与最终出站标签 |
结论:显式代理测试是分界线
先让 curl 通过明确的 127.0.0.1 与端口成功连接,再处理浏览器和终端继承问题。这样可以避免在节点、系统设置和应用配置之间反复试错。
检查路由规则是否让测试请求直连
代理端口可用并不代表所有请求都会走同一个出站。v2rayN 的路由配置可以按域名、IP、协议或入站标签选择直连、代理和阻断。测试地址命中直连规则时,页面能够打开,但从结果上看似乎“没有走代理”。这属于规则行为,不是系统代理失效。
- 在客户端日志中查找测试域名,确认请求是否进入本地入站。
- 查看该请求命中的规则与出站标签,区分 direct、proxy 和 block。
- 临时切换到简单的全局代理规则进行对照,测试完成后恢复原有路由分流。
- 订阅更新后重新选中活动节点,避免继续使用已失效的旧服务器记录。
- 修改 DNS 或路由后重启核心,再关闭并重新启动目标应用。
常见细节与最终检查顺序
系统代理状态频繁切换时,操作系统页面可能显示旧值,浏览器也可能保留启动时读取的配置。稳定的处理顺序是:退出目标应用,确认核心和节点,重新设置系统代理,再启动应用。不要同时切换节点、修改端口、调整 DNS 和重写路由,否则新问题会覆盖原始线索。
v2rayN 显示已连接,为什么浏览器仍然直连?
先进入操作系统代理页面确认地址与端口,再关闭浏览器代理扩展。完全退出浏览器后台进程后重开,并在客户端日志中检查访问域名是否出现。
终端设置了 HTTP_PROXY,为什么新命令还是不生效?
打印当前进程的环境变量,确认变量值包含协议、地址和端口。部分工具只读取小写变量,可同时设置 http_proxy 与 https_proxy,并在新终端窗口中复测。
HTTP_PROXY 和 ALL_PROXY 应该同时设置吗?
排查阶段可以同时设置。HTTP 与 HTTPS 请求优先使用对应变量,需要 SOCKS5 或代理侧解析域名的工具可读取 ALL_PROXY。确认具体工具行为后再保留必要变量。
换节点后必须重启浏览器吗?
节点切换通常不要求重启浏览器,但端口、系统代理模式或 PAC 配置发生变化时应重启。若旧连接长期复用,也可先关闭全部窗口再测试。
订阅更新成功后仍然无法连接怎么办?
订阅更新只说明配置列表已经拉取,不代表其中每个节点都可用。选择另一个节点,核对系统时间,并从核心日志判断是解析、握手还是连接超时。
恢复配置前的检查单
- 确认 v2rayN 当前活动节点来自最新订阅,核心日志没有持续重启。
- 确认浏览器、终端命令和客户端界面使用同一个本地端口。
- 确认浏览器只保留一个代理设置来源,不让系统设置与扩展互相覆盖。
- 确认终端环境变量已进入当前进程,并使用完整的协议前缀。
- 确认测试域名没有被 NO_PROXY、浏览器绕过列表或直连路由提前排除。
- 确认修改配置后重新连接核心,并重新启动需要读取代理设置的应用。
最终判断:先分应用,再分协议
浏览器正常而终端失败,直接检查环境变量;终端显式代理正常而浏览器失败,直接检查代理来源;两边同时失败,回到内核、监听端口和节点日志。按这个顺序处理,通常不需要重建订阅或大范围修改配置。