连接排障 · Clash 技术博客

Clash 已连接但无法上网怎么办?DNS、Fake-IP 与规则排查

“已连接”只说明客户端和内核在运行,不代表 DNS、规则和节点都正常。用系统代理与 Direct 做两个对照,就能先判断请求有没有进入 Clash。

  • 无法上网
  • DNS
  • 排障
本文目录

Clash 显示已连接却上不了网,先看具体是哪一种失败

同一句“Clash 显示已连接”,可能只表示内核进程在运行,并不能证明系统代理端口可用、节点可达或 DNS 正常。先记录一条具体错误、一个目标地址和当前使用的模式,排查才有起点。

不同现象的第一检查点

现象先检查
所有网站都立即报代理连接失败系统代理指向的本地地址和端口
域名打不开,直接访问 IP 有响应DNS 与浏览器安全 DNS
国内正常,需代理站点超时节点、策略组和规则命中
系统代理正常,一开 TUN 全断服务、虚拟网卡、默认路由和其他 VPN
只有某个应用失败该进程是否进入 Clash,以及应用自身状态码

用两个开关把故障范围先切开

关闭 TUN,只保留 Rule 模式与系统代理,重新打开同一个网页。系统代理可用而 TUN 断网,订阅和节点至少有一条基本可用路径,重点转向服务、路由与 DNS;两种模式都失败,则先不碰虚拟网卡。

随后关闭系统代理恢复直连,确认普通网络本身可用。直连也失败时,应先处理 Wi-Fi、宽带、企业认证或路由器问题。Clash 不能修复一个本来就没有外网的底层连接。

连接页面有没有这次请求,是最重要的分叉

清空连接记录,访问一个固定域名。如果完全没有新请求,浏览器可能没有使用系统代理,端口可能写错,或应用绕过了当前接管方式;继续换规则和节点不会改变这一点。

请求已经出现时,记下目标、命中规则、策略组和错误。意外 DIRECT、REJECT、timeout、connection refused 分别指向不同层。只看托盘图标颜色,会丢掉最能说明问题的证据。

一次最小复现

  1. 固定配置和节点

    暂时关闭自动切换,只保留一个出口。

  2. 清空连接与日志视图

    避免把后台更新误认成刚才的网页请求。

  3. 访问同一个 HTTPS 地址

    记录是否进入 Clash、命中什么规则、出现什么错误。

  4. 只改一个变量再重试

    节点、规则、DNS、TUN 不要同时变化。

立即报错时,核对系统代理和监听端口

浏览器一打开就显示无法连接到代理服务器,常见原因是 Windows 或 macOS 仍指向 127.0.0.1 的旧端口,而当前客户端没有监听。到客户端设置读取真实 mixed-port,再用 netstat、lsof 或 ss 验证。

端口存在时可用 curl -x 显式请求,区分本地代理入口与系统代理写入。显式代理成功、浏览器失败,问题在系统或浏览器设置;显式代理也失败,才回到内核、节点和日志。

检查本地入口
# 将 7890 换成客户端实际端口
curl -I -x http://127.0.0.1:7890 https://example.com

# Windows
netstat -ano | findstr :7890

# macOS / Linux
lsof -nP -iTCP:7890 -sTCP:LISTEN

只有解析表现异常时,才进入 DNS 排查

域名请求长时间没有目标地址、nslookup 失败,或者关闭浏览器安全 DNS 后现象改变,才说明 DNS 值得优先处理。先让浏览器、系统和 Clash 使用一套解析入口,再查看 nameserver 是否可达。

如果系统使用路由器 DNS、浏览器又单独开启安全 DNS,Clash 可能拿不到完整域名。排查时暂时关闭浏览器 DoH,让同一个域名从系统到 Clash 只经过一条解析路径;恢复后再决定是否重新开启。

使用 Fake-IP 时,先分清正常虚拟地址和过期缓存

Fake-IP 模式下,域名解析到 198.18.0.0/15 一类地址通常是正常现象:应用先连接这个虚拟地址,Mihomo 再把它还原成域名并匹配规则。看到 198.18.x.x 本身不代表 DNS 被污染,关键是连接页面能否保留原域名并命中预期策略。

真正需要处理的是切换配置、改规则或从 Redir-Host 改到 Fake-IP 后,系统和应用仍拿着旧结果。此时先关闭测试应用,清理系统 DNS 缓存,再重启 Mihomo 内核后复测;不要一边保留旧连接,一边连续切换增强模式。

NAS、打印机、路由器后台和企业内部域名若必须返回真实内网地址,应加入当前配置的 fake-ip-filter 或交给对应内网 DNS。验证结果是这些本地域名仍解析到真实 LAN 地址,而公网域名能在连接页恢复为域名并正确分流。

Windows 切换 DNS 模式后的缓存清理
ipconfig /flushdns

请求进入以后,再按规则、节点或 TUN 分开处理

请求命中 DIRECT 后超时

常见原因:具体规则被更宽的直连规则提前匹配

处理方法:查看最终规则顺序,把精确规则放在 GEOIP 与 MATCH 之前。

命中代理组但 dial timeout

常见原因:当前节点、协议或远端不可达

处理方法:固定另一条已知可用节点对照,不先改 DNS。

本地代理 connection refused

常见原因:端口未监听或系统代理写错

处理方法:核对 mixed-port、进程状态和端口占用。

只有 TUN 下全断

常见原因:服务权限、默认路由、虚拟网卡或其他 VPN 冲突

处理方法:恢复系统代理后逐项检查,不执行整机网络重置。

最终应能用一句具体的话描述故障,例如“请求已进入 Clash,命中 PROXY,固定节点返回 dial timeout”,而不是“软件绿了但没网”。这句话已经包含下一步需要处理的层级。

参考资料