mihomo 推荐配置怎么写?先用这份最小模板再按设备调整
简答:mihomo 推荐配置不要一开始堆满参数:先备份原 config.yaml,只接入兼容格式订阅,确认节点、代理组、DNS 和规则正常,再按设备需要开启 fake-ip、TUN、IPv6 或远程规则集。
定义:Mihomo 推荐配置,是围绕订阅、代理组、DNS、规则和平台权限整理出的可维护起点,不是一份适合所有设备的固定参数清单。
先看必改字段:10 秒判断该改什么
本站是第三方使用指南站,下面只讨论 mihomo 配置本身。第一次调整时,优先处理订阅地址、控制器密钥、是否允许局域网接入和是否开启 TUN;不要先改一大批 DNS、规则集与节点筛选。
| 场景 | 先保留 | 暂时不要开启 | 首要检查 |
|---|---|---|---|
| Windows 桌面 | mixed-port、mode: rule、allow-lan: false | TUN、复杂规则集、IPv6 | 系统代理是否指向实际端口,日志是否命中代理组 |
| Android | 客户端提供的 VPN/TUN 开关、应用分流 | 与桌面端相同的完整 YAML 直接套用 | VPN 权限、Private DNS、电池限制 |
| Linux 服务器或路由器 | 独立配置目录、专用运行用户、明确路由 | 公开监听控制器、未经确认的规则集 | TUN 接口、路由表、iptables/nftables 和目录权限 |
| 仅本机代理 | allow-lan: false、控制器绑定 127.0.0.1 | bind-address: '*'、公网控制器 | 端口占用和本机连接日志 |
先备份原来的 config.yaml,再在客户端的配置目录中修改或替换它;如果客户端通过启动参数指定配置文件,则按客户端的文件路径加载,不要随意另存为带尖括号的文件名。端口常见为 7897 或 7890,但应以客户端设置页为准。
订阅地址应返回 mihomo 或 Clash 兼容格式。若返回的是完整配置文件,不应把它当成只包含节点的代理提供者;若返回的是纯节点列表,才适合放入 proxy-providers。节点为空时,先在浏览器或客户端查看订阅响应类型、提供者下载状态和解析错误。
最小可用模板:先只改订阅地址和密钥
下面模板使用 proxy-providers 管理纯节点订阅,代理组通过 use 引用提供者。模板没有写 filter 或 exclude-filter,因为筛选正则一旦写错,代理组可能直接变为空。字段含义可对照 Mihomo Proxy Providers 文档 与 Mihomo Proxy Groups 文档。
mixed-port: 7890
allow-lan: false
bind-address: 127.0.0.1
mode: rule
log-level: info
ipv6: false
find-process-mode: strict
external-controller: 127.0.0.1:9090
secret: "请替换为随机密钥"
proxy-providers:
subscription:
type: http
url: "订阅地址"
path: ./proxy-providers/subscription.yaml
interval: 3600
proxy: DIRECT
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 300
timeout: 5000
lazy: true
expected-status: 204
proxy-groups:
- name: PROXY
type: select
use:
- subscription
proxies:
- AUTO
- DIRECT
- name: AUTO
type: url-test
use:
- subscription
url: https://www.gstatic.com/generate_204
interval: 300
timeout: 5000
tolerance: 50
lazy: true
- name: FINAL
type: select
proxies:
- PROXY
- DIRECT
dns:
enable: true
ipv6: false
default-nameserver:
- 223.5.5.5
- 1.1.1.1
enhanced-mode: redir-host
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- tls://1.1.1.1
- tls://8.8.4.4
fallback-filter:
geoip: true
geoip-code: CN
geosite:
- gfw
proxy-server-nameserver:
- https://doh.pub/dns-query
rules:
- DOMAIN-SUFFIX,lan,DIRECT
- DOMAIN-SUFFIX,local,DIRECT
- GEOIP,LAN,DIRECT,no-resolve
- GEOIP,CN,DIRECT,no-resolve
- MATCH,FINALdefault-nameserver用于解析 DNS 服务器自身的域名,因此应填写 IP 地址;nameserver是常规域名解析服务器,fallback是备用解析路径。官方 DNS 文档同时说明了 nameserver-policy、proxy-server-nameserver 和 fallback-filter 的用途,可参考 Mihomo DNS configuration。
这份 DNS 示例不是“绝对无泄漏”承诺:不同系统、TUN 状态、应用自带 DNS 和网络环境可能产生不同解析路径。需要判断是否存在 DNS 旁路时,应同时查看 mihomo 连接日志、系统网络设置和路由器或防火墙中的 DNS 请求;不要只根据网页能否打开来判断。
关键参数怎么选:默认行为、推荐起点与故障表现
推荐值不是官方默认值。下表把两者分开,便于先用保守设置启动,再根据实际故障调整。具体字段以 Mihomo 全局配置文档为准。
| 参数 | 官方文档行为 | 推荐起点 | 何时调整 | 故障表现 |
|---|---|---|---|---|
mode | 支持规则、全局等运行模式 | rule | 仅在排查代理链路时临时切换 | 设为全局后,所有请求依赖当前代理组 |
allow-lan | 控制是否允许局域网设备接入 | false | 手机或其他设备确实需要使用本机代理时开启 | 开启后监听端口暴露范围扩大 |
bind-address | 控制监听地址,绑定所有地址会扩大可访问范围 | 127.0.0.1 | 局域网共享时按需绑定局域网地址 | 其他设备无法连接,或产生不必要暴露 |
ipv6 | 控制 IPv6 解析与相关流量 | false | 确认 IPv6 出口、DNS 与规则均正常后开启 | 部分网站打不开或流量路径与预期不同 |
find-process-mode | 支持进程匹配模式,严格模式适合桌面端 | 桌面端保留 strict | 路由器或资源有限设备按需关闭 | 进程识别异常或产生额外资源开销 |
tcp-concurrent | 开启后会使用 DNS 解析出的多个 IP 并发连接,采用先成功的连接 | 先不写 | 明确需要并发连接并完成对比测试时再开启 | 连接数与资源消耗增加,收益并不保证 |
mixed-port | 提供 HTTP 与 SOCKS 混合代理入口 | 使用客户端设置页显示的端口 | 端口被占用或系统代理指向错误时修改 | 系统代理连接失败或启动时报端口占用 |
端口不是固定写死的内核结论。若启动失败,Windows 可执行 netstat -ano | findstr :7890,Linux 可执行 sudo ss -lntp | grep 7890,macOS 可执行 lsof -nP -iTCP:7890 -sTCP:LISTEN;把命令中的端口替换为设置页实际端口。
DNS:redir-host 先跑通,fake-ip 只在兼容性确认后使用
redir-host是兼容性优先的起点,适合刚导入订阅、办公软件较多或需要先缩小排查范围的场景。fake-ip适合已经确认 TUN、DNS 劫持和应用兼容性正常,并且希望更稳定结合域名规则处理的场景。官方文档将两者列为 enhanced-mode 的可选值,默认行为为 redir-host,详见 DNS configuration。
| 模式 | 优先适用 | 常见问题 | 处理方法 |
|---|---|---|---|
redir-host | 新手、办公、兼容性优先 | 规则未命中、解析服务器不可用 | 看 DNS 日志、代理组命中情况和系统代理 |
fake-ip | TUN、域名规则较多 | 局域网域名、企业软件或部分应用异常 | 先切回 redir-host 对比,再在原 DNS 块增加过滤项 |
切换时不要在 YAML 中新增第二个顶层 dns:,只修改已有块中的字段:
dns:
enhanced-mode: fake-ip
fake-ip-filter-mode: blacklist
fake-ip-filter:
- '*.lan'
- '*.local'
- '+.localhost'如果使用 nameserver-policy 区分域名解析路径,应同时确认规则集或域名通配符确实覆盖目标域名;如果希望 DNS 请求遵循规则,官方文档提示 respect-rules需要配合 proxy-server-nameserver,否则可能出现代理节点域名解析的先后依赖问题。
代理组与分流:手动、测速、故障转移各司其职
select适合手动固定节点,url-test适合根据测试地址选择延迟较低的节点,fallback适合按顺序在可用节点之间切换。测速只反映测试地址、当前网络和当时状态,不等于所有网站的实际速度。
- 手动选择:保留
PROXY,用于固定地区或对比不同线路。 - 自动测速:保留
AUTO,用于快速比较可用性和测试地址延迟。 - 故障转移:需要优先使用固定节点、失败后再切换时,再增加
fallback组;字段说明见 代理组文档。 - 直连对照:
DIRECT用于局域网、明确直连的域名或判断故障是否来自代理链路。
分流规则从上到下匹配,最后使用 MATCH 兜底。示例中的 GEOIP,CN,DIRECT表示把命中中国 IP 的流量交给直连,但它依赖可用的 GeoIP 数据。首次加载或更新规则、GeoIP 数据时,远程下载可能因网络、证书、权限或路径失败;因此要在提供者状态中确认资源已成功加载。规则类型与 GEOIP、RULE-SET、MATCH的用法见 Mihomo Route Rules 文档。
远程规则集应先声明,再在 rules中引用,名称必须完全一致:
rule-providers:
office:
type: http
url: "规则文件地址"
path: ./rule-providers/office.yaml
interval: 86400
proxy: DIRECT
behavior: domain
format: yaml
rules:
- RULE-SET,office,DIRECT
- GEOIP,CN,DIRECT,no-resolve
- MATCH,FINALrule-providers的下载代理、格式、行为和本地路径要求,参见 Mihomo Rule-Providers 文档。首次排错时建议先删除远程规则集,确认基础连接正常后再逐个恢复。
TUN 与平台权限:先用系统代理,再按需开启
TUN不是系统代理的同义词。系统代理主要影响遵守 HTTP、HTTPS 或 SOCKS 设置的应用;TUN通过虚拟网卡和路由接管更多流量,因此更依赖平台权限、路由和 DNS 设置。官方 TUN 文档将 auto-redirect限定为 Linux,并要求同时启用 auto-route;不要把它当成 Windows、macOS 或 Android 的通用开关,详见 Mihomo TUN 文档。
tun:
enable: true
stack: system
auto-route: true
auto-detect-interface: true
dns-hijack:
- any:53
- tcp://any:53| 平台 | 建议 | 权限与限制 | 故障表现及处理 |
|---|---|---|---|
| Windows | 先系统代理,后 TUN | 按客户端要求启用服务模式或管理员权限,并放行核心程序 | strict-route可能阻止 DNS 泄漏,但可能影响 VirtualBox 等应用;异常时先关闭它对比 |
| macOS | 确认系统代理后再启用 TUN | 按系统提示在隐私与安全性中放行应用;TUN 设备名需符合 macOS 要求 | 检查应用隔离、网络防火墙和 TUN 设备状态 |
| Android | 优先使用客户端的 VPN/TUN 开关 | 确认 VPN 权限;Private DNS 开启时,DNS 可能无法被自动劫持 | 检查 Private DNS、应用分流和电池限制 |
| Linux/路由器 | 使用专用用户和独立配置目录 | 运行用户需能读取配置并写入缓存;auto-redirect仅适用于 Linux | 检查 TUN 接口、路由表、iptables/nftables、目录权限 |
| iOS | 使用支持相应协议与订阅格式的 iOS 客户端 | 不能把桌面端完整 TUN YAML 直接套用 | 按 iOS 客户端的字段和权限重新配置 |
strict-route: true不是所有设备都应默认开启。官方文档说明它会强化路由并在 Windows 上增加阻止 DNS 泄漏的防护,但也可能使某些应用异常;如果 TUN 后局域网、虚拟机或企业软件无法访问,先关闭 strict-route并对比日志,再判断是否需要恢复。
导入后六步验证:语法、订阅、连接、DNS、规则、应用
- 语法:重新加载配置,检查重复顶层键、缩进、组名、提供者路径和引用名称。
- 订阅:确认返回内容是兼容格式,提供者不是空列表,下载状态没有超时或解析错误。若节点为空,先删除筛选条件,再检查订阅类型和 URL。
- 连接:在
PROXY中手动选择节点,访问 HTTPS 网站并查看连接日志。 - DNS:查看 DNS 请求是否由 mihomo 接收,确认系统、浏览器或应用没有使用另一条 DNS 路径;开启 TUN 后再检查 Private DNS、局域网 DNS 和路由器转发。
- 规则:在连接日志中确认命中的规则和策略组,检查
GEOIP,CN、远程RULE-SET与最后的MATCH是否按顺序生效。 - 应用:分别测试浏览器、命令行、办公软件和需要 UDP 的应用。浏览器正常而单个软件失败时,先确认该软件是否遵循系统代理,再对比 TUN 开关前后的结果。
验证是否走代理,应优先看连接日志中实际命中的策略,或对比开启与关闭代理时的出口 IP;不要只用延迟数字判断。远程规则或 GeoIP 首次下载失败时,先暂时移除远程提供者,保留最小规则验证基础连接,再恢复下载配置。
安全与长期维护:订阅更新不要覆盖你的手改项
不需要局域网共享时,保持 allow-lan: false,将 external-controller绑定在 127.0.0.1,并设置非空且不重复使用的 secret。不要把控制器监听到 0.0.0.0后直接暴露到公网,也不要公开包含订阅地址、节点信息或 API 密钥的完整配置。
长期维护可分成三层:基础配置由客户端或内核读取;订阅节点由 proxy-providers管理;远程规则由 rule-providers管理;本地只保留少量覆写。每次更新前保留上一份可用配置,更新后重新执行六步验证。若客户端支持覆写或扩展配置,应把长期修改放在那里,而不是直接编辑可能被订阅更新覆盖的文件。
需要排查具体设备的系统代理、端口或连接日志时,可继续阅读本站的连接问题排查、设备配置指南和使用指南。
常见问题
Mihomo 推荐配置是不是越完整越好?
不是。先用最小配置确认订阅、代理组、DNS 和规则正常,再按设备需求增加 fake-ip、TUN、IPv6 或远程规则集。配置越复杂,出现问题时需要排查的变量越多。
为什么导入后 PROXY 或 AUTO 组为空?
先检查订阅是否返回 mihomo 或 Clash 兼容格式、proxy-provider 是否下载成功,以及是否误写了 filter 或 exclude-filter。不要把尖括号文字当成正则;先删除筛选项,确认节点出现后再使用真实表达式。
Mihomo 应该用 fake-ip 还是 redir-host?
兼容性优先时先用 redir-host;已经确认 TUN、DNS 劫持和应用兼容性正常,并且需要更稳定结合域名规则处理时,再尝试 fake-ip。出现局域网或企业软件异常时,先切回 redir-host 对比。
为什么配置里的 DoH 地址启动后仍然解析失败?
DoH 域名本身需要先解析。应保留 IP 形式的 default-nameserver,并检查网络是否允许访问配置的 DNS 服务;同时查看 DNS 日志和 proxy-server-nameserver 是否可用。
开启 TUN 后无法访问局域网怎么办?
先关闭 TUN确认节点和系统代理本身正常,再检查 strict-route、DNS 劫持、局域网域名和平台路由。strict-route 可能影响部分虚拟机或局域网应用,异常时可暂时关闭进行对比。
订阅更新后手动修改的配置不见了怎么办?
不要继续直接修改自动生成的订阅文件。把长期修改迁移到客户端支持的覆写或扩展配置中,用 proxy-providers 管理节点、rule-providers 管理远程规则,并保留更新前的可用配置。