本文适合已经在 v2rayN 中选择节点、启动内核并打开系统代理,但浏览器或终端仍然直连的情况。排查顺序是先确认本地监听端口,再分别验证浏览器接管和终端显式代理,最后检查节点、路由与 DNS。完成后可以判断故障位于应用、系统代理、本地端口还是远端连接。
先区分四个环节,不要直接重装
“系统代理已打开”只说明操作系统保存了一组代理地址,不等于每个应用都已经使用这组地址。一次完整连接至少经过应用代理设置、系统代理配置、本地监听端口和远端节点四个环节。任意一环断开,表面现象都可能是网页打不开或出口没有变化。
浏览器通常会读取系统代理,但也可能被浏览器自己的代理设置、企业策略或代理扩展覆盖。终端程序则更分散:部分命令读取 HTTP_PROXY 与 HTTPS_PROXY,部分需要命令行参数,还有一些程序默认完全忽略系统代理。因此,浏览器正常而终端直连并不矛盾。
结论:先验证本地端口
不要把 10808 或 10809 当成固定值。应以 v2rayN 当前显示的监听配置为准,然后用显式代理命令访问同一地址。显式代理成功而系统代理失败,问题就在应用接管或系统设置;显式代理也失败,再查内核、端口和节点。
浏览器线:确认系统设置确实被接管
浏览器排查的第一步不是反复刷新网页,而是确认操作系统中实际写入的代理服务器。Windows 可进入「设置」→「网络和 Internet」→「代理」,查看手动代理是否指向 127.0.0.1,端口是否与 v2rayN 的 HTTP 监听端口一致。macOS 可进入「系统设置」→「网络」→当前网络→「详细信息」→「代理」核对相同内容。
确认节点活动
在 v2rayN 主界面选中可用服务器,将其设为活动服务器,再确认内核状态没有持续启动或退出。
重写系统代理
先执行一次「清除系统代理」,等待 3 秒,再选择「自动配置系统代理」。这一步用于清理遗留的旧地址与旧端口。
核对系统端口
打开系统代理页面,确认地址为 127.0.0.1,端口等于 v2rayN 当前 HTTP 端口。若界面显示 10809,系统设置也必须是 10809。
排除扩展覆盖
临时停用浏览器中的代理管理扩展,完全退出浏览器后重新打开。只关闭标签页通常不会重建代理进程。
新建干净窗口
使用新的浏览器配置或临时访客窗口测试,避免缓存的网络策略、扩展规则和旧连接复用影响判断。
如果一个浏览器正常、另一个浏览器失败,本地内核和远端节点通常已经可用,重点应转向失败浏览器的独立代理设置。部分浏览器可以选择“不使用代理”“使用系统代理”或“手动代理”,此处应选择使用系统设置,或者手动填入经过确认的本地 HTTP 端口。
报错:ERR_PROXY_CONNECTION_FAILED
原因与解法:浏览器已经尝试连接代理,但填写的本地地址没有程序监听——核对 127.0.0.1 后面的端口,确认 v2rayN 内核处于运行状态。
报错:ERR_TUNNEL_CONNECTION_FAILED
原因与解法:浏览器连到了 HTTP 代理,但代理无法为目标建立隧道——切换一个已测试可用的节点,再检查路由规则是否拒绝该域名。
报错:代理服务器拒绝连接
原因与解法:浏览器独立代理配置仍指向旧端口,或本地监听已变更——恢复为使用系统代理,关闭浏览器全部进程后重试。
- 只有普通窗口失败而访客窗口正常:优先检查浏览器扩展和配置文件。
- 所有浏览器都失败,但显式代理命令成功:优先检查系统代理地址、端口和例外列表。
- 浏览器能访问部分网站:继续检查路由分流、DNS 和域名规则,不要只盯着系统代理开关。
- 切换节点后旧页面仍失败:关闭旧标签页并等待数秒,避免复用之前建立的连接。
终端线:用环境变量或参数明确指定代理
终端中的 curl、包管理器和开发工具不一定读取桌面系统代理。最可靠的测试方式是给单次命令明确指定代理。如果单次命令成功,说明 v2rayN 的本地端口与节点正常,后续只需为具体工具配置环境变量或专用代理选项。
HTTP 代理与 SOCKS 代理不能只靠端口名称猜测。HTTP 测试应使用 v2rayN 显示的 HTTP 端口;SOCKS 测试应使用 SOCKS 端口。使用 socks5h 可以让域名解析交给代理端处理,适合区分本地 DNS 解析失败与代理连接失败。
curl.exe --proxy http://127.0.0.1:10809 https://v2raylink.com/
curl --proxy socks5h://127.0.0.1:10808 https://v2raylink.com/
# PowerShell 当前会话
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
# Linux 或 macOS 当前 shell
export HTTP_PROXY="http://127.0.0.1:10809"
export HTTPS_PROXY="http://127.0.0.1:10809"
export ALL_PROXY="socks5h://127.0.0.1:10808"
| 测试结果 | 可得出的判断 | 下一步 |
|---|---|---|
| HTTP 与 SOCKS 都成功 | 本地内核、监听端口和远端节点基本正常 | 检查具体终端工具是否读取环境变量 |
| HTTP 失败、SOCKS 成功 | HTTP 端口填错或未启用对应监听 | 回到参数设置核对 HTTP 端口 |
| HTTP 与 SOCKS 都拒绝连接 | 内核未监听、端口变化或进程已退出 | 检查内核日志和端口占用 |
| 连接建立后长时间超时 | 本地入口可达,远端节点或路由可能异常 | 切换节点并检查连接日志 |
报错:curl: (7) Failed to connect to 127.0.0.1 port 10809
原因与解法:该端口没有可用的 HTTP 监听——在 v2rayN 中查看实际端口,确认内核运行后用正确端口重试。
报错:curl: (5) Could not resolve proxy
原因与解法:代理地址格式错误,常见原因是多余引号、空格或协议头拼写错误——按 http://127.0.0.1:端口 的格式重新设置。
报错:connection reset by peer
原因与解法:连接已到达本地代理,但远端链路被中断——切换节点,并核对订阅中的服务器地址、端口和传输参数是否完整。
客户端线:检查监听、内核与端口占用
当浏览器与显式代理命令都失败时,应回到 v2rayN 检查本地服务。系统代理只是把流量指向本机端口,真正接收连接的是 V2Ray 或 Xray 内核。若内核启动失败、配置生成失败或端口被其他进程占用,系统代理开关仍可能保持开启,但所有连接都会失败。
打开基础设置
进入「设置」→「参数设置」→「基础设置」,记录本地监听地址、HTTP 端口与 SOCKS 端口。不同版本的字段排列可能不同,以界面实际值为准。
检查内核类型
进入「设置」→「参数设置」→「Core 类型」,确认当前节点使用的协议与所选内核能够匹配。VMess 与 VLESS 配置还应保留订阅提供的传输参数。
查看运行日志
重新启动内核后立即查看日志,重点搜索 failed、error、bind、refused 和 invalid 等关键词,不要只看系统托盘状态。
更换监听端口
若日志提示端口被占用,可将 HTTP 与 SOCKS 端口分别改到未占用值,保存并重启内核,随后重新写入系统代理。
更新订阅配置
在「订阅分组」中执行更新全部订阅,重新选择活动服务器。若只有单个节点失败,优先判断节点配置而不是客户端安装。
端口变更后必须同步更新三个位置:v2rayN 的监听设置、操作系统代理设置以及终端环境变量。只改其中一处会形成“客户端显示运行,应用仍连接旧端口”的错位。旧的终端窗口还会保留原环境变量,需要重新打开终端或在当前会话中覆盖。
报错:bind: Only one usage of each socket address is normally permitted
原因与解法:本地监听端口已被其他进程占用——结束占用进程或更换 v2rayN 端口,再重新设置系统代理。
报错:failed to start core
原因与解法:内核进程未能完成启动,可能是配置错误或文件访问失败——从同一时间点的日志向上查找第一条 error,按具体字段修复后重启。
报错:invalid config
原因与解法:生成的节点配置含缺失或不兼容字段——更新订阅并重新导入节点,避免手动混用 VMess 与 VLESS 的传输参数。
连接已建立仍不通:继续查路由与 DNS
本地端口可连接并不代表目标流量一定走远端代理。v2rayN 的路由分流会按域名、IP、协议或规则集决定出口。若目标域名被匹配到直连,出口地址不会变化;若被匹配到阻止规则,浏览器可能直接报连接失败。此时反复切换系统代理没有意义。
| 现象 | 更可能的原因 | 验证动作 |
|---|---|---|
| 显式代理成功,出口仍未变化 | 目标域名命中直连规则 | 临时切换到全局代理模式复测 |
| 域名失败,直接访问已知地址有响应 | 本地 DNS 解析异常 | 使用 socks5h 测试远端解析 |
| 仅一个节点持续超时 | 节点地址、端口或传输参数异常 | 切换同订阅中的另一节点对照 |
| VMess 可用而某条 VLESS 配置失败 | 单条配置的传输或安全参数不完整 | 更新订阅并对照日志中的握手错误 |
排查路由时应先做短时间对照测试:保持同一节点不变,分别使用规则分流与全局代理访问同一目标。如果全局模式成功而规则模式失败,就检查该域名最终命中的规则与出口。测试完成后再恢复日常分流配置,避免把全局模式当成永久修复。
结论:一次只改变一个变量
固定目标地址和节点,依次改变应用代理方式、端口、路由模式,每次只改一项。这样可以把故障稳定定位到浏览器接管、终端配置、本地监听或远端节点,避免同时切换节点、DNS 和规则后无法确认真正原因。
按结果收口:五分钟检查清单
完成排查后,不需要依赖“图标看起来正常”作判断。用明确的连接结果收口:系统设置中的端口与客户端一致、显式代理命令成功、浏览器在停用代理扩展后可访问、日志没有新的启动错误。以下顺序适合再次出现同类问题时快速复查。
- 确认 v2rayN 已选择活动服务器,内核日志显示启动完成。
- 记录实际 HTTP 与 SOCKS 端口,不要沿用记忆中的 10808 或 10809。
- 清除后重新设置系统代理,核对地址为 127.0.0.1 且端口一致。
- 停用浏览器代理扩展,彻底退出浏览器并重新打开。
- 使用 curl 的
--proxy参数分别测试 HTTP 与 SOCKS 入口。 - 显式代理成功后,再给终端工具设置当前会话环境变量。
- 只有规则模式失败时,检查路由命中与 DNS,不要继续改本地端口。
- 只有单个节点失败时,更新订阅并切换节点对照。
浏览器正常,为什么终端还是直连?
多数终端程序不自动读取桌面系统代理。给单次命令添加代理参数,或在当前 shell 设置 HTTP_PROXY、HTTPS_PROXY 与 ALL_PROXY。具体使用哪一个变量取决于工具支持的代理类型。
系统代理端口必须是 10809 吗?
不是。10809 只是常见示例值,端口可以被修改。系统代理、v2rayN 监听配置和终端环境变量必须使用同一个实际 HTTP 端口。
开启全局代理后恢复,说明哪里有问题?
这通常说明本地端口和节点可用,问题更可能位于路由分流。检查目标域名命中的规则、规则顺序和对应出口,测试后再恢复适合日常使用的分流模式。