Mihomo内核配置文件修改指南
简答:修改 Mihomo 配置文件,建议按“定位当前生效文件→备份→只改一个模块→用 mihomo -t 校验→重载并验证”的顺序进行。订阅配置不建议直接长期改原文件,因为更新后可能被重新下载内容覆盖;更稳妥的做法是使用客户端的覆写、扩展配置或内核支持的 provider override。
定义:Mihomo 配置文件是控制代理端口、代理组、规则、DNS、TUN 等行为的 YAML 文件,具体生效内容还可能受到图形客户端覆写和订阅更新机制影响。
先判断:你改的是主配置、订阅文件还是客户端覆写
这篇指南只解决 Mihomo 内核配置文件的修改与验证,不等同于某个图形客户端的固定菜单教程。不同客户端可能把主配置、订阅缓存和覆写文件分开保存,因此“改了但不生效”时,第一步不是继续改字段,而是确认当前运行实例实际加载的是哪一个文件。
| 对象 | 适合修改的内容 | 主要风险 |
|---|---|---|
| 主配置文件 | 端口、运行模式、DNS、TUN、规则和代理组 | 语法错误可能导致内核无法启动;客户端可能重新生成文件 |
| proxy-providers 订阅文件 | 订阅节点的本地缓存或 provider 参数 | 订阅更新后本地手改内容可能消失 |
| 客户端覆写或扩展配置 | 自定义代理组、规则、DNS 和部分节点属性 | 字段是否支持取决于客户端和内核版本 |
| rule-providers 规则集 | 域名、IP 或 classical 规则集合 | 格式与 behavior 不匹配时规则可能加载失败 |
官方文档将代理集合定义为 proxy-providers,可使用 http、file 或 inline 类型;规则集合则通过 rule-providers 引入,并需要匹配实际文件格式。修改前应先确认字段所属对象。查看 proxy-providers 文档;查看 rule-providers 文档
安全修改流程:定位、备份、校验、重载、验证
- 定位当前配置。优先在图形客户端的“配置、Profiles、订阅、打开配置目录”之类入口中打开文件,不要凭经验猜固定路径。Linux 独立部署时,官方服务示例使用
/etc/mihomo存放配置文件;如果你使用的是图形客户端,实际目录以客户端显示为准。查看官方服务目录示例 - 备份并保护敏感字段。复制一份完整 YAML,文件名可加上日期和用途。订阅 URL、认证信息、节点密码、API 密钥不要发布到论坛、截图或公开仓库。备份的目标是可以完整回滚,而不是只复制你准备修改的几行。
- 一次只改一个模块。先改端口或代理组,再改 DNS、规则或 TUN。YAML 使用空格缩进,不要混用 Tab;冒号、引号、列表层级和节点名称都要保持结构一致。
- 用内核校验。在 Mihomo 可执行文件所在目录运行
mihomo -t -f config.yaml;如果你的文件名或路径不同,应替换为实际路径。校验通过只代表配置能够被解析,不代表订阅可下载、节点可连接或 TUN 一定能接管系统流量。 - 重载或重启。如果客户端提供“重载配置”,优先使用该功能;使用外部控制 API 时,官方 API 文档提供了
/configs的读取与重载接口,但是否开放 API、监听地址和认证方式取决于你的配置。查看官方 API 文档 - 验证改动。先看运行日志,再检查代理端口、代理组成员、规则命中和 DNS 解析。若只验证 YAML 解析,不要把“校验成功”写成“网络已经连接成功”。
回滚时停止内核,恢复备份文件,再重新校验和重载。如果配置由订阅自动生成,建议保留原订阅文件不动,把自定义内容迁移到客户端支持的覆写或扩展位置。
常改字段与可复制示例
1. 通用运行字段
mode 控制运行模式,可用 rule、global 或 direct;log-level 控制日志详细程度;allow-lan 决定是否允许其他设备通过代理端口访问。开启局域网访问时,应同时限制绑定地址、允许网段或增加认证,避免把代理端口暴露到不需要的网络。官方文档说明,allow-lan: true 会允许其他设备通过 Clash 代理端口访问。查看全局配置文档
mixed-port 可作为同时兼容 HTTP 和 SOCKS 的入口,但具体端口必须避开系统中已被占用的端口。示例只用于配置结构验证,端口和安全策略请按本机环境替换:
mode: rule
log-level: info
allow-lan: false
mixed-port: 7890
ipv6: false
2. proxies、proxy-providers 与 proxy-groups
proxies 用于直接写入代理节点;proxy-providers 用于引用远程、文件或内嵌节点集合;proxy-groups 再通过 proxies 或 use 引用节点和 provider。代理组中的名称必须与实际节点或代理组名称匹配,否则可能出现代理组为空。
下面是仅用于结构验证的最小示例,不包含真实节点,不能直接连接:
proxies: []
proxy-groups:
- name: PROXY
type: select
proxies:
- DIRECT
rules:
- MATCH,DIRECT
官方代理组文档说明,proxies 引用代理或其他代理组,use 引用代理集合;健康检查只检查代理组中直接列出的 proxies,不要误以为所有 provider 节点都会自动被同样检查。查看 proxy-groups 文档
3. rules 与规则优先级
Mihomo 按规则从上到下匹配,越靠前优先级越高;通常应把更具体的域名、网段或进程规则放在前面,把 MATCH 作为兜底规则放在最后。规则集通过 RULE-SET 引用,且必须先在 rule-providers 中定义对应名称。查看路由规则文档
rules:
- DOMAIN-SUFFIX,example.com,PROXY
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- MATCH,DIRECT
4. DNS 与 TUN:不要一次同时改完
DNS 配置涉及 nameserver、fallback、proxy-server-nameserver、direct-nameserver 和 enhanced-mode 等字段。官方文档特别区分了代理节点域名解析与普通域名解析,修改时应先保证代理节点域名能够解析,再处理规则分流。查看 DNS 配置文档
TUN 是系统流量接管功能,可能改变系统路由和 DNS。官方文档列出 auto-route、auto-redirect、auto-detect-interface、dns-mode 和 dns-hijack 等选项;Windows、Linux、macOS 的行为并不完全相同。建议先确认普通代理端口可用,再单独启用 TUN,并准备关闭 TUN 的回滚方案。查看 TUN 配置文档
tun:
enable: false
auto-route: true
auto-detect-interface: true
上面的示例明确关闭 TUN,仅用于验证 YAML 层级;不要直接把它当成适用于所有系统的可连接配置。启用 TUN 前还要检查管理员或系统权限、网卡选择、DNS 模式和现有 VPN 是否冲突。
修改后不生效或启动失败:按现象排查
| 现象 | 优先检查 | 处理方法 |
|---|---|---|
| 启动时报 YAML 错误 | 缩进、Tab、冒号、引号、列表层级 | 恢复备份后只重新加入一段;再运行 mihomo -t -f config.yaml |
| 改完后完全没变化 | 是否改错文件、是否被客户端覆写、是否需要重载 | 从客户端打开当前配置目录,读取运行配置或重载后再验证 |
| 代理组为空 | 节点名称、provider 名称、use 与 proxies 引用 | 先用最小代理组验证名称匹配,再加入过滤条件 |
| 订阅更新后改动消失 | 是否直接编辑订阅缓存文件 | 将长期改动迁移到覆写、provider override 或扩展配置 |
| 端口无法启动 | 端口被其他程序占用、权限不足 | 更换未占用端口或停止冲突程序,再重新校验和重载 |
| 开启 TUN 后断网 | 系统权限、DNS 劫持、路由、网卡和其他 VPN | 先关闭 TUN 恢复普通代理,再逐项启用并查看日志 |
| DNS 解析异常 | nameserver、代理节点解析链路、fake-ip 过滤 | 暂时使用更简单的 DNS 配置,确认代理节点域名解析正常后再增加策略 |
排障时不要同时修改代理组、规则、DNS 和 TUN。最短路径是:恢复能启动的备份→只改一个字段→校验→重载→查看日志→验证一个目标域名或端口。这样才能判断问题来自语法、加载文件、节点、规则还是系统接管。
适合长期保留的修改策略
- 只改本机偏好:优先放在客户端支持的覆写或扩展配置中,例如自定义代理组、规则顺序和 DNS 参数。
- 只改订阅节点属性:优先使用 provider 的
override,例如增加节点名前缀、过滤名称或调整部分通用属性;具体字段以当前官方文档和客户端支持情况为准。 - 只改规则集合:使用独立的
rule-providers文件,明确写出behavior和format,不要把 domain、ipcidr、classical 三种格式混用。 - 需要 TUN:先完成普通端口代理验证,再单独备份并启用 TUN;出现断网时立即回滚到关闭 TUN 的配置。
- 无法确认字段:不要照抄其他页面的示例值。字段是否存在、名称是否改变、客户端是否覆盖,应以当前 Mihomo 官方文档和客户端说明为准。
本站是第三方使用指南站,不是 Mihomo 或任何图形客户端的官方网站。本文中的示例只用于说明配置结构,真实订阅地址、节点名称、端口和系统权限都需要按你的环境替换。
常见问题
Mihomo 配置文件通常在哪里?
没有适用于所有客户端的固定路径。图形客户端通常提供“打开配置目录”或类似入口;Linux 独立服务的官方示例使用 /etc/mihomo。应以当前客户端显示的工作目录和实际启动参数为准。
直接修改订阅配置为什么会恢复?
因为订阅更新可能重新下载并替换本地缓存文件。需要长期保留的代理组、规则或节点属性,建议迁移到客户端支持的覆写、扩展配置或 proxy-providers 的 override 中。
mihomo -t 校验通过是不是已经能连接?
不是。-t 主要用于检查配置能否解析。订阅下载、节点认证、DNS 解析、端口占用、规则命中和 TUN 权限仍需分别验证。
代理组为空应该改哪里?
先检查 proxy-groups 中引用的节点名、代理组名、provider 名称以及 use 和 proxies 的位置。名称不匹配或过滤条件排除了全部节点,都可能导致代理组为空。
改完 DNS 后无法上网怎么办?
先恢复备份或暂时关闭复杂 DNS 策略,确认代理节点域名可以解析,再逐步加入 nameserver、proxy-server-nameserver、fake-ip 或规则相关设置。
开启 TUN 后断网怎么回滚?
先在客户端关闭 TUN,或把配置中的 tun.enable 改为 false,恢复普通代理端口并重载。之后再单独检查系统权限、网卡、DNS 劫持、路由和其他 VPN 冲突。