“网页可以打开,但终端命令仍然直连”通常不是节点本身失效,而是应用读取代理配置的方式不同。v2rayN 启动内核后,会在本机监听 SOCKS、HTTP 或混合代理端口;系统代理开关只是把其中一个入口写入操作系统设置,并不会强制所有进程把流量交给该端口。
浏览器、桌面软件、PowerShell、命令提示符和 Linux shell 对系统代理的处理并不一致。排查时应把问题拆成三层:本地监听端口是否存在、应用是否知道代理地址、代理请求是否被路由到正确出站。只检查节点延迟,无法覆盖这三层。
本文速览
本文适合遇到“浏览器正常、curl 或包管理器不通”“系统代理已开启但部分程序仍直连”的用户。按照端口监听、系统代理、终端环境变量、TUN 接管和路由日志五个层次检查,可以判断故障发生在客户端入口、应用配置还是代理出站。
先分清系统代理、本地端口与 TUN
v2rayN 的运行可以分成“内核监听”和“应用接入”两个阶段。选中节点并启动服务后,Xray 或 v2fly 内核先在本机创建入站端口;浏览器或终端只有把请求发送到该端口,后续的 VMess、VLESS 等协议连接才会发生。节点协议与本地代理协议不是同一概念:远端使用 VLESS,不代表终端也要理解 VLESS,终端通常只连接本机的 HTTP 或 SOCKS 入口。
应用发起请求
读取代理配置
连接本地端口
规则匹配分流
代理出站
系统代理主要影响主动读取操作系统代理设置的应用。常见浏览器通常会读取这项设置,所以开启 v2rayN 系统代理后网页立即恢复;很多命令行工具则只读取自己的配置文件或
HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 环境变量,因此终端仍可能直接连接目标地址。10808
常见本地 SOCKS 端口
10809
旧配置常见 HTTP 端口
127.0.0.1
默认本机监听地址
5 秒
端口测试建议超时
结论:先验证本地入口,再调整远端节点
如果终端连不上
127.0.0.1 的代理端口,问题发生在本机监听或端口填写阶段;此时反复切换 VMess、VLESS 节点不会解决应用接入失败。检查 v2rayN 系统代理与监听端口
先确认 v2rayN 主界面中的当前服务器已设为活动节点,底部运行状态没有持续报错。随后打开日志,观察内核是否完成启动。仅导入订阅或选中列表行并不等于已经启用代理;订阅负责提供节点配置,系统代理负责把支持该设置的应用引到本地入口。
-
确认活动节点
在服务器列表选中一个节点,通过右键菜单设为活动服务器。确认主界面底部显示内核正在运行,而不是停留在启动失败或配置解析错误状态。 -
读取本地端口
打开「设置」→「参数设置」→「基础设置」,记录本地监听地址、SOCKS 端口、HTTP 端口或混合端口。后续命令必须使用这里显示的实际数值。 -
设置代理模式
打开「系统代理」,选择“自动配置系统代理”或当前版本中对应的启用项。若之前残留了手工代理,先选择“清除系统代理”,再重新启用。 -
检查路由模式
在「设置」→「路由设置」中确认当前规则集。测试阶段可先排除目标域名被错误送往直连出站的情况,确认后再恢复所需分流。 -
重启目标应用
完全退出浏览器或桌面应用后重新打开。部分程序只在启动时读取系统代理,运行期间切换 v2rayN 开关不会立即更新已有连接。
Windows 可以使用 PowerShell 检查端口是否监听。把示例中的端口改成 v2rayN 界面显示的数值:
Test-NetConnection 127.0.0.1 -Port 10808
Test-NetConnection 127.0.0.1 -Port 10809
结果中的
TcpTestSucceeded 为 True,说明至少有进程接受该端口连接;它并不能证明远端节点一定可用。若结果为 False,应返回 v2rayN 检查内核启动、端口冲突和安全软件规则,而不是继续配置终端环境变量。- 端口被其他程序占用时,日志通常会出现监听失败或地址已被使用的信息。
- 监听地址为
127.0.0.1时,只允许本机应用连接,局域网其他设备不能直接使用。 - 修改端口后需要重启内核,旧终端窗口中的环境变量也要同步更新。
- 系统代理中记录的端口必须与当前 HTTP 或混合入口一致,不能把只支持 SOCKS 的入口当作 HTTP 代理填写。
浏览器正常但终端直连的处理方法
终端本身只是命令运行环境,真正决定是否读取代理的是具体程序。
curl、包管理器、脚本运行时和远程下载工具可能采用不同变量。最稳妥的验证方式是先对单条命令显式指定代理;确认有效后,再决定是否写入当前会话、用户环境或工具自己的配置文件。先用 curl 显式指定代理
若本地入口是 HTTP 或混合代理,可执行以下命令。
--connect-timeout 5 把连接阶段的等待限制为 5 秒,便于区分端口拒绝和远端响应缓慢:curl --proxy http://127.0.0.1:10809 --connect-timeout 5 https://example.com/
若界面确认 10808 是 SOCKS5 入口,则使用
socks5h。末尾的 h 表示域名解析也交给代理端处理,可避免本地 DNS 结果与代理链路不一致:curl --proxy socks5h://127.0.0.1:10808 --connect-timeout 5 https://example.com/
为当前终端会话设置变量
在 PowerShell 中,环境变量仅对当前窗口以及从该窗口启动的子进程生效。关闭窗口后设置消失,适合排查和临时任务:
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
$env:ALL_PROXY="socks5h://127.0.0.1:10808"
curl --connect-timeout 5 https://example.com/
在 macOS 或 Linux 的 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"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
结论:显式代理成功,说明节点链路基本可用
同一条命令在不带
--proxy 时失败、带代理参数后成功,故障点通常是终端没有读取代理配置。此时应处理环境变量或工具配置,而不是重新导入订阅。环境变量仍不生效时逐项核对
变量名称正确不代表每个工具都会采用它。某些程序优先读取自身配置,某些程序只支持 HTTP 代理,还有些程序启动后会缓存变量。排查时应在同一个终端窗口查看变量值并立即发起请求,避免把“新窗口没有继承”和“代理服务器不可用”混为一谈。
报错:curl: (7) Failed to connect to 127.0.0.1 port 10809
原因与解法:指定端口没有进程监听,或 v2rayN 已更换本地端口。返回「设置」→「参数设置」→「基础设置」读取实际端口,重启内核后再次测试。
报错:curl: (5) Could not resolve proxy: 127.0.0.1:10809
原因与解法:代理变量格式可能包含多余引号、空格或错误协议前缀。将值完整写成
http://127.0.0.1:10809,不要只写主机与端口。报错:connection reset by peer
原因与解法:本地端口已接受连接,但远端链路、传输层或路由出站中断。切换一个已确认可用的节点,并在 v2rayN 日志中核对目标域名对应的出站与错误时间。
报错:proxy CONNECT aborted
原因与解法:工具按 HTTP 代理连接到了不兼容的 SOCKS 入口。改用客户端显示的 HTTP 或混合端口,或者把命令代理协议改成
socks5h://。检查当前会话读取到的值
# PowerShell
Get-ChildItem Env:HTTP_PROXY
Get-ChildItem Env:HTTPS_PROXY
Get-ChildItem Env:ALL_PROXY
# macOS 或 Linux shell
env | grep -i proxy
- 变量值中不应包含全角引号、尾部注释或换行。
NO_PROXY或no_proxy中若包含目标域名,该请求会绕过代理。- 从桌面快捷方式启动的终端,未必继承另一个终端刚设置的变量。
- 已经运行的开发工具通常不会自动读取后来修改的系统环境,需要完全退出后重启。
- HTTP 代理地址可以承载 HTTPS 目标的 CONNECT 请求,变量值不必因为目标是 HTTPS 就改成一个不存在的 TLS 监听端口。
如果只有某一个命令不生效,而
curl --proxy 已经成功,应查看该工具的代理配置优先级。不要同时在系统代理、环境变量和工具配置中填写三个不同端口,否则日志很难判断请求实际进入了哪个入口。需要接管更多程序时再考虑 TUN 模式
TUN 模式通过虚拟网络接口捕获更多 IP 流量,不依赖每个应用主动读取系统代理。因此,当目标程序明确忽略系统代理、无法设置环境变量,或需要统一接管多个命令行进程时,TUN 比逐个配置更直接。但它改变的是流量入口,不会自动修复节点参数、证书域名、DNS 或路由规则。
程序建立连接
TUN 接收流量
DNS 解析
路由规则匹配
选择出站
- 先确认普通 HTTP 或 SOCKS 入口能够通过显式代理完成请求。
- 在 v2rayN 的 TUN 相关设置中启用虚拟网卡模式,并按系统提示授予创建网络接口所需权限。
- 检查路由规则是否把局域网、回环地址和必要的本地服务保留为直连。
- 重新测试终端请求,同时查看日志中的入站类型、目标地址和出站标签。
- 出现全局断网时先关闭 TUN,确认系统默认路由恢复,再检查 DNS 与虚拟接口状态。
TUN 适合处理不读取系统代理的程序,但浏览器与终端表现不一致时,不必一开始就启用。显式代理命令能更快给出边界:本地端口通不通、协议前缀对不对、节点是否能建立出站。只有这些基础项正常,TUN 排查才有清晰起点。
按现象定位路由、DNS 与订阅问题
当浏览器和终端都已经进入 v2rayN,但访问结果仍不同,应继续看域名解析和路由匹配。浏览器可能使用自身缓存,终端可能调用系统 DNS;两者获得的目标地址不同后,也可能命中不同的 geoip、域名或私有地址规则。
现象:域名失败,但直接访问目标 IP 有响应
原因与解法:优先检查 DNS。使用
socks5h 让代理端处理域名解析,并在 v2rayN 日志中确认域名是否被解析为预期地址。现象:部分域名正常,部分域名始终直连
原因与解法:当前路由规则可能按域名、IP 区域或私有网段选择直连出站。打开「设置」→「路由设置」,核对规则顺序与目标出站。
现象:更新订阅后端口突然变化
原因与解法:订阅通常更新服务器条目,不应直接决定本地监听端口。检查是否同时导入了客户端配置、恢复了旧设置,随后统一修改环境变量中的端口。
订阅链接提供的是节点集合,更新订阅后仍需选定活动服务器。若节点列表刷新成功但内核日志显示配置无法启动,系统代理即使保持开启,也只会把浏览器请求送到一个没有正常工作的本地入口。此时应先解决启动日志中的第一条配置错误。
| 测试结果 | 优先检查位置 | 下一步 |
|---|---|---|
| 本地端口测试失败 | 内核状态、端口冲突 | 重启内核并读取日志 |
| 显式代理成功,普通命令失败 | 环境变量、工具配置 | 统一代理地址与协议 |
| HTTP 成功,SOCKS 失败 | 入口类型、端口填写 | 按界面确认 SOCKS 端口 |
| 域名失败,IP 有响应 | DNS 与域名路由 | 使用 socks5h 并查看日志 |
| 所有入口连接成功但请求中断 | 节点、传输层、远端出站 | 切换已验证节点进行对照 |
完成排查后的验证与恢复
修复后不要只用一个网页判断结果。至少完成本地端口、显式代理、普通终端请求和浏览器四项验证,并确认退出 v2rayN 后系统代理能够被清理。这样可以避免当前窗口看似恢复,但系统中仍残留旧端口。
-
复测监听端口
用Test-NetConnection或等价工具确认当前端口可连接,并核对测试端口与参数设置中的数值完全一致。 -
执行显式请求
分别使用 HTTP 或socks5h入口运行一次curl --proxy,确认本地入口和代理链路均能完成请求。 -
执行普通请求
移除命令中的显式代理参数,通过当前会话环境变量再次请求。成功后才能说明终端代理配置已经生效。 -
核对分流日志
查看同一时间段的访问日志,确认目标域名命中预期规则,并被发送到代理或直连出站。 -
测试退出恢复
在 v2rayN 中先清除系统代理,再退出客户端。确认浏览器和系统网络没有继续指向已经关闭的127.0.0.1端口。
整个排查顺序可以压缩为一句话:先看本地端口是否监听,再用显式代理验证链路,然后配置终端环境变量,最后才考虑 TUN、DNS 和复杂路由。浏览器能走代理只能证明浏览器成功读取了一个入口,不能代表所有进程已经被接管。
常见问题
开启系统代理后,为什么 PowerShell 仍然直连?
PowerShell 中运行的具体命令不一定读取 Windows 系统代理。先用
curl --proxy 验证,再在当前会话设置 HTTP_PROXY、HTTPS_PROXY 或 ALL_PROXY。10808 和 10809 应该选哪一个?
不要只按常见端口猜测。打开 v2rayN「设置」→「参数设置」→「基础设置」,根据实际入口类型选择。HTTP 工具连接 HTTP 或混合入口,SOCKS 工具连接 SOCKS 入口。
环境变量应该永久保存吗?
建议先只对当前会话设置。确认端口长期固定、工具确实需要后再保存到用户环境或 shell 配置中,并在修改 v2rayN 端口时同步更新。
TUN 模式开启后还需要系统代理吗?
取决于实际接管范围。TUN 可以捕获更多不读取系统代理的流量,但测试时应避免同时保留指向错误端口的环境变量。先单独验证一种入口,再根据应用需求组合。