L01 新手教程 第 03 站 / 共 6 站

Clash 基础教程:内核、配置与规则

Clash 教程:说明原版 Clash 停更后的 mihomo 内核与 Clash Verge Rev、FlClash 等客户端,并逐项解释代理、策略组、规则与运行模式配置。

发布
更新
阅读
约 11 分钟
Clash 基础教程封面示意图:一条青绿色线路依次经过选择客户端、导入订阅、proxies、proxy-groups、rules、运行模式六个站点
本文目录 13 节

快速回答 Clash 教程

Clash 是一类按规则分流的代理客户端。原版 Clash 内核已于 2023 年停止维护,如今常用的是 mihomo(原 Clash.Meta)内核,以及基于它的 Clash Verge Rev、FlClash 等图形客户端。看懂 proxies、proxy-groups、rules 三部分配置,并记住规则“自上而下、命中即停”,就能读懂绝大多数订阅配置。

Clash 系客户端通常把节点、策略组和分流规则放在同一份配置中:节点负责连接,策略组决定选择,规则为每条连接指定去向。它与 V2RayN 都能分流,只是配置与界面组织不同。本文把安装、导入、启动、验证和退出连起来,再用示例解释规则如何工作。

Clash 生态现状:内核与客户端

“Clash”这个名字今天其实指代一整个生态,分为两层:内核负责真正的协议处理和规则匹配,图形客户端负责导入订阅、展示节点和设置系统代理。

原版 Clash 内核使用 Go 语言编写,以 YAML 作为配置格式。2023 年,原版内核停止维护,原仓库不再更新;同一时期,Clash for Windows 等一批基于原版内核的图形客户端也先后停止更新。这些旧版本仍然可以在网上找到,但不会再获得安全修复和新协议支持,不建议继续使用。

目前仍在维护、使用较广的项目如下:

名称 类型 平台 说明
mihomo(原 Clash.Meta) 内核 多平台 MetaCubeX 维护,兼容 Clash 配置格式,支持更多协议与规则类型
Clash Verge Rev 图形客户端 Windows / macOS / Linux 基于 mihomo 内核的桌面客户端
FlClash 图形客户端 Android / Windows / macOS / Linux 基于 mihomo 内核,界面简洁

无论选择哪个客户端,都应从项目的官方 GitHub 仓库下载。本文后面的配置示例以 mihomo 文档为准;各客户端界面不同,但底层读取的都是同一种配置。

下载与安装:先准备能运行的客户端

本教程以桌面 Clash Verge Rev 的通用流程说明。已有客户端可以跳到导入部分;手机用户另看移动设备教程,不能把桌面系统代理开关照搬到 Android 或 iOS。

  1. 从 Clash Verge Rev 官方仓库进入 Releases;FlClash 则从它自己的仓库获取。核对系统、处理器架构、该版本最低要求和是否为预发布。
  2. 按平台安装包说明完成安装。Windows 安装包、macOS DMG 与 Linux 软件包的操作不同,按项目官方安装文档执行。
  3. 首次打开先保持额外覆写、脚本和 TUN 关闭,暂时停止其他代理/VPN,记录原来的系统代理状态。主界面应正常加载,核心不应循环报错。
  4. 准备一条提供方标注为 Clash/mihomo 的配置地址。安装客户端不会自动获得节点;通用分享链接也不一定能作为完整 YAML 导入。

平台安装提示与菜单以官方快速入门和当前版本为准。只为了本机浏览器连接,先使用系统代理即可;TUN 和服务权限等需求在基础连接正常后再处理。

一份配置由哪几部分组成

打开任何一份 Clash 订阅配置,都可以把它拆成四个部分来读:

部分 作用 类比
基础设置 本地端口、运行模式、日志级别、控制接口等 车站的基础设施
proxies 每个节点的协议、地址、端口与认证信息 一辆辆列车
proxy-groups 把节点编组成策略组,决定“手动选”还是“自动选” 线路调度
rules 判断每条连接交给哪个策略组或直连 换乘指引

其中最容易混淆的是策略组。常见的策略组类型有:

  • select:手动选择,界面上看到的“节点选择”一般就是它。
  • url-test:定期测试组内节点的延迟,按指定测试地址的结果和容差选择节点;不代表下载带宽最大。
  • fallback:按顺序使用第一个可用的节点,前一个失效时切换到下一个。
  • load-balance:在多个节点之间分配连接。

策略组可以嵌套:一个 select 组里既可以放具体节点,也可以放另一个 url-test 组,还可以放内置策略 DIRECT(直连)和 REJECT(拒绝)。

带注释的最小配置示例

下面是一份可以帮助理解结构的最小配置。服务器地址使用了保留的示例域名和文档专用 IP 段,密码也是占位符,不能直接拿来连接。

# 示例配置:服务器、端口、密码均为占位符
mixed-port: 7890          # HTTP 与 SOCKS5 共用的本地端口
allow-lan: false          # 是否允许局域网内其他设备使用本机代理
mode: rule                # 运行模式:rule / global / direct
log-level: info           # 日志级别:silent / error / warning / info / debug
external-controller: 127.0.0.1:9090   # 图形界面通过此接口控制内核

proxies:
  - name: 示例节点-A
    type: trojan
    server: node-a.example.com
    port: 443
    password: your-password-here
    sni: node-a.example.com
  - name: 示例节点-B
    type: ss
    server: 192.0.2.10
    port: 8388
    cipher: aes-128-gcm
    password: your-password-here

proxy-groups:
  - name: 节点选择          # 手动选择组,规则中引用的就是这个名字
    type: select
    proxies:
      - 自动选择
      - 示例节点-A
      - 示例节点-B
      - DIRECT
  - name: 自动选择          # 定期测速,自动使用延迟最低的节点
    type: url-test
    proxies:
      - 示例节点-A
      - 示例节点-B
    url: https://www.gstatic.com/generate_204
    interval: 300           # 测试间隔(秒)
    tolerance: 50           # 延迟差小于 50ms 时不频繁切换

rules:
  - DOMAIN-SUFFIX,ads.example.net,REJECT
  - DOMAIN-SUFFIX,example.com,节点选择
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,CN,DIRECT
  - MATCH,节点选择

读这份配置时,注意三个名字之间的引用关系:rules 里的“节点选择”必须与 proxy-groups 中某个组的 name 完全一致,proxy-groups 里列出的节点名也必须与 proxies 中的 name 一致。名称对不上是手写配置时最常见的加载错误。

这份示例用于桌面本地 HTTP/SOCKS 代理,没有配置 TUN 或完整的 DNS 分流。实际使用应替换服务方给出的整段节点参数,而不是只改地址和密码;GEOIP 规则也需要客户端具备相应地理数据。加载成功后,先在手动组中选定真实节点,再用连接记录验证;选择了组内 DIRECT 会正常直连,不能据此证明代理节点可用。

规则顺序:为什么写在前面的规则优先

Clash 规则匹配顺序示意图:一条连接自上而下依次检查四条规则,第二条 DOMAIN-SUFFIX 规则命中后交给节点选择策略组,后面的 GEOIP 和 MATCH 规则不再检查
图 1:规则匹配顺序示意图。规则逐条向下检查,命中第一条即停止。

Clash 处理每一条新连接时,会从上到下逐条检查规则,命中第一条就停止,后面的规则不再参与判断。因此规则的书写顺序直接决定结果。常用的规则类型如下:

规则类型 匹配对象 示例
DOMAIN 完整域名 DOMAIN,www.example.com,节点选择
DOMAIN-SUFFIX 域名及其所有子域名 DOMAIN-SUFFIX,example.com,节点选择
DOMAIN-KEYWORD 域名中包含的关键词 DOMAIN-KEYWORD,example,DIRECT
IP-CIDR 目标 IP 段 IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
GEOIP 目标 IP 的归属地 GEOIP,CN,DIRECT
RULE-SET 引用外部规则集 RULE-SET,my-direct,DIRECT
MATCH 所有连接(兜底) MATCH,节点选择

写规则时可以遵循三条经验:

  1. 具体的放前面,宽泛的放后面。 先写针对单个域名的规则,再写 GEOIP 这类覆盖面大的规则。
  2. 按需求决定 no-resolve。 它表示不要为了这一条 IP 规则主动触发域名解析,并不表示所有域名连接都会跳过 IP 规则;已有目标 IP 时仍可能匹配。给 GEOIP 规则随意加它,可能改变分流结果,见mihomo 规则说明。
  3. MATCH 永远放在最后。 它会匹配所有连接,写在中间会让后面的规则全部失效。

规则较多时,订阅通常会使用 rule-providers 引用外部规则集,让规则列表可以单独更新:

rule-providers:
  my-direct:
    type: http
    behavior: domain          # domain / ipcidr / classical
    url: https://rules.example.com/direct.yaml
    path: ./ruleset/my-direct.yaml
    interval: 86400           # 更新间隔(秒)

rules:
  - RULE-SET,my-direct,DIRECT
  - MATCH,节点选择

这段是外部规则的结构片段,rules.example.com 不是可下载的真实规则源。把 rule-providers 合并到主配置,并将 RULE-SET 那一行插到原有 MATCH 前面;不要直接在同一文件末尾再追加第二个 rules:,否则会遇到重复键或覆盖原规则的问题。

真实规则源的内容必须匹配 behavior 和 format:这里的 domain 应下载域名规则集合,不能填完整代理订阅或混有 DOMAIN-SUFFIX,... 指令的 classical 集合。path 是缓存文件位置,interval 控制规则源更新,并不更新节点订阅;字段定义见mihomo 规则集合说明。添加后先确认规则源下载和解析成功,再检查目标连接是否命中 my-direct;若源失败,先退回未引用该规则集的可用配置。

在客户端中导入订阅

各客户端的界面布局不同,但导入流程大致相同:

  1. 复制 Clash 格式的订阅地址:服务商面板通常会区分不同客户端的订阅格式,选择 Clash 或 mihomo 对应的链接。
  2. 在配置页导入:打开客户端中管理配置的页面(常见名称为“订阅”“配置”或 Profiles),粘贴订阅地址并导入。
  3. 启用该配置:导入后点击选中这份配置,使其成为当前生效的配置。
  4. 为策略组选择节点:进入“代理”页面,在“节点选择”等 select 类型的组中选择节点;url-test 组会自动选择,无需手动操作。
  5. 检查模式与接管开关:日常先选规则模式,打开系统代理;Android 客户端则通常需要启动 VPN 服务并授权,不能只选择配置就结束。
  6. 查看实际连接:浏览器发起访问后,检查连接页或日志中的匹配规则、策略组和最终节点。没有记录时先排查流量是否进入客户端。

运行模式、系统代理与 TUN

mode 决定规则是否生效,客户端界面上一般会直接提供切换按钮:

模式 行为 使用建议
rule(规则) 按 rules 逐条匹配,默认模式 日常使用
global(全局) 进入核心的连接交给 GLOBAL 组中选定的出站 临时排查规则漏判
direct(直连) 进入核心的连接按直连模式处理 临时停用代理

系统代理和 TUN 是两种不同的“接管流量”方式。系统代理只对读取系统代理设置的程序生效;TUN 模式创建虚拟网卡,可以接管不读取代理设置的程序,但通常需要管理员权限或安装系统服务,与其他 VPN 软件同时运行时容易冲突。

还有两个与安全相关的设置值得留意:

  • allow-lan:开启后,局域网内其他设备可以通过你的电脑上网。实际可达性还取决于监听地址、防火墙与认证设置。只给本机使用时保持关闭,避免无意开放共享代理。
  • external-controller:上面的示例把控制接口限制在 127.0.0.1,实际监听值以最终生效配置为准。如果改为对外监听,务必设置访问密钥,否则同一网络中的其他人可能修改你的配置。

完成验证:从“已连接”到可正常使用

代理、测速和流量计数回答的问题不同。按以下顺序确认,才能知道故障发生在哪一层:

检查项 通过标准 未通过时先看
配置已加载 当前配置明确,核心无解析错误 YAML 缩进、节点或策略组引用、协议支持
节点可用 测试地址有响应 节点参数、账户与网络;单次测试不能保证所有网站
应用已接管 实际请求出现在连接页或日志 系统代理、本地监听端口、浏览器扩展
规则正确 请求命中预期组,最终使用预期出站 规则顺序、组内选择、DNS
业务可用 目标页面或应用操作成功,普通直连网站也正常 特定服务限制、UDP 或应用独立网络设置

保持同一节点,临时切到全局后恢复正常,通常应回头检查规则与策略组选项;只切全局而不检查连接记录,仍然无法知道原因。若切换节点或规则后旧页面行为没变,可关闭该应用的旧连接或重启应用再测,避免长连接继续沿用旧路径。

更详细的概念见代理模式详解和DNS 与分流规则。

更新订阅、保留自定义与备份

在当前配置对应的更新入口获取新内容,确认更新时间或成功日志,检查策略组中已选节点是否仍存在,再测一次真实请求。自动更新的间隔按实际需求设置,无需频繁重复刷新;下载成功、配置生效和节点可用是三个独立结果。

长期自定义优先用客户端明确支持的扩展或覆写功能。Clash Verge Rev 的扩展配置与脚本说明列出了生效顺序与合并规则;某些字段或列表会整体替换,不能假定所有内容逐项合并。每次加规则后查看最终生效配置并验证,升级时复查相关版本变化。

升级或迁移前,在停止服务后保存应用提供的配置备份;没有统一导出功能时,按当前项目文档找到数据目录并备份。至少保留订阅地址、当前可用配置、自定义扩展、策略组选择与应用设置。备份中可能包含令牌和密码,应受保护保存;从其他人取得的脚本要先读懂其作用。

恢复时先还原基础配置并验证,再逐项恢复覆写、脚本和 TUN。完整通用步骤见订阅导入与备份指南。

以 Clash Verge Rev 的“备份设置”为例:在本地备份中创建备份,再打开“查看记录”,把需要保留的记录导出到应用数据目录以外。换机后“导入备份”先把 ZIP 加入备份列表,还要在记录里对选中的归档执行“恢复”并等待应用重启。创建、导出、导入与恢复是不同操作,项目的备份界面实现可核对当前行为;入口位置随版本调整。

正常停止与异常恢复

用完先关闭 TUN(如果曾启用)和系统代理,再退出客户端。规则模式里的 direct 只改变核心出站,不等于停止服务,也不一定清除系统代理。

异常退出后无法访问网页,重新启动客户端关闭系统代理;也可在系统网络设置里核对遗留的 127.0.0.1 代理,恢复使用前的值。若是手机 VPN 自动重连,先关闭相应自动连接选项再断开,避免一边排查一边被重新接管。

暂时关闭刚添加的覆写或脚本、退回已验证的配置,可以判断是否为自定义改动引起故障。保留错误日志后再操作,反复清空所有配置会丢失排查依据。

新手常见误区

  • 长期开着全局模式:国内网站也绕道境外,既慢又浪费流量。排查完问题后记得切回规则模式。
  • 直接修改订阅配置:更新订阅后改动会被覆盖,应改用客户端的覆写功能。
  • 显示已连接但打不开网页:通常与系统代理、规则或 DNS 有关,详见Clash 显示已连接但无法上网。
  • 启动时报端口被占用:多半是另一个代理客户端仍在运行,排查方法见端口被占用。

按学习路径,下一站是 sing-box 入门;要在设备之间维护配置,可继续读订阅更新与备份。遇到具体故障时转到连接失败排查,选择其他客户端可回到客户端专题。

常见问题

订阅生成的配置文件可以直接修改吗?
可以改,但下一次更新订阅时,服务端下发的新配置会覆盖你的修改。需要长期保留的自定义规则,应使用客户端提供的“覆写”“扩展配置”或脚本类功能(名称因客户端和版本而异),让修改在每次更新后自动重新应用。
Clash 和 V2RayN 可以同时运行吗?
技术上可以,但不建议同时开启系统代理。两个客户端都会尝试修改同一个系统代理设置,后启动的会覆盖先启动的;如果本地端口相同还会出现端口占用。需要切换时,先在一个客户端里关闭系统代理并退出,再打开另一个。
为什么全局模式可以访问,规则模式不行?
这通常提示规则选错出站、策略组选择不同或 DNS 配合存在差异。保持同一节点,检查失败请求在连接记录中命中了哪条规则、去了哪个组,再逐项修正。不要把长期全局模式当作修复规则的替代方案。
mihomo 能使用原版 Clash 的配置吗?
基本可以。mihomo 兼容原版 Clash 的主要配置格式,并在此基础上增加了更多协议和规则类型。反过来则不一定成立:使用了 mihomo 新增字段的配置,放到已停更的原版内核中可能无法加载。

参考资料

  1. mihomo 文档:通用配置

    MetaCubeX wiki.metacubex.one

  2. Clash Verge Rev 官方快速入门

    Clash Verge Rev clashverge.dev

  3. Clash Verge Rev 订阅导入

    Clash Verge Rev clashverge.dev

  4. Clash Verge Rev 扩展配置与脚本

    Clash Verge Rev clashverge.dev

  5. mihomo 路由规则

    MetaCubeX wiki.metacubex.one

  6. mihomo 规则集合与文件格式

    MetaCubeX wiki.metacubex.one

  7. Clash Verge Rev 备份操作实现

    Clash Verge Rev / GitHub github.com

  8. FlClash 项目主页

    GitHub github.com

回到顶部

下一站阅读

  1. 上一篇知识 L01 V2RayN 安装与使用教程
  2. 当前位置 L01 Clash 基础教程:内核、配置与规则
  3. 推荐下一篇 L01 sing-box 入门:客户端、配置导入与连接验证