16 KiB
16 KiB
title, source, source_date, extracted_date, type, tags, confidence, contested, evidence_boundary
| title | source | source_date | extracted_date | type | tags | confidence | contested | evidence_boundary | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| mihomo 配置编写精要摘编(config.yaml 字段与模板) | MetaCubeX/mihomo Alpha 分支 docs/config.yaml 全量示例 + 官方文档 wiki.metacubex.one(全局配置/通用字段/代理组/路由规则/DNS/代理集合/规则集合) | 2026-08-07 | 2026-08-07 | source-derivative |
|
high | false | 抓取时间 2026-08-07。依据官方 docs/config.yaml(Alpha 分支,100,853 字符,含全部注释)与官方文档各配置章节。字段以官方示例注释为权威;示例中的 server/uuid/password/密钥均为占位符,复制使用时必须替换。部分字段随版本演进(文档已标废弃项见正文),新配置优先采用新写法。文中 YAML 片段为演示模板,未在真实 mihomo 实例上运行验证。 |
来源说明
本文件是 mihomo config.yaml 配置编写的中文结构化精要,按"全局 → 节点 → 代理组 → 规则 → 提供者 → DNS"组织,附最小可用模板与常见坑。概念与架构见同目录《官方文档-架构与核心概念-摘编.md》。
证据分级
- 字段定义:来自官方文档与官方示例注释,可直接作为编写依据。
- 模板示例:按官方示例整理的最小组合,需按实际节点/需求替换占位符。
- 注意事项:含官方文档标注的废弃项与社区常见误区,编写新配置时避免。
1. 全局配置(通用字段)
mixed-port: 7890 # HTTP+SOCKS5 混合入口端口(也可分别用 port/socks-port)
# redir-port / tproxy-port # Linux 透明代理
allow-lan: false # 允许局域网设备使用(true 时可用 bind-address 限定)
mode: rule # rule | global | direct
log-level: info # silent/error/warning/info/debug
ipv6: true
external-controller: 127.0.0.1:9090 # RESTful API;0.0.0.0 则对外
secret: "" # API 访问密钥(Authorization: Bearer)
external-ui: ./ui # Web 面板目录(访问 /ui)
profile:
store-selected: true # 记住 API 上对 select 组的选择
store-fake-ip: true # 持久化 fake-ip 映射
unified-delay: true
tcp-concurrent: true
find-process-mode: strict # always/strict/off(路由器建议 off)
geox-url: # 自定义 geo 数据下载地址(GEOIP/GEOSITE/mmdb/asn)
geoip: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"
mmdb: "https://fastly.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.metadb"
- 认证:
authentication: ["user:pass"]+skip-auth-prefixes(跳过验证的 IP 段);lan-allowed-ips/lan-disallowed-ips控制 allow-lan 时允许/禁止的网段(黑名单优先)。 - hosts:类似 /etc/hosts,支持单 IP 或别名。
- 已废弃:全局
client-fingerprint(改在节点内配置)、组内interface-name/routing-mark(改在节点内配置)。
2. 节点(proxies)
2.1 通用字段
| 字段 | 说明 |
|---|---|
| name | 必须,唯一 |
| type | 必须:ss / vmess / vless / trojan / snell / tuic / hysteria2 / wireguard / direct / dns / reject / compatible(pass) / gost-relay 等 |
| server / port | 服务器地址与端口(必须) |
| udp | 是否允许 UDP 过代理,默认 false(tuic/hysteria2/direct/dns 默认开) |
| ip-version | dual/ipv4/ipv6/ipv4-prefer/ipv6-prefer,默认 dual |
| tfo / mptcp | TCP Fast Open / 多路径 TCP |
| dialer-proxy | 经指定代理/组建立连接(链式代理) |
| interface-name / routing-mark | 绑定网卡 / fwmark(Linux) |
| smux | sing-mux 多路复用:enabled、protocol(smux/yamux/h2mux)、max-connections/min-streams/max-streams(互斥)、padding、brutal-opts(TCP Brutal 上下行 Mbps) |
| client-fingerprint | TLS 指纹:chrome/firefox/safari/ios/random(TLS 传输的 vmess/vless/trojan 等) |
| skip-cert-verify / name-cert-verify | 跳过证书校验 / 仅改 DNSName 校验目标(不改 SNI) |
| sni / servername | 覆盖 SNI(优先级高于 ws host) |
2.2 常用节点写法
proxies:
- name: "ss-1" # Shadowsocks
type: ss
server: example.com
port: 443
cipher: chacha20-ietf-poly1305 # 也支持 aes-*-gcm、2022-blake3-* 等
password: "your-password"
udp: true
# plugin: obfs / v2ray-plugin / shadow-tls / restls / kcptun(plugin-opts 见官方示例)
- name: "vmess-ws" # VMess + WebSocket + TLS
type: vmess
server: example.com
port: 443
uuid: "uuid"
alterId: 0
cipher: auto
tls: true
network: ws
ws-opts:
path: "/path"
headers: { Host: example.com }
- name: "vless-reality" # VLESS + REALITY(推荐自建)
type: vless
server: example.com
port: 443
uuid: "uuid"
network: tcp
tls: true
udp: true
flow: xtls-rprx-vision
servername: www.microsoft.com # REALITY 借用域名
client-fingerprint: chrome # 必填,不能为空
reality-opts:
public-key: xxx
short-id: xxx
# support-x25519mlkem768: false
- name: "trojan-1" # Trojan
type: trojan
server: example.com
port: 443
password: "your-password"
sni: example.com
udp: true
- name: "hy2-1" # Hysteria2(HTTP/3 + QUIC,UDP 默认开)
type: hysteria2
server: example.com
port: 443
password: "your-password"
up: "50 Mbps" # 客户端声明带宽,留空用 BBR 流控
down: "200 Mbps"
# obfs: salamander; obfs-password: xxx
- 其他类型要点:snell 需
psk(可选 obfs-opts: http/tls/shadow-tls/restls/jls);wireguard 需private-key、ip、dns、public-key、mtu;trojan 支持 grpc/ws 传输、reality-opts、shadow-tls/restls/jls-opts(需 tls: true);direct可配 interface-name 作"指定网卡直连"。
3. 代理组(proxy-groups)
proxy-groups:
- name: "PROXY" # 手动选择(select)
type: select
proxies: [DIRECT, auto, 节点名...] # 可引用其他组和内置 DIRECT/REJECT
# use: [provider1] # 引用代理集合
# default-selected: auto # 默认选中项
# filter: "(?i)港|hk|hongkong" # 正则筛选 use 引入的节点
# exclude-filter: "美|日"
# exclude-type: "Shadowsocks|Http"
# empty-fallback: COMPATIBLE # 组为空时的回退 proxy
- name: "auto" # 按延迟自动选择(url-test)
type: url-test
proxies: [...]
url: "https://www.gstatic.com/generate_204"
interval: 300 # 健康检查间隔(秒),0 关闭定时测试
tolerance: 150 # 延迟容差(毫秒)
lazy: true # 未选中时不测试
expected-status: 204 # 期望 HTTP 状态码(支持 200/302、400-503 写法)
- name: "fallback-1" # 按健康检查顺序优先(fallback)
type: fallback
proxies: [...]
url: "https://cp.cloudflare.com/generate_204"
interval: 300
- name: "lb" # 负载均衡
type: load-balance
proxies: [...]
url: "https://cp.cloudflare.com/generate_204"
interval: 300
strategy: round-robin # 可选 consistent-hashing / sticky-sessions
- 健康检查要点:
url只检查proxies字段(不检查use引入的集合节点,集合节点需在 provider 内配置 health-check);lazy: true(默认)避免后台持续测试;timeout毫秒;max-failed-times失败次数超限触发强制检查(默认 5)。 include-all/include-all-proxies/include-all-providers:自动引入全部节点/集合(按名称排序,不包含策略组)。hidden: true/icon: xxx:供面板隐藏组或显示图标(需前端适配)。
4. 规则(rules)
- 匹配顺序:自上而下,第一条命中生效;规则不命中继续向下,最后用
MATCH兜底。 - 常用规则类型:
| 类型 | 说明 |
|---|---|
| DOMAIN / DOMAIN-SUFFIX / DOMAIN-KEYWORD | 完整域名 / 后缀(google.com 匹配 www.google.com 但不匹配 content-google.com)/ 关键字 |
| DOMAIN-WILDCARD / DOMAIN-REGEX | 通配符(* ?)/ 正则 |
| GEOSITE, 分类名 | 匹配 geosite 域名集合(如 GEOSITE,youtube,PROXY) |
| GEOIP, 国家码 | IP 归属国(GEOIP,CN,DIRECT);GEOIP,CN,DIRECT,no-resolve 跳过 DNS 解析 |
| IP-CIDR / IP-CIDR6 / IP-SUFFIX / IP-ASN | IP 段 / IP 段别名 / IP 后缀 / ASN 号 |
| SRC-GEOIP / SRC-IP-ASN / SRC-IP-CIDR / SRC-IP-SUFFIX | 匹配来源 IP |
| DST-PORT / SRC-PORT | 目标/来源端口 |
| IN-PORT / IN-TYPE / IN-USER / IN-NAME | 匹配入站端口 / 类型 / 用户名 / 名称 |
| PROCESS-PATH(-WILDCARD/-REGEX) / PROCESS-NAME(-WILDCARD/-REGEX) | 进程路径/名称匹配(Android 可匹配包名) |
| UID / NETWORK / DSCP | Linux UID / tcp |
| RULE-SET, 名称 | 引用规则集(需 rule-providers) |
| AND / OR / NOT | 逻辑组合,如 AND,((DOMAIN,baidu.com),(NETWORK,UDP)),DIRECT(注意括号) |
| SUB-RULE | 匹配到子规则(SUB-RULE,(NETWORK,tcp),sub-rule-name) |
| MATCH | 匹配一切,兜底 |
rules:
- RULE-SET,reject,REJECT # 广告拦截
- RULE-SET,proxy,PROXY # 代理规则集(由 rule-providers 提供)
- GEOSITE,cn,DIRECT # 国内域名直连
- GEOIP,CN,DIRECT,no-resolve
- MATCH,PROXY
- 附加参数:
no-resolve(目标 IP 类规则跳过 DNS 解析,避免触发解析污染;若前面已解析则仍会匹配)、src(把目标 IP 匹配转为来源 IP 匹配)。
5. 提供者(proxy-providers / rule-providers)
proxy-providers:
airport: # 机场订阅
type: http
url: "https://example.com/sub" # 支持 mihomo/Clash 格式或 v2ray 分享链接
interval: 86400 # 更新间隔(秒)
path: ./providers/airport.yaml # 默认限制在 HomeDir 内(SAFE_PATHS 可扩展)
proxy: DIRECT # 经哪个代理下载订阅(防订阅域名被墙)
health-check:
enable: true
url: "https://www.gstatic.com/generate_204"
interval: 300
override: # 覆写加载的节点
udp: true
# skip-cert-verify: true
# additional-prefix: "[机场] "
# proxy-name: [{pattern: "IPLC-(.*?)倍", target: "iplc x $1"}]
# override-expr: # yq v4 风格表达式(高级)
# - '.name = "[prov] " + .name'
rule-providers:
reject:
type: http
behavior: domain # domain / ipcidr / classical
format: yaml # yaml / text / mrs
url: "https://example.com/reject.yaml"
interval: 86400
path: ./rules/reject.yaml
# type: inline + payload 可内联定义;type: file 读本地文件
- provider 类型:
http(远程)/file(本地)/inline(内联 payload;http/file 解析失败时 payload 可作备用)。 size-limit限制下载大小(字节);header自定义请求头(UA、Authorization);age-secret-key支持 age 加密订阅。- rule-provider
behavior必须与文件内容格式一致:domain(每行一个域名)/ipcidr(每行一个 CIDR)/classical(完整 Clash 规则行)。mrs格式二进制更省内存,mihomo convert-ruleset可转换。 path-in-bundle:从 BundleMRS.7z(meta-rules-dat)按路径加载规则集。
6. DNS 最小推荐配置(fake-ip + 防污染)
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
fake-ip-filter:
- "*.lan"
- "+.local"
- "localhost.ptlogin2.qq.com"
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- tls://8.8.8.8
- tls://1.1.1.1
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
nameserver-policy:
"geosite:cn,private,apple":
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
- 开启
listen: 0.0.0.0:53可给局域网设备提供 DNS。 - 国内域名走 nameserver(精准、快),境外域名经 fallback-filter 判定后走 fallback(可信、防污染)。
- 节点为域名时配置
proxy-server-nameserver(如https://doh.pub/dns-query)避免节点域名解析污染。
7. 最小可用配置模板(客户端,含 TUN)
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: true
external-controller: 127.0.0.1:9090
secret: "your-api-secret"
profile:
store-selected: true
store-fake-ip: true
dns:
enable: true
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
default-nameserver: [223.5.5.5, 119.29.29.29]
nameserver:
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
fallback:
- tls://8.8.8.8
- tls://1.1.1.1
fallback-filter:
geoip: true
geoip-code: CN
tun:
enable: false # Windows/macOS 客户端可开 true;stack: mixed
stack: mixed
dns-hijack: ["0.0.0.0:53"]
auto-route: true
auto-detect-interface: true
proxy-providers: # 或直接写 proxies 节点
airport:
type: http
url: "https://你的订阅地址"
interval: 86400
health-check:
enable: true
url: "https://www.gstatic.com/generate_204"
interval: 300
proxy-groups:
- name: "PROXY"
type: select
proxies: [auto, DIRECT]
use: [airport]
default-selected: auto
- name: "auto"
type: url-test
proxies: [DIRECT]
use: [airport]
url: "https://www.gstatic.com/generate_204"
interval: 300
rule-providers:
reject:
type: http
behavior: domain
url: "https://cdn.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/cnc/ads.yaml" # 示例地址,按实际规则集替换
interval: 86400
path: ./rules/reject.yaml
proxy:
type: http
behavior: domain
url: "https://你的代理规则集地址"
interval: 86400
path: ./rules/proxy.yaml
rules:
- RULE-SET,reject,REJECT
- RULE-SET,proxy,PROXY
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT,no-resolve
- MATCH,PROXY
8. 常见坑(写配置时逐条核对)
- YAML 缩进/引号:节点名、密码含特殊字符(
:#等)必须加引号;组名含特殊符号同理。 - 规则顺序:
MATCH必须放最后;GEOIP,CN,DIRECT 前先放 RULE-SET 代理规则,避免国内 CDN/境外域名误直连或误代理。 - fake-ip 与直连内网:内网/局域网域名(
*.lan、*.local、NAS、路由器管理页)必须进fake-ip-filter,否则 TUN 模式下无法访问。 - 节点域名解析:订阅节点为域名时,务必配置
proxy-server-nameserver,否则可能解析失败或走错 DNS。 - 健康检查与 UDP:url-test/fallback 组只测
proxies里的节点;需要 UDP 的协议(游戏、VoIP)确认节点udp: true且组未disable-udp。 - allow-lan 安全:对外监听时配
authentication或限制lan-allowed-ips,API 别绑 0.0.0.0 且无 secret。 - 路径限制:provider 的 path 默认只能在 HomeDir(启动
-d指定),其他位置需SAFE_PATHS环境变量。 - 已废弃字段:
sniffing/port-whitelist(用sniffer.sniff)、组内interface-name/routing-mark(用节点内)、全局client-fingerprint(用节点内)、fallback-filter.geosite(用 nameserver-policy)。 - 规则集 behavior 必须匹配:domain 规则集配
behavior: domain,写错会加载失败。 - 验证方式:
mihomo -t -f config.yaml测试配置;mihomo -d .指定工作目录;APIGET /configs可查运行状态。