Clash Meta 配置文件怎么写?从 YAML 模板到导入排错
简答:Clash Meta 配置文件通常就是供 Mihomo 内核读取的 YAML 文件。先用最小模板确认文件能启动,再导入客户端;如果节点不显示,优先检查 YAML 缩进、内核兼容性、订阅返回内容和日志。排查完成后,你应能判断问题出在文件、节点还是客户端。
定义:Clash Meta 配置文件是按 YAML 结构编写、由 Mihomo 内核读取的配置,通常包含端口、运行模式、节点、代理组、DNS、规则等部分。
先试这一步:复制最小可运行配置,再逐项增加内容
如果你只是想先确认配置文件能否被客户端读取,不要一开始就加入复杂规则、TUN、DNS 覆写或大量代理组。下面这份骨架只保留常用的本地代理入口、规则模式、一个策略组和基础规则;其中没有虚构节点,后续可以把真实节点放入 proxies。
官方 Mihomo 文档将 mixed-port、mode、allow-lan 等列为全局配置,并将代理节点、代理组和规则分别放在独立配置段中。可先对照Mihomo 全局配置文档和Mihomo 配置总览检查字段名称。
mixed-port: 7890
mode: rule
allow-lan: false
log-level: info
ipv6: false
proxies: []
proxy-groups:
- name: PROXY
type: select
proxies:
- DIRECT
rules:
- DOMAIN,localhost,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- MATCH,PROXY
这份模板的含义是:本机使用端口号 7890,按规则模式处理请求;没有添加节点时,策略组仍可选择 DIRECT,因此适合先做 YAML 和端口检查。加入节点后,再把节点名称写入 proxy-groups.proxies,不要直接把不存在的名称填进策略组。
| 字段 | 作用 | 新手建议 |
|---|---|---|
mixed-port | 同时提供 HTTP 和 SOCKS 代理入口 | 先保留一个未被占用的端口号 |
mode | 决定直连、全局或规则匹配模式 | 需要按规则分流时使用 rule |
allow-lan | 是否允许局域网其他设备使用代理端口 | 单机使用时设为 false |
proxies | 定义具体代理节点 | 节点名称必须唯一,节点类型和必填字段要匹配 |
proxy-groups | 把节点组织成可选择或自动测试的策略组 | 组内只能引用已存在的节点或策略组 |
rules | 按顺序决定请求走哪个策略 | 最后保留一条 MATCH 兜底规则 |
Clash Meta、Mihomo、客户端和配置文件分别是什么
这四个概念经常被混在一起:配置文件是 YAML 文本;Mihomo 是读取配置并处理流量的内核;Clash Verge Rev 等是带图形界面的客户端;Clash Meta 则是用户搜索配置文件时常用的旧称或生态称呼。实际导入前,最重要的是确认客户端当前使用的内核是否支持你写入的字段。
不要把“客户端能打开”理解成“配置一定能运行”。例如,客户端可能成功保存文件,但内核在激活时仍会因为 YAML 缩进、字段拼写、端口占用、策略组引用不存在或节点类型不完整而启动失败。Mihomo 的配置文档按全局设置、入站、代理节点、代理组、DNS 和规则分别说明字段,建议按照这个顺序定位。
| 类型 | 适合场景 | 主要风险 |
|---|---|---|
| 本地 YAML | 学习字段、固定规则、手工维护节点 | 修改后需要自己校验;节点变化不会自动同步 |
| 远程订阅 URL | 由服务端提供节点和配置,客户端定期更新 | 更新可能覆盖本地改动;URL 返回内容不一定是有效 YAML |
| 本地文件加覆写 | 保留订阅节点,同时增加自己的规则或策略组 | 覆写字段需符合客户端和内核支持范围 |
Clash Verge Rev 的公开界面文案包含 Import、Profile URL、Only YAML Files Supported、Edit File 和 Update 等入口。具体位置可能随版本变化,但导入逻辑可以按“配置文件页面—导入本地文件或 URL—激活配置—查看日志”执行,相关菜单名可参阅其Profiles 界面文案。
节点、代理组和规则应该怎样接起来
一个可用的分流配置至少要满足三层引用关系:节点先定义在 proxies;策略组通过 proxies 引用节点或其他策略组;规则最后把请求交给策略组、DIRECT 或 REJECT。Mihomo 文档要求代理节点名称唯一,代理组则通过节点名或策略组名建立引用。
下面是脱敏后的结构示例。它没有填入具体服务商节点,避免把无法核实的节点参数当成通用配置:
proxies:
- name: 节点名称
type: ss
server: example.com
port: 443
cipher: aes-128-gcm
password: 替换为密码
proxy-groups:
- name: PROXY
type: select
proxies:
- 节点名称
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,DIRECT
- DOMAIN-KEYWORD,office,PROXY
- MATCH,PROXY
上面只是字段结构示例,type: ss 对应的认证字段必须与实际协议匹配,不能把其他协议的字段照搬进来。代理节点的通用字段、必填的名称、类型、服务器和端口,可对照Mihomo 代理节点字段文档。
规则按从上到下的顺序匹配,顶部规则优先级更高。官方Mihomo 路由规则文档也说明了 DOMAIN、DOMAIN-SUFFIX、IP-CIDR、GEOIP 和 MATCH 等写法。实践中可以把明确的直连或拒绝规则放在前面,把分流规则放在中间,最后用 MATCH 兜底。
导入配置文件:本地 YAML、订阅 URL 与更新覆盖
- 准备文件。将内容保存为
config.yaml或其他以.yaml结尾的文件,编码使用 UTF-8,缩进使用空格,不要混用 Tab。 - 导入本地文件。在客户端的配置或 Profiles 页面选择导入文件,选择 YAML 文件后等待解析完成。
- 导入远程订阅。选择添加 URL 或
Profile URL,粘贴订阅地址并保存。不要把订阅地址公开到截图、日志或示例文件中。 - 激活配置。导入成功不等于正在使用,仍需选择该配置并执行激活或切换。
- 再测试代理端口。先确认客户端显示内核运行,再用浏览器或系统代理设置连接;如果端口号已经被其他程序占用,先修改
mixed-port。 - 更新前备份本地改动。远程订阅更新可能重新生成或替换配置。需要保留的规则、策略组和 DNS 设置,应使用客户端支持的覆写或合并功能,而不是直接修改会被覆盖的订阅正文。
如果导入 URL 后得到的是 HTML 错误页、登录页或空内容,客户端可能提示格式错误。可在不暴露订阅凭据的前提下检查返回状态和内容类型;不要在输出中打印完整订阅地址、Cookie 或 token。
DNS 与 TUN:先解决基础配置,再启用高级功能
DNS 和 TUN 都会改变连接路径,建议在基础 YAML 能启动、策略组能显示后再开启。Mihomo 官方 DNS 文档列出了 fake-ip 与 redir-host 两种增强模式,并说明了 fake-ip-filter、nameserver 等字段。若某些局域网设备、企业域名或应用出现解析异常,可以先关闭复杂 DNS 覆写,回到基础配置进行对照。
一个较小的 DNS 片段可以写成:
dns:
enable: true
ipv6: false
enhanced-mode: redir-host
nameserver:
- https://dns.alidns.com/dns-query
这是字段示例,不代表任何特定网络环境下的最佳 DNS。完整字段请参阅Mihomo DNS 配置文档。如果 DNS 片段导致内核无法启动,先暂时删除整个 dns 段,确认基础配置恢复后再逐行加入。
TUN 适合需要接管系统流量、自动路由或 DNS 劫持的场景,但它不是“节点不通”的第一修复手段。Mihomo 的TUN 配置文档列出了 stack、dns-mode、dns-hijack、auto-route 和 auto-detect-interface 等字段;其中 dns-mode: hijack 的平台行为有差异,Windows 还涉及 strict-route,Linux 的 DNS 劫持还涉及 auto-redirect。因此不要把一段 TUN 配置不加修改地复制到所有系统。
配置文件报错排查:按文件、内核、端口、节点顺序查
| 症状 | 优先检查 | 处理方法 |
|---|---|---|
| 导入时提示不是 YAML | 文件扩展名、编码、缩进 | 改为 UTF-8,删除 Tab,检查冒号后的空格和列表缩进 |
| 配置导入但无法激活 | 字段是否被当前 Mihomo 内核支持 | 先删除最近新增的字段,再按官方字段页逐项恢复 |
| 节点列表为空 | 订阅返回内容或 proxies 段 | 确认返回的确是配置或受支持的节点格式,不要只看 HTTP 状态 |
| 策略组为空 | 组内名称是否与节点名称完全一致 | 检查大小写、空格、特殊字符,以及是否误加了过滤条件 |
| 客户端启动失败 | 端口号是否被占用 | 更换 mixed-port,并在客户端日志面板查看具体报错 |
| 有节点但请求不走代理 | 规则顺序、当前策略组、系统代理/TUN 状态 | 先切到明确的策略组,再查看规则命中和内核日志 |
排查时不要一次修改多个部分。建议先保留最小模板,确认内核可启动;然后加入节点,再加入代理组,最后加入 DNS、规则集或 TUN。每次只改一段,出现错误后立即回退。
如果使用带面板的客户端,优先打开客户端的日志页面,查看配置解析错误、内核退出原因和连接失败信息。若是独立运行 Mihomo 服务,可根据启动方式查看服务日志;官方服务文档给出了 journalctl -u mihomo -o cat -e 等查看方式。不要把日志中的订阅 URL、密钥或认证信息原样发布。
最后核对:一份配置文件是否真的可用
- 文件扩展名是 YAML,编码正常,缩进只使用空格。
mixed-port使用未被占用的端口号。allow-lan在单机使用时保持关闭,只有明确需要局域网共享时才开启。- 代理节点名称唯一,策略组引用的每个名称都真实存在。
- 规则从上到下排列,最后有明确的兜底规则。
- DNS、TUN 和复杂覆写在基础配置稳定后再加入。
- 远程订阅更新前,先备份本地规则和策略组改动。
- 出现错误时查看客户端日志面板或 Mihomo 服务日志,而不是只凭“节点显示在线”判断。
本站是第三方使用指南站,不是 CordCloud 官方;涉及具体服务的订阅格式、节点字段和更新行为,应以对应服务提供的实际内容及官方说明为准。本文只说明 Mihomo 配置文件的通用结构,无法核实的节点参数不作保证。
常见问题
Clash Meta 配置文件和 Mihomo 配置文件是同一个东西吗?
在实际使用中,用户常把面向 Clash Meta 生态的 YAML 称为 Clash Meta 配置文件,而当前应以客户端实际使用的 Mihomo 内核字段为准。能否使用,最终取决于字段、版本和客户端是否支持。
为什么 YAML 文件导入成功,但节点和策略组不显示?
先确认订阅或本地文件返回的确是受支持的配置内容,再检查 proxies 是否为空、策略组是否引用了不存在的名称,以及是否设置了过滤条件。导入成功只代表文件被保存,不代表内容已经通过内核校验。
Clash Meta 配置文件中的 allow-lan 要不要打开?
单机使用通常不需要打开,保持 false 更容易控制暴露范围。只有需要让同一局域网的其他设备使用本机代理端口时,才考虑开启,并同时检查绑定地址、防火墙和访问范围。
配置文件启动失败时,应该先删掉哪一段?
先保留端口、mode、基础策略组和 rules,暂时删除 DNS、TUN、规则集、复杂代理组和覆写内容。确认最小配置能启动后,再按一次增加一段的方法恢复。
远程订阅更新后,自己改的规则不见了怎么办?
先确认更新是否重新生成了配置,再从备份恢复规则。长期需要保留的改动,应使用客户端提供的覆写、合并或编辑功能;不要假设直接修改订阅正文会在下次更新后保留。