← 返回 tankejiasu.shop 本地视觉备份 首页

Mihomo配置文件启动失败?先改路径、缩进和节点引用

更新于 2026-10-24 · tankejiasu.shop

简答:Mihomo配置文件通常是 YAML 格式的 config.yaml。先复制模板并替换订阅地址、提供器名称和密钥,再用 mihomo -t -d <配置目录> 校验;启动失败优先检查路径、缩进、引用名称和端口占用。

定义:Mihomo配置文件是供 Mihomo 内核读取的 YAML 文件,用来定义代理端口、节点来源、策略组、规则、DNS、TUN 和控制接口。

先用最小模板:改 5 处,再校验

拿到订阅却不会写 config.yaml,最容易出错的不是字段数量,而是文件路径、YAML 缩进和名称引用。先将下面内容保存为配置目录中的 config.yaml,再替换订阅地址、提供器名称、策略组名称、端口和密钥。

本站是第三方使用指南站,不是 Mihomo 或相关客户端的官方站点。Mihomo 与早期 Clash.Meta 配置存在延续关系,但字段是否兼容仍应以当前 Mihomo 官方文档和具体客户端文档为准。截至2026-10-24,Releases 标记为 Latest 的是 v1.19.33,Alpha 属于预发布渠道,版本和字段以官方 Releases为准。

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false

external-controller: 127.0.0.1:9090
secret: "请替换为随机长字符串"

proxy-providers:
  my-subscription:
    type: http
    url: "https://example.com/your-subscription"
    path: ./proxy-providers/my-subscription.yaml
    interval: 3600
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 300
      timeout: 5000

proxy-groups:
  - name: Proxy
    type: select
    proxies:
      - AUTO
      - DIRECT
    use:
      - my-subscription

  - name: AUTO
    type: url-test
    use:
      - my-subscription
    url: https://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - MATCH,Proxy
占位内容修改位置必须保持一致的地方
订阅地址proxy-providers.my-subscription.url返回内容应符合代理提供器格式,不能只看 URL 能否打开
提供器名称my-subscription必须与两个策略组中的 use 完全一致
策略组名称Proxy、AUTOrules 中的目标名称必须已经声明
本地端口mixed-port客户端代理设置必须填写同一个实际端口
控制密钥secret连接外部控制器或面板时使用同一密钥,不要留空

YAML 对大小写敏感,缩进只能使用空格,不能使用 Tab;同一层级的键必须左对齐。官方语法文档还说明,冒号后应保留空格,域名通配符最好用引号包裹。可参考 Mihomo YAML 语法文档。

配置文件结构与不同客户端的入口

运行方式配置入口或路径照做步骤
直接运行 Mihomo由 -d 指定配置目录,目录中通常放 config.yaml、provider 文件和规则文件准备目录后运行 mihomo -t -d /path/to/mihomo,再用同一目录启动
Clash Verge Rev通过配置页导入远程或本地配置;扩展配置、扩展脚本和订阅编辑入口分开导入配置后设为当前配置,再在订阅菜单或扩展页面修改;不要把客户端扩展字段当成 Mihomo 原生字段
OpenClash配置通常由 OpenWrt 插件管理,官方默认模板将配置示例与覆写设置分开在 OpenClash 的配置管理、订阅管理或覆写设置中修改,再从插件日志确认实际生效文件
Android 等移动端客户端由客户端的配置列表或文件导入页管理,通常不会让用户直接使用服务器上的 -d 目录导入配置后授予 VPN 权限,启用代理或 TUN,再查看客户端日志

直接运行 Mihomo、Clash Verge Rev、OpenClash 和移动端客户端的配置生命周期不同。直接运行时,配置目录由启动参数决定;Clash Verge Rev 还会执行扩展配置或脚本;OpenClash 可能通过插件覆写设置生成最终配置;移动端则由应用保存和加载配置。不要把一个客户端的配置目录、覆写语法或默认端口直接套到另一个客户端。

Clash Verge Rev 的官方文档说明,扩展配置用于覆写或合并配置,数组字段的处理规则并不等同于简单追加;订阅扩展、全局扩展和扩展脚本也有不同执行顺序。需要追加规则时,应使用该客户端当前版本提供的订阅编辑器或扩展脚本,而不是在 Mihomo 原生配置中直接写一个未经支持的 rules+、prepend-rules 或 append-rules 字段。参考 Clash Verge Rev 扩展配置与脚本文档。

OpenClash 的官方仓库提供了 Meta 配置模板和覆写设置示例,但插件会参与配置生成。因此,在 OpenClash 中修改后,应以插件界面显示的当前配置和日志为准,而不是假设服务器上的某个同名文件就是最终生效文件。可参考 OpenClash 官方默认配置模板。

订阅、代理组、规则提供器的引用链

一份长期维护的配置,通常按下面的关系工作:

  1. 订阅 URL 返回节点集合,或本地文件提供节点集合。
  2. proxy-providers 为节点集合定义名称,例如 my-subscription。
  3. proxy-groups 用 use 引用这个提供器,并把节点组织成手动选择或自动测速组。
  4. rules 按从上到下的顺序匹配请求,并把请求交给已经声明的策略组。
  5. rule-providers 可提供远程规则集,规则中用 RULE-SET 引用。
rule-providers:
  work-sites:
    type: http
    behavior: classical
    url: "https://example.com/work.yaml"
    path: ./rule-providers/work-sites.yaml
    interval: 86400

rules:
  - RULE-SET,work-sites,Proxy
  - DOMAIN-SUFFIX,example.com,DIRECT
  - MATCH,Proxy

这个示例中,work-sites 必须同时出现在 rule-providers 和 RULE-SET 中,Proxy 必须已经在 proxy-groups 中声明。官方文档分别说明了 proxy-providers、rule-providers 内容格式和rules 规则顺序。

本地修改订阅时,不要直接把新的顶层 rules 或 proxies 覆盖到远程订阅上。直接运行 Mihomo 时,编辑实际生效的完整配置;使用客户端时,使用该客户端明确支持的扩展配置、订阅编辑器或脚本。这样才能避免订阅更新后本地修改消失,或数组被整体替换。

端口、代理组和规则怎么选

项目选择方式排查标准
mixed-port同时提供 HTTP 与 SOCKS 入口,适合多数桌面应用端口必须未被占用,系统代理或应用代理应填写同一端口
select手动选择节点或其他策略组适合固定线路和手动切换,先确认组内确实有节点
url-test按测试地址与间隔选择响应较快的节点测速地址的结果不等于所有业务的实际体验
fallback按顺序选择可用节点适合优先保证回退,不代表自动选择最低延迟
load-balance在多个节点之间分配请求适合允许连接分散的场景,不一定适合需要固定出口的业务

Mihomo 的入站配置区分代理端口、TUN 和 listeners;mixed-port 没有一个应被所有客户端照搬的统一默认值。常见客户端界面可能显示 7897 或 7890,Mihomo 内核实际端口以配置文件和设置页为准。官方入站说明见 Mihomo 入站配置文档。

规则按顺序匹配。需要优先处理的局域网、工作域名或特定规则集应放在宽泛规则前面,最后再用 MATCH 兜底。验证时看连接日志中实际命中的规则和策略,不要只根据网页能否打开判断配置是否生效。

DNS、Fake-IP、IPv6 和 TUN 的场景判断

场景建议起点出现异常时怎么改
只让浏览器或指定应用走代理先不开 TUN,使用 HTTP、SOCKS 或 mixed 端口检查应用代理地址、端口和连接日志
应用不支持手动代理再启用 TUN,并确认系统权限和路由先关闭 TUN 验证普通代理,再逐项检查 auto-route、dns-hijack 和 strict-route
希望由 Mihomo 维护域名到虚拟地址映射可从 fake-ip 开始对局域网域名、NTP、游戏主机等不适合虚拟地址的域名加入 fake-ip-filter
应用对真实解析地址更敏感改用 redir-host 进行兼容性排查观察 DNS 结果、应用连接和规则命中情况
IPv6 路径不稳定或没有完整 IPv6 网络可先设置顶层 ipv6: false对比关闭前后 AAAA 连接失败、绕行或超时是否消失

官方 DNS 文档确认,enhanced-mode 支持 fake-ip 和 redir-host,并提供 fake-ip-filter、nameserver-policy、fallback 等字段。下面是一个偏保守的示例,过滤项只是示例,需按实际网络补充:

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-filter:
    - "*.lan"
    - "localhost"
    - "time.*"
    - "+.pool.ntp.org"
    - "+.xboxlive.com"
  nameserver:
    - https://doh.pub/dns-query
  fallback:
    - tls://1.1.1.1
    - tls://8.8.4.4

如果局域网域名、时间同步或游戏主机连接异常,先把对应域名加入 fake-ip-filter,仍异常再切换到 redir-host,一次只修改一个变量。不要把多个 DNS 地址并列堆放就当成优化。

TUN 示例可以从较保守的配置开始:

tun:
  enable: true
  stack: system
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
  strict-route: false

strict-route: true能强化严格路由和 DNS 防泄漏,但官方文档明确提示,在特定场景下可能导致 VirtualBox 等应用异常。若开启 TUN 后局域网、虚拟机或部分软件异常,先改为 false,关闭并重新启用 TUN,再检查路由和 DNS。TUN 中的 stack、dns-hijack、auto-route、auto-detect-interface 和 strict-route 均应以 官方 TUN 文档为准;Android 开启 Private DNS 时,DNS 请求可能无法被自动劫持。

正确校验配置:不要漏掉 -d 或 -f

  1. 准备配置目录:例如 Linux 使用 /etc/mihomo,其中放置 config.yaml、proxy-providers 和 rule-providers。
  2. 按目录校验:使用 mihomo -t -d /etc/mihomo。-d 指向的是包含配置文件的目录,不是当前终端所在目录。
  3. 按文件校验:如果客户端或脚本明确指定单个文件,可使用 mihomo -t -f /path/to/config.yaml;路径必须替换成实际文件。
  4. 成功判定:命令返回成功,且控制台没有配置错误;常见成功提示会包含配置文件路径和 test is successful 类似字样,具体文字以当前版本为准。
  5. 失败判定:命令返回非零状态或输出 YAML 行号、字段名、文件路径错误。先修正第一条报错,再重新校验。
  6. 启动:直接运行时继续使用同一个目录,例如 mihomo -d /etc/mihomo;systemd 服务也应使用同一个目录。
# 目录校验
mihomo -t -d /etc/mihomo

# 单文件校验
mihomo -t -f /path/to/config.yaml

# Linux 查看服务日志
journalctl -u mihomo -o cat -f

# Linux 查看监听端口
sudo ss -ltnp

# macOS 查看监听端口
sudo lsof -nP -iTCP:7890 -sTCP:LISTEN

# Windows 查看端口占用
netstat -ano

官方 systemd 示例使用 ExecStart=/usr/local/bin/mihomo -d /etc/mihomo,并通过 journalctl -u mihomo查看日志,详见 Mihomo systemd 服务文档。配置校验与启动使用不同目录,是“明明改过文件但仍报错”的常见原因。

报错信息→原因→改法速查

现象或关键词优先原因改法
yaml: line X、解析失败缩进、Tab、冒号后的空格或引号错误只用空格,检查报错行及其上一级缩进,再重新运行 -t -d
配置校验的文件不是刚修改的文件漏写 -d,命令读取了默认配置目录明确指定 mihomo -t -d <配置目录> 或 -f <配置文件>
策略组为空use、proxies 或提供器名称不一致逐字核对名称,并查看 provider 更新日志和控制器中的代理列表
provider 下载或解析失败URL 不可用、返回内容不是节点列表、路径或权限错误检查下载响应、文件路径、目录权限和日志,不要只看浏览器能否打开 URL
RULE-SET 不生效规则提供器未声明、行为类型不匹配或规则顺序靠后确认 rule-providers、behavior、规则名称和连接日志
端口已占用其他程序或旧 Mihomo 进程监听同一端口用对应系统命令查 PID,停止冲突进程或改端口;常见默认为 7897 或 7890,以设置页为准
开启 TUN 后部分软件异常路由、DNS 劫持、严格路由或系统权限冲突先关闭 TUN验证普通代理,再将 strict-route 改为 false并逐项恢复

规则提供器状态可从连接日志、更新日志或控制器接口确认。不要只判断“文件已经下载”就认为规则生效:还要确认提供器成功解析,并在连接日志中看到对应的 RULE-SET 命中。外部控制器配置应优先绑定 127.0.0.1,并使用非空 secret;官方全局配置说明见 Mihomo 全局配置文档。

常见问题

配置文件一定要叫 config.yaml 吗?

不一定。直接运行 Mihomo 时,实际读取位置取决于 -d 或 -f 参数;许多客户端默认使用 config.yaml,但应以客户端当前配置入口为准。

为什么我在当前目录运行 mihomo -t,却校验了别的文件?

因为未指定路径时,Mihomo 可能读取默认配置目录。改用 mihomo -t -d <配置目录>,或对单个文件使用 mihomo -t -f <配置文件>。

为什么订阅导入后策略组是空的?

检查订阅返回格式、proxy-providers 名称、策略组的 use 引用和 provider 更新日志;随后在控制器或客户端代理列表中确认节点是否已经解析。

Fake-IP 和 redir-host 应该怎么选?

需要域名映射和 TUN 场景时可先试 Fake-IP;遇到局域网域名、NTP、游戏主机或特定应用异常,先加入 fake-ip-filter,仍不兼容再用 redir-host 排查。

为什么 rules 写了却没有生效?

确认 mode: rule、规则顺序、目标策略组名称和规则提供器声明,再查看连接日志中实际命中的规则与策略。

如何确认请求真的经过了代理?

同时查看连接日志中的命中策略和节点,并对比启用代理前后的出口 IP。仅看到端口监听或 DNS 请求成功,不能证明目标连接已经经过预期线路。

常见问题

配置文件一定要叫 config.yaml 吗?

不一定。直接运行 Mihomo 时取决于 -d 或 -f 参数;客户端默认文件名可能不同,应以实际配置入口为准。

为什么 mihomo -t 校验了别的文件?

未指定路径时可能读取默认配置目录。改用 mihomo -t -d <配置目录>,或 mihomo -t -f <配置文件>。

为什么订阅导入后策略组是空的?

检查订阅格式、proxy-providers 名称、策略组 use 引用、provider 更新日志和客户端代理列表。

Fake-IP 和 redir-host 怎么选?

需要域名映射时可先试 Fake-IP;局域网、NTP、游戏主机或应用异常时先加 fake-ip-filter,仍不兼容再切换 redir-host。

为什么 rules 写了却没生效?

确认 mode 为 rule、规则顺序、目标策略组和 rule-providers 声明,并查看连接日志中的实际命中结果。

开启 TUN 后部分软件异常怎么办?

先关闭 TUN验证普通代理,再检查路由、DNS 劫持、权限,并将 strict-route 改为 false 做对比。

相关阅读

参考资料

  1. Mihomo 官方启动与下载文档
  2. MetaCubeX/mihomo 官方 Releases
  3. Mihomo 官方 YAML 语法文档
  4. Mihomo 官方入站配置文档
  5. Mihomo 官方 proxy-providers 文档
  6. Mihomo 官方 rule-providers 内容格式文档
  7. Mihomo 官方 rules 文档
  8. Mihomo 官方 DNS 配置文档
  9. Mihomo 官方 TUN 配置文档
  10. Mihomo 官方 systemd 服务文档
  11. Clash Verge Rev 官方扩展配置与脚本文档
  12. OpenClash 官方默认配置模板