Clash 从入门到进阶:一份基于开源数据与内核机制的深度使用指南

如果你正在寻找一款能够精细控制网络流量、实现“国内直连、国外代理”的代理工具,Clash 及其衍生生态几乎是绕不开的选择。根据 GitHub 公开数据,Clash Verge Rev 的星标数已超过 14 万,FlClash 也达到了 5.2 万以上。这些数字背后,是一个由 Mihomo 内核驱动、覆盖全平台的成熟工具链。

本文不满足于“第一步点这里、第二步点那里”的教程式复述,而是试图从内核机制、流量接管原理、规则匹配逻辑三个层面,帮你建立对 Clash 的系统性理解。文末附有 5 组高频问答,方便你快速定位问题。

一、先理解“谁在为你工作”:Mihomo 内核的角色

你安装的 Clash Verge Rev、FlClash 等图形客户端,本质上都是“外壳”。真正负责解析流量、匹配规则、建立代理连接的是 Mihomo 内核(原名 Clash.Meta)。

Mihomo 的核心能力包括:

  • 多协议支持:VMess、VLESS、Shadowsocks、Trojan、Snell、TUIC、Hysteria 等主流协议全覆盖
  • DNS 防污染:内置 DNS 服务器,支持 DoH/DoT 上游和 fake-ip 模式
  • 规则引擎:基于域名、GEOIP、IP-CIDR、进程名等条件分发流量
  • RESTful API 控制器:允许 Web 面板或第三方工具实时监控和切换节点

这意味着:当你更换客户端(从 Clash Verge Rev 换到 FlClash),底层的代理逻辑和行为是一致的。你学习一套配置,就可以复用到所有平台。

二、系统代理 vs. TUN 模式:流量接管的两种路径

这是 Clash 使用中最容易混淆、也最影响体验的分水岭。

系统代理:应用“自愿配合”

开启“系统代理”后,Clash 实际上修改的是操作系统的代理设置(Windows 的网络代理、macOS 的网络偏好设置、Linux 桌面环境的 proxy 配置)。它告诉应用:“请把流量发到 127.0.0.1:7890。”

浏览器会听话,但很多应用不会。 游戏客户端、部分即时通讯软件、使用非标准协议的程序,会直接忽略这个“建议”,自己发包出去。

TUN 模式:内核级“强制截流”

TUN 模式的做法截然不同:Clash 创建一张虚拟网卡,并修改系统路由表,让所有 IP 包必须先经过这张虚拟网卡。

路径变成了:应用程序 → 内核协议栈 → TUN 虚拟网卡 → Clash → 代理/直连。

应用完全不知道自己被代理了,它只是“正常发包”。这就是为什么 TUN 模式能代理游戏、命令行工具、以及任何不认系统代理的桌面应用。

实践建议:日常浏览网页用系统代理 + 规则模式即可,效率最高;玩游戏或发现某个 App 不走代理时,再开启 TUN 模式。

三、规则引擎:Clash 的“大脑”如何做决策

Clash 的配置文件(YAML 格式)中,rules 字段决定了每一条流量的去向。理解规则类型,你才能真正掌控 Clash。

最常用的三类规则

DOMAIN-SUFFIX:匹配域名后缀。DOMAIN-SUFFIX,google.com,PROXY 会让 www.google.com、mail.google.com 等全部走代理。

GEOIP:匹配 IP 的地理位置。GEOIP,CN,DIRECT 让所有目标 IP 在中国的流量直连。Clash 使用 MaxMind GeoLite2 数据库来实现这一功能。

IP-CIDR:匹配 IP 段,通常用于补充 GEOIP 无法覆盖的场景。

no-resolve:一个容易被忽略的优化项

当你使用 GEOIP、IP-CIDR 规则时,Clash 需要先把域名解析成 IP 才能匹配。如果你确定某条规则只针对 IP 匹配,加上 no-resolve 可以跳过 DNS 解析,减少延迟。

规则顺序决定一切

Clash 从上到下匹配规则,第一条命中的规则生效。所以 GEOIP,CN,DIRECT 必须放在通用代理规则之前,否则国内流量也可能被误代理。

四、代理组策略:让节点“自己选自己”

手动切换节点是低效的。Clash 的 proxy-groups 允许你把多个节点组合成一个逻辑组,并赋予自动选择策略。

策略类型 行为 适用场景
url-test 定期测速,自动切换到延迟最低的节点 日常浏览,追求最优速度
fallback 主节点断开时自动切换备用节点 对稳定性要求高的场景
load-balance 将流量分散到多个节点 提高总带宽
select 手动指定节点 需要精确控制的场景

一个典型的配置是:url-test 组包含所有香港节点,每 300 秒测速一次,自动选择延迟最低的那个。

五、性能的现实:数据告诉你的真相

Clash 的性能不仅取决于你的网络带宽,还受客户端设备、协议类型、内核实现的影响。

来自 GreatFire 的实测数据显示,Clash Meta 在不同节点上的表现差异显著:新加坡节点可达 5.9 MB/s,日本节点在 1.1–4.2 MB/s 之间波动,而部分美国节点延迟高达 1089 ms。这说明节点选择对体验的影响远大于客户端本身。

在性能受限的设备上,情况会更复杂。一位用户在 ARM 路由器(小米 AX3000)上测试 Mihomo 内核,单线程速度仅 30 Mbps,而同样的节点在电脑上可达 150 Mbps。这提示我们:路由器级别的 Clash 部署需要考虑 CPU 单核性能,而不仅仅是带宽。

六、全平台客户端速查

平台 推荐客户端 核心特点
Windows / macOS / Linux Clash Verge Rev 基于 Tauri,界面现代,支持 TUN 和服务模式
Android FlClash 默认 VPN 模式即全局代理,开源无广告
iOS Shadowrocket / Stash 付费应用,兼容 Clash 订阅格式
Linux 服务器 / 路由器 Mihomo Core 直接运行内核,配合 Web 面板管理

Clash Verge Rev 的 GitHub 星标超过 14 万,FlClash 超过 5.2 万,两者是目前社区活跃度最高的选择。

七、Clash常见问答

Q1:Clash 的“系统代理”和“TUN 模式”到底有什么区别?

系统代理只修改操作系统的代理设置,依赖应用主动配合。浏览器会听话,但游戏、部分桌面软件会忽略。TUN 模式创建虚拟网卡并修改路由表,强制所有流量经过 Clash,对应用完全透明。简单记:系统代理管浏览器,TUN 管一切。

Q2:为什么我的订阅导入后节点数量为 0?

最常见原因是订阅链接已过期或网络无法访问订阅服务器。建议先确认链接以 https:// 开头且完整无多余空格;如果仍然失败,尝试先开启一个可用代理再导入,让 Clash 能访问到订阅地址。部分机场的订阅地址在国内被屏蔽,需要特殊处理。

Q3:url-test 和 fallback 代理组应该选哪个?

url-test 会主动测速并切换到最快节点,适合追求日常浏览速度的场景。fallback 则保持主节点直到它完全不可用才切换,适合对连接稳定性要求高、不希望频繁跳节点的场景。如果你用来看视频、刷网页,url-test 体验更好;如果你在跑需要长连接的下载或游戏,fallback 更合适。

Q4:GEOIP,CN,DIRECT 规则为什么有时会让国内网站也走代理?

GEOIP 匹配的是目标 IP 的归属地,而不是域名的注册地。某些国内网站使用了海外 CDN 的 IP,或者 DNS 解析到了被 GEOIP 数据库标记为海外的 IP,就会导致误判。解决办法是配合 DOMAIN-SUFFIX 规则,对已知的国内域名做精确匹配,放在 GEOIP 规则之前。

Q5:Clash 提示 7890 端口被占用怎么办?

7890 是混合代理端口的默认值,被占用的常见原因是之前的 Clash 进程未完全退出,或与其他代理软件冲突。解决方式:完全退出 Clash 后重启;若仍不行,在客户端设置中将端口改为 7891 或其它未占用端口,同时记得更新浏览器代理插件中的端口号,否则系统代理会失效。