系统代理已开启却不生效:浏览器与终端的分开排查步骤

系统代理只会影响主动读取该设置的应用。排查时应把本地监听、浏览器接入、终端代理环境和路由出口拆开验证,而不是反复切换节点。

本文速览

本文适合遇到“浏览器能打开但终端失败”“系统代理已开启但部分程序直连”或“代理错误提示连接被拒绝”的 Windows 用户。先确认 v2rayN 与代理内核是否建立本地监听,再分别验证浏览器和命令行工具如何接入,最后依据应用覆盖范围判断是否需要 TUN。

先把“不生效”拆成三个范围

v2rayN 是管理配置与内核的桌面客户端,Xray 等代理内核负责处理实际连接,Windows 系统代理则只是向部分应用公布一个本地代理地址。开启系统代理不等于把所有网络连接强制送进内核,更不代表路由规则一定会选择代理出口。

第一层是本地监听。客户端启动内核后,通常会在回环地址上监听 HTTP、SOCKS 或混合代理端口。只有监听真实存在,浏览器和终端才有可连接的入口。第二层是应用接入:应用是否读取 Windows 系统代理,或者是否使用自己单独保存的代理设置。第三层才是路由与出站:连接进入内核后,由配置中的域名、IP、协议及规则决定直连、代理或阻断。

因此,“浏览器能用,PowerShell 不能用”往往不是节点突然失效,而是两者的接入方式不同;“浏览器显示代理连接失败”则应先检查本地端口,而不是先修改 VLESS、VMess 或 TLS 参数。按层排查可以避免把入口问题误判为服务器问题。

127.0.0.1
常见本地回环地址
10808
SOCKS 端口示例
10809
HTTP 端口示例
10 秒
命令测试超时上限
现象 优先检查 暂不优先处理
所有浏览器都提示代理连接失败 内核进程、本地监听地址、端口占用 浏览器缓存与网站账号
浏览器正常,终端直连或超时 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 与工具参数 订阅重新导入
只有一个浏览器异常 浏览器独立代理、扩展接管、启动参数 Windows 全局网络重置
代理测试成功,特定域名仍直连 路由规则、域名匹配、DNS 解析位置 更换本地监听端口

第一步确认内核与本地监听

先在 v2rayN 中选中一个配置并启动内核,再查看主界面或日志区域是否出现启动失败、端口占用、配置解析错误。订阅只是配置来源;成功更新订阅不代表内核已经运行,也不代表系统代理已经指向正确端口。

接着打开「设置」→「参数设置」,记录当前 HTTP 与 SOCKS 监听端口。若版本界面采用统一的混合端口,也应记录界面实际值。监听地址通常应为 127.0.0.1,它只接受本机连接;除非明确需要局域网接入,不要为了排错随意改成面向所有网卡的地址。

  1. 记录端口

    进入 v2rayN「设置」→「参数设置」,抄下 HTTP、SOCKS 或混合监听端口,不要根据旧教程猜测数值。

  2. 检查进程

    启动选中的配置,确认客户端没有连续弹出内核退出提示,并在日志中定位第一条错误而不是只看最后一行。

  3. 查询监听

    在 PowerShell 中运行 Get-NetTCPConnection,确认目标端口处于 Listen 状态,并记录对应进程标识。

  4. 测试入口

    使用 Test-NetConnection 测试回环地址与 HTTP 端口;若 TCP 测试失败,先处理监听问题。

Get-NetTCPConnection -State Listen |
  Where-Object { $_.LocalPort -in 10808, 10809 } |
  Select-Object LocalAddress, LocalPort, OwningProcess

Test-NetConnection 127.0.0.1 -Port 10809

TcpTestSucceededTrue 只能证明端口接受 TCP 连接,不能单独证明节点协议、服务器地址或路由规则正确。下一步仍需通过明确指定代理的请求验证完整链路。若查询结果中没有目标端口,返回 v2rayN 日志处理内核启动问题;若端口被其他进程占用,可用 Get-Process -Id 进程标识 确认程序来源。

报错:ERR_PROXY_CONNECTION_FAILED

原因与解法:浏览器无法连接已配置的本地代理——核对 v2rayN 是否正在运行、系统代理中的端口是否与「参数设置」一致,并检查端口是否被其他进程占用。

报错:TcpTestSucceeded : False

原因与解法:指定地址与端口没有可用监听——先启动内核并检查日志;若刚修改端口,应重启内核后再测,不要继续排查远端节点。

报错:Only one usage of each socket address is normally permitted

原因与解法:目标端口已由另一个进程占用——查出 OwningProcess,关闭重复启动的实例,或在 v2rayN 中改用未占用端口并同步其他应用设置。

浏览器按“跟随系统”与“独立设置”分开查

多数基于系统网络设置工作的桌面浏览器会读取 Windows 代理,但浏览器扩展、企业策略、启动参数或浏览器自己的网络设置可能覆盖这一行为。排查时先只保留一种控制来源:要么跟随 Windows 系统代理,要么在浏览器中明确指定本地代理,不要让扩展和系统设置同时改写出口。

在 v2rayN 托盘菜单中选择系统代理相关选项时,应确认采用的是与当前需求一致的模式,例如自动配置系统代理。随后打开 Windows 的「设置」→「网络和 Internet」→「代理」,查看手动代理或自动配置脚本是否反映了当前客户端设置。不同 v2rayN 模式可能通过不同方式写入系统设置,因此不要同时手工覆盖地址。

若只有一个浏览器异常,可先新建临时浏览器配置或停用负责代理切换的扩展,再重新测试。隐私窗口通常不会绕过系统代理,所以它更适合排除缓存和登录状态,不适合证明代理入口已经恢复。浏览器中的安全 DNS 负责域名解析,并不等同于 HTTP 或 SOCKS 代理。

  1. 统一来源

    暂时停用浏览器内负责代理切换的扩展,删除测试用启动参数,只保留 Windows 系统代理这一条控制路径。

  2. 核对系统

    打开 Windows「设置」→「网络和 Internet」→「代理」,检查地址、端口或自动配置状态是否与 v2rayN 当前模式对应。

  3. 重启浏览器

    完全退出所有浏览器进程后重新打开,避免旧进程继续使用启动时读取的代理配置。

  4. 逐个对照

    先测试一个普通 HTTPS 页面,再测试原先失败的域名;若只有后者失败,转查路由、DNS、SNI 与服务器配置。

浏览器扩展显示直连怎么办?

扩展可能优先于系统设置。先停用扩展并重启浏览器;若恢复正常,再在扩展中把 HTTP 或 SOCKS 地址改为 v2rayN 当前监听值。

一个浏览器能用,另一个不能用?

对比两者是否都跟随系统代理,检查异常浏览器的策略页、代理扩展与启动快捷方式中是否存在单独的代理参数。

关闭安全 DNS 就能修好吗?

安全 DNS 与代理入口不是同一层。只有日志明确指向域名解析问题时才调整 DNS;连接本地代理端口失败时,关闭安全 DNS没有作用。

终端程序要显式设置代理环境

PowerShell、命令行下载工具、包管理器和开发工具不一定读取 Windows 系统代理。有些程序只识别大写环境变量,有些同时识别大小写变量,还有些要求在自己的配置文件中指定代理。系统代理已开启而终端仍直连,在这一类程序中属于常见现象。

先使用 curl.exe--proxy 参数做一次显式测试。这样可以绕过“工具是否读取系统设置”的不确定性,直接验证本地入口到目标站点的完整请求。HTTP 端口示例为 10809;SOCKS 端口示例为 10808,实际测试前仍须替换成 v2rayN 当前值。

curl.exe --proxy http://127.0.0.1:10809 https://example.com/ --max-time 10

curl.exe --proxy socks5h://127.0.0.1:10808 https://example.com/ --max-time 10

socks5h 中的字母 h 表示让代理侧处理目标主机名,适合对照本机 DNS 与代理侧解析差异。如果 HTTP 与 SOCKS 测试都成功,而不带 --proxy 的命令失败或走直连,问题就在终端接入方式,不应继续更换订阅配置。

需要让当前 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"
$env:NO_PROXY = "localhost,127.0.0.1"

Get-ChildItem Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY, Env:NO_PROXY

报错:curl: (7) Failed to connect to 127.0.0.1 port 10809

原因与解法:curl 无法访问指定本地端口——确认端口类型与数字,检查内核监听;如果 v2rayN 使用混合端口,应改填该端口。

报错:curl: (28) Operation timed out after 10000 milliseconds

原因与解法:请求已超过 10 秒限制——若本地 TCP 连接成功,继续查看内核日志中的 DNS、远端连接、TLS 或路由错误;若没有任何入站记录,检查命令中的代理地址。

报错:The underlying connection was closed

原因与解法:连接建立后在协议或 TLS 阶段关闭——先用 curl 对照测试,再核对节点域名、系统时间、SNI 与证书配置,不要用关闭证书验证作为长期处理方式。

接入成功后再检查路由与 DNS

当显式代理请求能到达内核,但特定网站仍失败时,排查重点才从“应用有没有接入”转向“内核如何处理”。v2rayN 管理的路由规则可能按域名、IP 或协议选择直连与代理。VLESS、VMess 是节点协议配置的一部分,它们不会决定终端是否读取 Windows 系统代理。

查看日志时应对应同一次测试请求:先清楚记录测试时间,再发起单个请求,观察是否出现目标域名、匹配规则和出站错误。如果日志完全没有这次请求,说明流量尚未进入内核;如果日志存在请求且明确选择直连,则检查路由规则;如果选择代理后出现解析或握手错误,再处理节点参数和 DNS。

日志现象 判断 下一步
测试期间没有对应请求 应用未接入本地代理 检查浏览器设置、命令参数或环境变量
请求进入后匹配直连 路由规则选择直连出口 核对域名规则、IP 规则及规则顺序
出现域名解析失败 DNS 配置或解析路径异常 对照本机解析与代理侧解析,检查域名拼写
连接远端后握手失败 节点协议或 TLS 阶段异常 核对服务器名称、系统时间、传输参数

什么时候才需要考虑 TUN

TUN 适合需要覆盖不支持 HTTP 或 SOCKS 代理设置的应用,或者希望统一接管更多网络流量的场景。它通过虚拟网络接口改变流量接入方式,因此覆盖范围通常比系统代理更广,但同时涉及路由表、DNS、管理员权限和其他 VPN 类连接之间的协调。

如果问题只出现在一个支持代理参数的终端工具,优先配置该工具或使用环境变量,通常更容易观察和回退。如果多个应用完全不读取系统代理,并且逐个配置成本较高,再评估 TUN。不要把 TUN 当作本地端口未监听、节点握手失败或错误路由规则的替代修复。

浏览器正常,游戏或专用程序不走代理?

先确认该程序是否提供 HTTP、SOCKS 或网络代理设置。没有代理入口且确需纳入范围时,再评估 TUN,并检查其服务条款与网络要求。

开启 TUN 后还要开系统代理吗?

取决于当前客户端配置与接管方案,不应机械地同时开启。先明确由哪一种方式负责接入,避免重复代理或让排错路径变得不清楚。

TUN 开启后完全断网怎么办?

先关闭 TUN 恢复基础网络,再检查管理员权限、虚拟接口、DNS 与路由冲突。若其他 VPN 连接正在运行,应先避免同时接管同一流量。

终端设置环境变量后还需要 TUN?

若目标工具已稳定通过 HTTP_PROXY 或明确的代理参数工作,就没有仅为该工具启用 TUN 的必要。继续保持范围最小、行为可验证的接入方式。

按最小改动顺序完成复查

一次只改变一个条件,才能知道是哪一步恢复了连接。最稳妥的顺序是本地监听、显式代理测试、应用接入设置、路由与 DNS,最后才是 TUN。每一步都保留对应的端口、命令结果和日志时间,避免凭界面开关状态判断。

  1. 在 v2rayN「设置」→「参数设置」记录当前监听地址和端口,确认内核已启动。
  2. Get-NetTCPConnectionTest-NetConnection 验证端口确实处于监听状态。
  3. curl.exe --proxy 分别测试 HTTP 或 SOCKS 入口,超时限制设为 10 秒。
  4. 浏览器只保留一种代理控制来源,完全退出后重启,再对照其他浏览器。
  5. 终端通过命令参数或临时环境变量接入,不假设它会自动读取 Windows 系统代理。
  6. 确认请求已进入内核后,再按日志检查路由分流、DNS、节点协议与 TLS。
  7. 只有在多个应用无法单独设置代理且确需扩大覆盖范围时,才配置并验证 TUN。
下载客户端