Mihomo Meta 配置文件怎么写:从最小 YAML 到订阅与规则配置
简答:先复制最小模板,替换订阅地址或节点占位符,保存为 config.yaml;再用 mihomo -t 校验、查看启动日志、确认代理组已选中实际节点,最后用客户端实际端口执行 curl 并对比出口 IP。仅看到本地端口返回 204,不代表请求一定经过代理。
定义:Mihomo Meta 配置文件是供 Mihomo 内核读取的 YAML 文件,用来定义监听端口、节点或订阅集合、代理组、DNS、分流规则以及可选的 TUN 入站。
先复制模板:5 步确认配置是否真正生效
先不要同时开启 TUN、fake-ip 和复杂规则。建议按下面 5 步确认基础链路:
- 日志无解析错误:使用
mihomo -t -d ./mihomo-config校验配置;其中./mihomo-config替换为包含config.yaml的工作目录。具体参数以当前内核执行mihomo -h的输出为准。 - provider 有节点:在客户端面板或 API 中确认订阅已下载,且 provider 列表不是空的。
- 代理组不是 DIRECT:如果选择器的首项是
DIRECT,本地请求可能默认直连;测试前要手动选中实际节点或 Auto 组。 - curl 使用实际端口:配置中的端口只是示例。图形客户端可能覆盖配置端口,应以客户端设置页面显示的 mixed-port 为准。
- 对比出口 IP:先记录直连结果,再通过代理端口请求同一出口 IP 服务。HTTP 请求返回 204 只能说明请求获得了该状态,不能单独证明代理链路已打通。
curl https://api.ipify.org
curl -x http://127.0.0.1:7890 https://api.ipify.org
# 如果客户端只提供 SOCKS 代理,可改用:
curl --socks5-hostname 127.0.0.1:7890 https://api.ipify.org如果两次出口结果相同,先检查代理组当前选择、客户端端口和连接日志,再判断节点是否真的建立了连接。Mihomo 官方文档说明,mixed-port 可以同时接受 HTTP(S) 和 SOCKS5 代理请求;TUN 则属于另一种接管系统流量的入站方式,不能把两者混为一谈。查看 Mihomo 官方代理端口说明。
订阅引用模板:适合节点较多、需要定期更新
下面是一份不含真实服务地址的最小订阅模板。把 https://example.com/your-subscription 替换为你自己的订阅链接,并将配置保存为工作目录中的 config.yaml。代码块保留了 YAML 的真实换行和缩进,可以复制后再修改。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false
proxy-providers:
my-provider:
type: http
url: "https://example.com/your-subscription"
path: ./proxy-providers/my-provider.yaml
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
timeout: 5000
expected-status: 204
proxy-groups:
- name: Proxy
type: select
proxies:
- Auto
- DIRECT
use:
- my-provider
- name: Auto
type: url-test
use:
- my-provider
url: https://www.gstatic.com/generate_204
interval: 300
timeout: 5000
rules:
- MATCH,Proxy这里把 Auto 放在 DIRECT 前面,但导入后仍应在客户端面板确认当前实际选择。模板中 provider 的 health-check 用于订阅节点集合的健康检查;代理组自身的 url 用于该组测试逻辑。官方 proxy-groups 文档明确写明,组的 url 只检查该组 proxies 字段,不检查通过 use 引入的 provider 节点;因此不要仅凭组内 url 的结果推断 provider 节点都已测速,最终应结合面板和日志复核。查看 Mihomo 官方 proxy-groups 说明、查看 Mihomo 官方 proxy-providers 说明。
手写节点模板:没有订阅时逐字段核对
手写节点适合只有少量节点、需要逐项检查参数的场景。下面仅使用占位符,不包含真实服务器、密码、UUID、密钥或可用节点信息;占位符必须替换成服务端提供的实际参数。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
proxies:
- name: "SS-占位节点"
type: ss
server: ss.example.com
port: 443
cipher: aes-128-gcm
password: "替换为实际密码"
udp: true
- name: "VLESS-占位节点"
type: vless
server: vless.example.com
port: 443
uuid: "替换为实际 UUID"
udp: true
tls: true
servername: example.com
client-fingerprint: chrome
network: ws
ws-opts:
path: "/替换为实际路径"
headers:
Host: example.com
proxy-groups:
- name: Proxy
type: select
proxies:
- SS-占位节点
- VLESS-占位节点
- DIRECT
rules:
- MATCH,Proxy手写节点至少要核对 name、type、server 和 port,节点名称还应保持唯一。Shadowsocks 的加密方法和密码必须与服务端一致;VLESS 使用 WebSocket 时,ws-opts.path 与请求头也必须匹配。若使用 Reality,公钥、short-id、SNI 和 client-fingerprint 等字段应以服务端参数和当前 Mihomo 文档为准,不要从其他协议模板直接复制。查看 Mihomo 官方通用节点字段、查看官方传输层字段、查看官方 TLS 与 Reality 字段。
| 协议 | 重点字段 | 容易出错的地方 |
|---|---|---|
| Shadowsocks | server、port、cipher、password | 加密方法、密码和 UDP 能力需与服务端一致 |
| VMess | uuid、alterId、TLS、传输参数 | WebSocket 要核对 ws-opts;不能只写 network: ws |
| VLESS | uuid、TLS、SNI、传输方式 | Reality 参数必须与服务端对应,字段以当前文档为准 |
| Trojan | password、TLS、SNI | 证书校验相关字段不要无依据关闭 |
| Hysteria2 | 服务器、端口、密码、TLS 参数 | 端口、SNI、带宽或混淆参数需按服务端配置核对 |
Trojan 和 Hysteria2 的官方示例分别列出了密码、TLS、SNI、传输或带宽相关字段;这些字段不能通过把 type 改成另一种协议来复用。查看官方 Trojan 示例、查看官方 Hysteria2 示例。
配置文件、订阅和客户端覆写怎么选
| 方式 | 适合谁 | 自定义内容放在哪里 | 注意事项 |
|---|---|---|---|
手写 proxies | 节点少、需要逐字段核对 | 主配置的 proxies 数组 | 所有服务器、认证、TLS 和传输字段都要自己维护 |
引用 proxy-providers | 节点较多、需要自动更新 | 主配置定义 provider,订阅文件由内核保存 | 检查 URL、保存路径、更新结果和节点是否被代理组引用 |
| 客户端覆写或合并 | 订阅会更新但要保留规则、DNS 或代理组 | 客户端的覆写、合并或编辑界面 | 菜单名称因客户端而异,先备份并以当前版本界面为准 |
不要直接把订阅下载文件当作长期手改的主配置。订阅更新可能重新生成或覆盖该文件;更稳妥的做法是让订阅只提供节点集合,把自定义代理组、DNS 和规则放在主配置或客户端覆写层。具体合并优先级取决于客户端实现,需在当前客户端中查看生成后的最终配置。
截至 2026-11-12 查阅的 Mihomo 官方资料,示例字段以当前文档为准,不绑定某一个小版本。Mihomo 的发布版本和兼容字段会变化,升级后如果出现字段错误,应以实际内核的 mihomo -h、启动日志和官方配置页面复核。
端口、模式和规则:先把基础流量跑通
mixed-port 适合先做本机 HTTP 或 SOCKS 测试;allow-lan 控制是否允许局域网设备访问;mode: rule 让请求按照 rules 从上到下匹配;log-level: debug 适合临时排错,定位完成后可以改回 info。配置文件中的端口不是所有客户端的最终端口,图形客户端可能使用自身设置覆盖它。
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
rules:
- DOMAIN-SUFFIX,example.com,Proxy
- GEOIP,CN,DIRECT
- MATCH,Proxy规则通常按从上到下匹配,最后用 MATCH 兜底。过宽的规则放在前面,可能使后面的精细规则没有机会执行。rule-providers 用来读取外部规则集,再通过 RULE-SET 引用;使用时要确认规则集类型与内容相符,例如 domain、ipcidr 或 classical。查看 Mihomo 官方规则配置、查看 Mihomo 官方 rule-providers 配置。
DNS、fake-ip、IPv6 和 TUN 的保守写法
DNS 负责解析,TUN 负责接管系统流量,两者不是同一个开关。新手可以先使用较简单的 DNS 配置,确认普通代理端口可用后,再增加 fake-ip、DNS 劫持或 TUN。
dns:
enable: true
ipv6: false
enhanced-mode: redir-host
nameserver:
- https://dns.google/dns-query
- https://cloudflare-dns.com/dns-query上面只是结构示例,DNS 地址是否适合当前网络需要自行测试。官方 DNS 文档列出了 redir-host、fake-ip、fake-ip-filter、nameserver 等字段;如果启用 fake-ip,应根据实际应用增加过滤项,而不是盲目复制大段规则。查看 Mihomo 官方 DNS 配置说明。
- 普通应用代理:先使用系统代理或应用代理,不同时开启 TUN。
- 需要接管不支持系统代理的应用:再配置 TUN,并检查 VPN、管理员或系统权限。
- 域名异常:先在日志中区分 DNS 解析失败和节点连接失败,再切换
enhanced-mode: redir-host与fake-ip做对比。 - IPv6 异常:可暂时设置
ipv6: false进行对照,但这只是定位手段,不代表所有网络都应永久关闭 IPv6。
TUN 可能涉及自动路由、DNS 劫持、网卡冲突和系统权限。每次只改一个选项,保存后查看日志并复测,才能判断问题来自 DNS、路由还是节点本身。查看 Mihomo 官方入站与 TUN 说明。
Windows、macOS、Linux、Android 的导入与校验路径
- Windows:将文件命名为
config.yaml,在所用兼容客户端的 Profiles、配置或导入页面加载;重新加载后查看客户端设置中的实际 mixed-port。若使用原生内核,在包含配置的目录执行校验命令。 - macOS:在图形客户端的 Profiles 或配置页面导入 YAML;原生内核则用启动参数指定工作目录,并在终端查看启动输出。菜单名称以当前客户端版本为准。
- Linux:把配置放入启动参数
-d指定的目录;使用 systemd 时通过服务状态和 journal 日志确认加载结果。官方服务示例也使用工作目录和日志查看方式。查看 Mihomo 官方启动与服务说明。 - Android:在兼容 Mihomo 内核的客户端中打开配置、订阅或覆写页面导入,并授予 VPN 权限;确认客户端面板显示的实际端口和当前代理组。不同 Android 客户端的菜单不能相互套用。
校验命令可先在终端执行:
# Linux/macOS
mihomo -t -d ./mihomo-config
# 查看当前二进制支持的参数
mihomo -h如果配置目录中没有名为 config.yaml 的文件,或客户端使用了自己的配置目录,应把 -d 后的路径改成实际工作目录。mihomo -t 通过后,还要启动内核并检查 provider、代理组、连接日志和出口 IP;语法通过不等于节点参数正确。
常见现象:检查、判断、处理与回滚
| 现象 | 检查 | 判断与处理 | 回滚方式 |
|---|---|---|---|
| 启动时报 YAML 或字段错误 | 检查缩进、冒号、引号、重复名称和字段拼写 | 删除最近新增的一段,重新执行 mihomo -t;字段支持以当前文档为准 | 恢复上一个可启动的备份 |
| 本地端口有响应,但出口 IP 没变化 | 检查客户端实际端口、代理组当前选择、是否选中了 DIRECT | 改选实际节点或 Auto 组,再看连接日志;不要把 204 当作代理成功证明 | 关闭 TUN,仅保留 mixed-port 测试 |
| url-test 组没有预期测速结果 | 检查 provider 是否更新、provider 的 health-check、测试地址和网络 | 组的 url 与 provider 的健康检查作用不同;结合当前版本面板和日志判断 | 临时改用 select 组手动选节点 |
| 订阅更新失败 | 检查 URL、HTTP 状态、返回内容、证书和保存路径 | 若返回 Base64、JSON 或错误页面,不要直接当 YAML 导入;先确认订阅格式 | 使用最近一次成功保存的 provider 文件 |
| 开启 TUN 后断网 | 检查 VPN 或管理员权限、自动路由、DNS 劫持和网卡冲突 | 关闭 TUN,先确认普通代理端口可用,再逐项恢复 TUN 设置 | 恢复到 mixed-port、无 TUN 的配置 |
当配置能够加载、provider 能显示节点但所有节点都连接失败时,应分别检查订阅是否有效、节点参数是否匹配、系统时间、DNS 解析和当前网络环境。完成这些检查后,仍无法建立连接,才适合更换节点或联系订阅提供方。
本站说明
本站是第三方使用指南站,不是 Mihomo 或任何客户端的官方网站。本文侧重从零编写、导入和验证配置;如果你要处理配置备份、订阅更新后的覆写保留,可继续阅读Mihomo 配置文件修改、备份与覆写。端口、DNS 和节点选择问题,还可以参考连接问题排查指南与代理节点稳定性测试方法。
常见问题
Mihomo Meta 和 Clash Meta 是不是完全不同的配置格式?
MetaCubeX 的官方资料将 mihomo 描述为 Clash Meta 相关内核与生态,配置字段仍可能随版本变化。能否直接使用,应以当前内核文档、实际启动日志和客户端兼容情况为准,不要只根据文件名判断。
只写 proxy-providers、不手写 proxies 可以吗?
可以。需要确认 provider 下载成功、代理组通过 use 正确引用,并在客户端面板中选中实际节点。provider 健康检查和代理组 url 的作用不同,本地端口有响应也不能代替节点连通性验证。
为什么订阅更新后手写的代理组消失了?
常见原因是直接修改了订阅生成文件,而更新时文件被重新下载或覆盖。应把自定义代理组、DNS 和规则放在主配置或客户端覆写层,订阅文件只作为节点来源。
DNS 一开始就应该使用 fake-ip 吗?
不建议一开始同时启用 fake-ip、TUN、DNS 劫持和复杂规则。先用较简单的 DNS 与普通代理端口确认基础链路,再逐项增加功能,出现异常时按变量回滚。
为什么 curl 返回 204 但仍然像没有走代理?
204 只说明该 HTTP 请求获得了预期状态,不能证明代理链路已打通。应检查客户端实际端口、代理组是否选中非 DIRECT 节点,并对比直连和代理请求下的出口 IP。
配置文件应该放在哪个目录?
原生 Mihomo 通常从启动参数指定的工作目录读取配置,例如使用 <code>-d</code> 指定目录;图形客户端和 Android 客户端通常有自己的 Profiles、配置或导入页面,应以当前客户端显示的路径为准。