返回首页

问题排查 / FIELD NOTE 08

代理显示已连接却打不开网页?连接失败分类排查

先区分单节点失败、全部节点失败和系统代理未生效。

问题排查文章分类
约 12–15 分钟阅读时间
2026.10最近整理

直接回答

客户端显示“已连接”,一般只代表它已经启动、内核在运行,不保证系统代理已经指向它,也不保证所选节点真的连通。排查时先用 curl 直接经本地端口发一个请求:能通,说明内核和节点正常,问题在系统代理、浏览器设置或软件冲突;不通,再看客户端日志里的报错关键词,判断是端口、节点、证书还是协议支持的问题。

要点

  • 先分清是单个节点失败、全部节点失败,还是显示已连接但网页打不开,三者的排查方向不同
  • 用 curl 经本地端口测试,可以把问题一分为二:节点链路,或者系统与浏览器的设置
  • 系统代理的地址和端口必须与客户端当前的本地端口一致,改过端口后要重新开启系统代理
  • 浏览器代理扩展、多个代理软件或 VPN 同时运行,是“已连接却打不开”的常见原因
  • 日志中的 refused、timeout、x509 等关键词能快速指向问题所在,但只是线索而不是定论

已连接却打不开网页的排查顺序

  1. 第 1 步: 经本地端口测试

    用 curl 通过客户端的本地端口请求一个测试地址,判断问题在节点链路还是系统与浏览器设置。

  2. 第 2 步: 确认系统代理已生效

    在系统设置或命令行中确认系统代理已开启,并指向 127.0.0.1 和客户端端口;手机端确认 VPN 已连接。

  3. 第 3 步: 核对端口一致

    对照客户端设置中的端口,检查系统代理端口是否一致、端口是否被其他程序占用。

  4. 第 4 步: 排除浏览器设置

    停用代理切换类扩展,检查 Firefox 等浏览器自带的代理设置,用其他浏览器对比。

  5. 第 5 步: 退出冲突的软件

    只保留一个代理客户端,关闭加速器和其他 VPN,避免争抢系统代理、端口和路由。

  6. 第 6 步: 查看日志关键词

    把日志级别临时调高,根据 refused、timeout、x509 等关键词判断原因。

  7. 第 7 步: 检查安全软件

    留意第三方安全软件的网络防护或 HTTPS 扫描功能,必要时把官方客户端加入信任列表后对比。

先分清是哪一种“连不上”

“连不上”有好几种表现,排查方向各不相同。动手之前,先对照下表判断自己属于哪一种:

现象通常意味着先做什么
只有某个节点超时或打不开,换节点后正常该节点在维护、负载过高或入口受到干扰换同地区的其他节点;长期不可用再向服务商反馈
所有节点都显示超时订阅、系统时间、本地网络或客户端内核等共同环节出了问题按问题排查速查表中“所有节点测速超时”一行检查
节点测速正常、显示已连接,但网页打不开流量没有交给客户端,或交给了错误的地址按本文第一步起逐项核对
只有部分网站打不开分流规则没有覆盖,或 DNS 解析异常临时切换全局模式对比
网页能打开,只是很慢或晚上卡顿线路拥塞、节点负载或本地网络见梯子速度慢的分步排查
退出客户端后什么网站都打不开系统代理或 DNS 设置残留见文末“退出客户端后断网”一节

本文重点处理第三种,也是最让人困惑的一种。客户端界面上的“已连接”或“运行中”,通常只说明客户端已经启动、内核在运行,并不保证流量真的经过了它。一次正常的访问要依次走完下面这条链路:

浏览器 → 系统代理设置(127.0.0.1:端口)→ 客户端本地端口 → 内核按规则选择出口 → 节点 → 目标网站

任何一个箭头断开,都会表现为“已连接但打不开”。下面的步骤就是逐段检查这条链路。

第一步:绕开浏览器,直接测本地端口

先跳过浏览器和系统代理,直接把请求交给客户端的本地端口。测试前在客户端中选好一个测速正常的节点;如果规则模式下测试地址被判为直连,可以临时切换到全局模式,并在全局模式下重新选好这个节点,测完再切回规则模式。端口 7897 请换成客户端设置中显示的端口:

# macOS / Linux:-sS 表示平时不输出进度,出错时显示报错
curl -x http://127.0.0.1:7897 -sS -o /dev/null -w "HTTP %{http_code}\n" --max-time 10 https://www.google.com/generate_204
# Windows PowerShell:请写 curl.exe,curl 在 PowerShell 中是 Invoke-WebRequest 的别名
curl.exe -x http://127.0.0.1:7897 -sS -o NUL -w "HTTP %{http_code}\n" --max-time 10 https://www.google.com/generate_204

根据输出把问题一分为二:

  • 输出 HTTP 204:本地端口、内核和节点都正常,问题在系统代理、浏览器或软件冲突,继续看第二到第五步和第七步;
  • 立刻报错,类似 Failed to connect to 127.0.0.1 port 7897(后半句措辞因 curl 版本而异):本地端口没有程序在监听,多半是内核没有启动或端口填错,重点看第三步;
  • 等待一段时间后超时,或出现 TLS 握手失败、连接被重置、空响应一类报错:请求已经进入客户端,但经节点出去时失败了,换几个节点再试,并结合第六步的日志判断原因。

问题排查页的自查命令里也有一条类似的命令,可以对照使用。

第二步:确认系统代理真的指向客户端

curl 能通、浏览器打不开时,最常见的原因是系统代理没有生效。

Windows

打开“设置 → 网络和 Internet → 代理”,在“手动设置代理”下确认“使用代理服务器”已开启,地址为 127.0.0.1,端口与客户端一致。Windows 10 与 Windows 11 的界面略有不同,以实际版本为准。同一页面的“自动设置代理”中如果开启了“使用设置脚本”,浏览器通常会优先按脚本决定走向,排查时需要一并确认。也可以用 PowerShell 直接查看:

# ProxyEnable 为 1、ProxyServer 为 127.0.0.1:端口,说明系统代理已指向本机客户端
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' | Select-Object ProxyEnable, ProxyServer, AutoConfigURL
  • ProxyEnable 为 0:系统代理没有开启,客户端里的开关可能没有生效,或被其他软件关掉了;
  • ProxyServer 的端口与客户端不同:端口不一致,见第三步;
  • AutoConfigURL 有值:启用了代理脚本,确认它是不是当前客户端设置的。

macOS

在终端运行 scutil --proxy,正常时可以看到 HTTPEnable : 1、HTTPProxy : 127.0.0.1 和对应的 HTTPPort,HTTPS 与 SOCKS 项同理。也可以在“系统设置 → 网络 → 当前网络 → 详细信息 → 代理”中查看,位置以系统版本为准。macOS 的代理设置按网络服务分别保存,从 Wi-Fi 换成有线或其他网卡后,新网络上未必有代理设置,重新开关一次系统代理即可。

Android 与 iOS

手机客户端一般通过系统的 VPN 接口接管流量,没有“系统代理端口”的概念。Android 连接成功后状态栏通常会出现钥匙图标;iOS 状态栏会显示“VPN”,也可以在“设置 → 通用 → VPN 与设备管理”中查看状态。图标都没有出现,说明并没有真正连上;图标在但打不开,问题多半在节点或规则。各系统接管流量的差异,见电脑和手机怎么用梯子。

第三步:核对端口是否一致

系统代理的端口必须与客户端当前监听的端口一致。下表是常见客户端的端口位置,默认值会随版本变化,一律以设置页显示为准:

客户端端口在哪里看常见默认值
Clash Verge Rev设置中的端口设置(混合端口)常见 7897
其他 Clash 系客户端设置页或配置文件中的 mixed-port常见 7890
v2rayN 7.x设置 → 参数设置中的本地监听端口常见 10808
Shadowrocket 等手机客户端通过 VPN 配置接管,一般无需手动设置端口不涉及

端口不一致通常有三种来由:在客户端里改过端口,但系统代理还是旧值;装过别的代理软件,系统代理被它改成了自己的端口;端口被其他程序占用,内核根本没能监听。最后一种可以这样查:

# Windows:查看谁在监听 7897 端口
Get-NetTCPConnection -LocalPort 7897 -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess
# 把 12345 换成上一条命令输出的 OwningProcess,查看对应的程序名
Get-Process -Id 12345
# macOS / Linux
lsof -nP -iTCP:7897 -sTCP:LISTEN

改端口之后,记得在客户端里关闭再重新开启一次系统代理,让新端口写入系统设置。

第四步:排除浏览器自身的代理设置

即使系统代理设置正确,浏览器也可能不按它走:

  • 代理切换类扩展:Chrome、Edge 默认跟随系统代理,但安装了 SwitchyOmega 一类的扩展后,扩展的设置会覆盖系统代理。扩展选了“直接连接”,或者指向一个早已失效的端口,网页就会打不开。先把扩展切到“使用系统代理”,或者暂时停用。
  • 浏览器自带的代理设置:Firefox 有独立的连接设置(“设置 → 常规 → 网络设置”),可选不使用代理、自动检测、使用系统代理设置和手动配置等。默认一般是使用系统代理设置;如果被改成不使用代理,或手动填了错误的端口,就不会经过客户端。
  • 对比测试:用无痕窗口或另一个浏览器打开同一网址。扩展默认通常不在无痕窗口中运行,无痕窗口能打开而普通窗口不行,基本就是扩展的问题。

第五步:排除多个代理软件或 VPN 的冲突

两个代理客户端同时运行,会争抢系统代理设置和本地端口:后启动的那个会改写系统代理,先启动的那个退出时又可能把系统代理整个关掉,结果谁都用不了。开启 TUN 时问题更明显,两个虚拟网卡会争抢路由,表现为时通时断或完全断网。游戏加速器、公司 VPN 也会建立自己的虚拟网卡,与代理客户端同时开启时同样可能冲突,具体见加速器和梯子同时开会不会冲突。

在 Windows 上,可以列出当前处于连接状态的网卡,看看有没有多余的虚拟网卡(名称因软件而异):

Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object Name, InterfaceDescription

第六步:看日志里的关键词

前面几步都正常、问题仍在时,客户端日志往往能直接说明原因。Clash Verge Rev 有单独的“日志”页面,v2rayN 主界面下方会显示运行信息,位置以实际版本为准。mihomo 内核的日志级别分为 silent、error、warning、info、debug 几档,排查时可以临时调到 info 或 debug,用完再调回去。

日志格式因客户端和版本而异,下表的关键词只是常见的类似写法,可以作为判断线索:

日志关键词更可能的原因处理方向
connection refused目标端口没有服务在监听:如果是 127.0.0.1,说明本地端口或内核没在运行;如果是节点地址,说明节点端口拒绝连接,可能已下线或更换端口重启客户端、核对端口;更新订阅后换节点
i/o timeout、timeout节点不可达:入口受阻、当前网络限制了该端口,或服务器宕机换节点,或换到手机热点对比
x509、certificate证书校验失败:系统时间不准、证书过期、证书与域名设置不匹配,或网络中存在 HTTPS 检查开启系统自动对时;仍报错再联系服务商
unsupported、unknown(不支持的协议或类型)内核版本不支持该节点的协议,或订阅格式与客户端不匹配升级客户端,或切换到支持该协议的内核
no such host 等解析失败节点地址是域名,而本地无法解析检查本地网络与客户端的 DNS 设置
EOF、connection reset连接被中途关闭:密码等参数不匹配、订阅过期被服务端拒绝,或连接受到干扰更新订阅;多个节点都如此时联系服务商
address already in use本地端口被其他程序占用,内核无法监听按第三步找出占用端口的程序

如果要把日志或截图发给别人求助,先遮挡订阅链接、节点地址和密码,相关习惯见订阅链接泄露的预防与处理。

第七步:检查防火墙与安全软件

Windows 自带的防火墙默认放行出站连接,一般也不会拦截浏览器到 127.0.0.1 的本机连接。更常见的干扰来自第三方安全软件:“网络防护”“HTTPS 扫描”一类功能会自己接管浏览器流量,可能绕过系统代理,也可能让网页出现证书错误。可以临时关闭这类功能做对比,或者把客户端加入信任列表。加入信任列表之前,先确认客户端来自官方下载渠道,不要对来路不明的修改版放行。

退出客户端后断网怎么办

另一种常见情况是:客户端退出以后,连国内网站也打不开了。原因通常是客户端被强制结束、崩溃或直接卸载,没来得及还原系统设置,系统代理仍指向一个已经关闭的本机端口。用第二步的命令查看,如果客户端已退出而 ProxyEnable 仍为 1,就是这种情况。

处理方法很简单:重新打开客户端,关闭系统代理后再正常退出;或者直接在系统的代理设置中关闭“使用代理服务器”。使用过 TUN 模式的,如果网卡 DNS 被改动,可以把它改回自动获取,再运行 ipconfig /flushdns 清空缓存。各系统的具体做法,同样可以参考上文提到的电脑与手机使用指南。

常见问题

curl 能通,但浏览器还是打不开,问题在哪?

说明内核和节点都正常,问题出在“浏览器到客户端”这一段,常见的是系统代理没有开启或端口不对、浏览器使用了自己的代理设置或代理扩展,或者安全软件接管了浏览器流量。按本文第二到第四步逐项核对;如果装有第三方安全软件,再看第七步。

开了 TUN 模式反而全部打不开,只用系统代理就正常,为什么?

常见原因是 TUN 没有成功创建虚拟网卡(缺少管理员权限或没有安装服务模式)、与其他 VPN 或加速器的虚拟网卡冲突,或者 DNS 没有被正确接管。可以先退出其他 VPN 类软件,确认客户端的服务模式或管理员权限正常,再重新开启 TUN 测试。

手机显示 VPN 已连接,但 App 都打不开怎么办?

先在客户端里换一个测速正常的节点,并确认订阅没有过期。iOS 同一时间只能启用一个 VPN 配置,打开其他 VPN 类应用会让当前连接断开;Android 还要留意系统设置里是否为其他应用开启了“始终开启的 VPN”。如果是在 Wi-Fi 和蜂窝网络之间切换后出现,断开重连一次通常就能恢复。

在公司或学校的电脑上一直打不开,有什么特殊原因?

这类网络可能限制了部分端口或协议,电脑上也可能装有终端管理软件、强制下发的代理脚本或 HTTPS 检查,导致证书报错或系统代理被改回。请先确认单位的网络使用规定是否允许,在允许的前提下再排查,必要时换到手机热点做对比。

参考资料