配置抽屉
五个配置项,决定客户端怎么分流
mode、dns、tun、proxy-providers 与 external-controller 是配置文件里最常被改动的五段。左侧切换查看每一段解决什么问题,右侧是对应的 config.yaml 片段。
mode 决定内核拿到一条连接之后怎么处理。rule 按规则表从上往下匹配,命中哪一条就走哪条对应的策略;global 把全部流量交给同一个出口,direct 相当于临时关掉代理。日常保持 rule 即可,只有在判断「是规则写错了还是节点不通」时才切到 global 做对照。客户端界面上的模式开关改的就是这一行,切回 rule 之后要确认策略组里至少有一个可用节点,否则命中 PROXY 的连接会直接失败。
mode: rule # rule / global / direct log-level: info ipv6: false
dns 段决定域名由谁解析、走哪条链路。enhanced-mode 设成 fake-ip 时,内核先返回一个虚拟地址给应用,真实解析在代理链路里完成,明文查询不会出现在本地网络;设成 redir-host 则先解析再连接,兼容性更好但更容易被中间设备看到。nameserver 填加密解析地址(DoH 或 DoT),fallback 用来兜住被污染的返回结果。改完这一段建议重启内核,只重载配置有时不会重建解析缓存。
dns: enable: true enhanced-mode: fake-ip nameserver: - https://223.5.5.5/dns-query fallback: - tls://1.1.1.1:853
tun 由内核创建一块虚拟网卡,把系统层面的流量整体接管,不再依赖应用是否遵守系统代理设置。终端命令、容器、游戏客户端这类不读代理配置的程序,只有开启 tun 之后才会走规则。开启前先确认权限:Windows 需要以管理员身份运行,macOS 首次开启会要求授权安装网络组件。stack 选 gvisor 兼容性最好,system 借用系统协议栈、吞吐更高,但个别系统上会和防火墙冲突。不需要接管全局流量时保持关闭即可。
tun: enable: true stack: gvisor # gvisor / system / mixed auto-route: true dns-hijack: - any:53
proxy-providers 把订阅链接从 proxies 里拆出来,交给内核按固定间隔拉取,多个策略组可以共用同一份节点集合,订阅换地址时只改这一处。health-check 决定可用性探测的地址与间隔,探测失败的节点在策略组里会被暂时跳过;path 指定缓存文件位置,拉取失败时内核继续用上一次的缓存,不会因为一次网络抖动把节点清空。interval 的单位是秒,设得太短会被订阅服务限流,一般从 3600 起步。
proxy-providers: sub-a: type: http url: "https://example.com/api/v1/client/subscribe?token=xxxx" interval: 3600 path: ./providers/sub-a.yaml health-check: enable: true url: https://www.gstatic.com/generate_204 interval: 300
external-controller 是内核暴露出来的控制接口,客户端界面、第三方面板与脚本靠它读取当前策略、切换节点、查看连接列表。GUI 客户端启动内核时会自动写入这一行并生成随机密钥,手动部署内核时才需要自己指定。默认监听 127.0.0.1:9090,只有本机能访问;要放到局域网或者服务器上,必须同时设置 secret,否则同网段任何人都能改你的分流规则和节点选择。
external-controller: 127.0.0.1:9090 secret: "your-password"
平台入口
按系统选择客户端
五个平台各自有仍在更新的客户端。下载页按平台列出全部可选型号、系统要求与安装说明,内核文件单独成区。
开源生态
内核、客户端与规则集的维护边界
同一份配置文件可以被不同客户端驱动,因为真正解析它的是内核。理清三层各自负责什么,换客户端或者换内核时就不必把规则重写一遍。
客户端与内核是两层
mihomo 负责解析配置、建立连接、执行规则;Clash Verge Rev、FlClash 这类客户端负责界面、订阅管理与内核进程的启停。同一个内核可以被不同客户端驱动,配置文件格式一致,换客户端时把 profile 导出再导入即可,规则与策略组不需要重写。
分支关系与配置兼容
原版 Clash 内核已经停止维护,社区在它的配置格式上继续开发,形成 Meta 与 mihomo 这一支,新增了 VLESS、Hysteria2、TUIC 等协议支持,以及 rule-providers、proxy-providers 这类配置能力。现在仍在更新的客户端基本都以 mihomo 为内核,配置文件里能写哪些字段,以 mihomo 的文档为准。
规则集是独立维护线
分流规则被拆成域名、IP、进程等类型的清单文件,由不同项目分别维护,内核通过 rule-providers 按需拉取。这样更新规则不需要改动配置文件,客户端只要保留引用即可。挑选规则集时看更新频率与分类粒度,比看条目总数更有意义。
更新机制分三层
客户端的更新分三层:界面、内核、订阅与规则集。多数客户端把内核当作可替换组件,设置里能指定版本或者手动替换二进制文件;订阅与规则集按各自配置的间隔定时拉取。出现连接异常时,先确认三层的配置与时间是否对得上,再去看具体报错。
常见问题精选
上手前最常遇到的四个问题
这里放最常被问到的四条,完整的分类问答在常见问题页,术语解释在术语手册。
订阅更新失败先检查什么
先确认订阅链接本身能在浏览器里打开并返回内容,再回到客户端看更新日志与时间戳。多数失败是链接过期、域名被本地 DNS 拦下,或者订阅服务临时限流;把链接重新导入一次,通常能排除缓存与旧配置的干扰。
客户端显示已连接但网页打不开
按顺序查三处:dns 段是否启用并指向加密解析,模式是否被切到了 direct,连接日志里目标域名命中了哪条规则。三项都正常时,再换一个节点验证是不是出口本身的问题。
rule 模式和 global 模式有什么区别
rule 按规则表逐条匹配,不同域名走不同出口;global 把全部流量交给同一个出口。模式只改变内核的处理方式,不影响节点本身,排查问题时切到 global 做对照最快。
自定义规则写在配置文件的哪一段
写在 rules 段,语法是「类型,匹配内容,策略名」三部分。规则多了可以拆成单独的规则集文件,用 rule-providers 引入,这样更新规则不必改动主配置。
技术笔记
最近的排查与选型记录
按问题类型整理的长文:平台上手、客户端对比、停更迁移与证书排查,每篇都给出可照着做的步骤。
iOS 上手:App Store 获取客户端与配置导入完整步骤
梳理 iOS 端从 App Store 搜索、区域差异到订阅链接导入、按需开启的设置流程,并说明首次连接后如何确认规则分流是否生效。
阅读全文 →客户端停更之后:配置导出、内核替换与替代方案
客户端停止维护不等于配置作废。先导出 profile 与规则,再按平台选择仍在更新的客户端或直接换用 mihomo 内核,附迁移前后的检查清单。
阅读全文 →主流 Clash 客户端横向对比:按平台与使用习惯选型
从内核版本、平台覆盖、配置方式与更新节奏四个维度对比主流客户端,给出 Windows、macOS、移动端与桌面端的选型建议,避免装完才发现不合用。
阅读全文 →