连上了但打不开网页:从最可能到最少见,九步排查
客户端显示已连接、节点延迟也正常,但浏览器就是打不开。按出现频率排序的九个原因,每一步都有明确的判断方法。
「客户端明明显示已连接,延迟也是绿的,但网页就是打不开。」
这个问题的麻烦之处在于:"已连接"这三个字会误导你,让你以为问题在别处。
下面按出现频率从高到低排,一步步来。
第 1 步:系统代理开了吗
最常见,占了一小半。
客户端在跑 ≠ 系统流量走它。这是两件事。
| 客户端 | 在哪开 |
|---|---|
| Clash Verge Rev | 设置页 →「系统代理」开关 |
| v2rayN | 托盘右键 →「自动配置系统代理」 |
| Shadowrocket | 首页顶部总开关 |
| sing-box | 首页开关 |
验证方法:浏览器打开任意 IP 查询页面,看显示的 IP。
- 显示节点所在地区 → 系统代理生效了
- 显示你本地 IP → 没生效,就是这个问题
第 2 步:模式是不是「直连」
Clash 系有三种模式:规则 / 全局 / 直连。
不小心切到「直连」的话,客户端在跑但所有流量都不走代理。
日常应该是「规则」模式。
第 3 步:节点是不是真的活着
延迟数字可能是缓存的。
很多客户端显示的延迟是上次测速的结果,节点可能在那之后就挂了。
重新测一次延迟,别信界面上那个旧数字。
- 全部超时 → 节点都死了,更新订阅或换订阅源
- 部分能通 → 换一条能通的试
第 4 步:DNS 出问题了
现象:某些网站能开,某些完全打不开;或者提示"无法解析服务器的 DNS 地址"。
原因:域名解析没走对路。
Clash 系的解法 —— 配置里确认 DNS 段是这样:
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
nameserver:
- https://1.1.1.1/dns-query
- https://dns.google/dns-query
如果局域网设备(NAS、打印机、路由器管理页)访问不了,是 fake-ip 把它们也拦了。加过滤:
fake-ip-filter:
- "*.lan"
- "*.local"
- "你的NAS域名"
清一下本地 DNS 缓存:
# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
DNS 配置的完整说明在Mihomo 配置文件怎么写。
第 5 步:浏览器能上,别的软件不行
现象:Chrome 正常,但 Steam 龟速、游戏连不上、命令行 curl 超时。
原因:这些程序不读系统代理设置,直接从物理网卡出去了。
解法:开 TUN 模式。它创建一个虚拟网卡,在更底层接管全部流量。
注意事项:
- 需要管理员权限
- 可能和杀软的网络防护冲突
- 装了虚拟机的机器偶尔有路由冲突
不想开 TUN 的话,给具体程序单独设代理:
# Git
git config --global http.proxy http://127.0.0.1:7890
# 临时(PowerShell)
$env:HTTP_PROXY="http://127.0.0.1:7890"
$env:HTTPS_PROXY="http://127.0.0.1:7890"
端口要和你客户端的一致(Clash 默认 7890,v2rayN 默认 10809)。
第 6 步:系统时间不同步
现象:所有 vmess 节点全部连不上,但 Trojan/SS 的能用。
原因:vmess 协议对时间敏感,客户端和服务器时间差超过约两分钟就握手失败。
检查:系统设置里确认「自动设置时间」是开的。
Windows:设置 → 时间和语言 → 日期和时间 → 点「立即同步」。
这个坑很隐蔽,因为报错信息通常只说"连接失败",不会告诉你是时间问题。
第 7 步:端口冲突
现象:客户端启动报错,或者显示已连接但完全没流量。
原因:7890(或客户端用的端口)被别的程序占了。
检查:
# Windows
netstat -ano | findstr :7890
# macOS / Linux
lsof -i :7890
有输出说明被占用了。解法:在客户端设置里改成别的端口(比如 17890),改完记得同步改其它软件里填的代理端口。
第 8 步:规则配错了
现象:国外网站也走了直连,所以打不开。
检查:打开客户端的「连接」页,访问一次外网,看那条连接走的是 DIRECT 还是节点。
应该是节点。如果是 DIRECT,说明规则把它判成国内了。
常见原因:规则顺序不对。规则是从上往下匹配,GEOIP,CN,DIRECT 放太靠前会误伤。
# ❌ 错
rules:
- GEOIP,CN,DIRECT # 先命中
- DOMAIN-SUFFIX,xxx.com,代理 # 轮不到
# ✅ 对
rules:
- DOMAIN-SUFFIX,xxx.com,代理 # 具体的放前面
- GEOIP,CN,DIRECT
- MATCH,兜底
第 9 步:环境问题
前八步都排除了,看这几个:
杀毒软件/防火墙拦截 临时关掉试一次。如果关了就好,去白名单里加上客户端。
公司网络/校园网有额外限制 换手机热点试一次。热点下能用 → 是那个网络的问题。
IPv6 干扰 有时候 IPv6 会绕过代理。客户端配置里 ipv6: false,或者系统里临时关掉 IPv6 试试。
浏览器插件 某些代理类插件(SwitchyOmega 之类)会和客户端打架。禁用试试。
浏览器缓存 清一下缓存和 cookie,尤其是换了节点之后。
一个万能的判断技巧
快速自查表
- [ ] 系统代理开了吗
- [ ] 模式是「规则」不是「直连」吗
- [ ] 重新测延迟,节点真的活着吗
- [ ] IP 查询页显示的是节点地区吗
- [ ] 是全部软件不行,还是只有某些?(只有某些 → 开 TUN)
- [ ] 系统时间同步了吗
- [ ] 端口有没有被占用
- [ ] 「连接」页里外网请求走的是节点还是 DIRECT
- [ ] 关掉杀软试一次
- [ ] 换手机热点试一次
十条走完还不行的,换个客户端导入同样的节点试试——能用的话就是客户端配置问题。
接着看
几个常被问到的问题
客户端显示已连接,为什么还是上不了网?
已连接"只说明客户端在跑,不代表流量真的走了它。最常见的三种情况:系统代理没开、模式停在直连、或者节点本身其实是死的(延迟数字可能是缓存的)。本文按顺序排查。
为什么浏览器能上,游戏和 Steam 不行?
因为这些程序不读系统代理设置,直接从物理网卡出去了。浏览器会读系统代理,所以它正常。解法是开 TUN 模式,让客户端在网卡层接管全部流量。
国内网站能开,国外的打不开?
说明分流规则在工作(国内直连是对的),但代理那一侧不通。重点查节点是不是真的活着、以及 DNS 配置。
换了节点还是不行怎么办?
先确认不是本地问题。如果所有节点都不行,八成是你这边的配置或环境问题,不是节点问题——真实的封锁很少那么整齐。按本文第 6~9 步查。