Files
my_wiki/raw/技术/mihomo/官方文档-配置编写-摘编.md
T

16 KiB
Raw Blame History

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
mihomo
Clash
config.yaml
代理配置
YAML
high false 抓取时间 2026-08-07。依据官方 docs/config.yamlAlpha 分支,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 API0.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 过代理,默认 falsetuic/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 绑定网卡 / fwmarkLinux
smux sing-mux 多路复用:enabled、protocol(smux/yamux/h2mux)、max-connections/min-streams/max-streams(互斥)、padding、brutal-optsTCP Brutal 上下行 Mbps
client-fingerprint TLS 指纹:chrome/firefox/safari/ios/randomTLS 传输的 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 / kcptunplugin-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"                     # Hysteria2HTTP/3 + QUICUDP 默认开)
    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-keyipdnspublic-keymtutrojan 支持 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(内联 payloadhttp/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.7zmeta-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 客户端可开 truestack: 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. 常见坑(写配置时逐条核对)

  1. YAML 缩进/引号:节点名、密码含特殊字符(: # 等)必须加引号;组名含特殊符号同理。
  2. 规则顺序MATCH 必须放最后;GEOIP,CN,DIRECT 前先放 RULE-SET 代理规则,避免国内 CDN/境外域名误直连或误代理。
  3. fake-ip 与直连内网:内网/局域网域名(*.lan*.local、NAS、路由器管理页)必须进 fake-ip-filter,否则 TUN 模式下无法访问。
  4. 节点域名解析:订阅节点为域名时,务必配置 proxy-server-nameserver,否则可能解析失败或走错 DNS。
  5. 健康检查与 UDPurl-test/fallback 组只测 proxies 里的节点;需要 UDP 的协议(游戏、VoIP)确认节点 udp: true 且组未 disable-udp
  6. allow-lan 安全:对外监听时配 authentication 或限制 lan-allowed-ipsAPI 别绑 0.0.0.0 且无 secret。
  7. 路径限制provider 的 path 默认只能在 HomeDir(启动 -d 指定),其他位置需 SAFE_PATHS 环境变量。
  8. 已废弃字段sniffing/port-whitelist(用 sniffer.sniff)、组内 interface-name/routing-mark(用节点内)、全局 client-fingerprint(用节点内)、fallback-filter.geosite(用 nameserver-policy)。
  9. 规则集 behavior 必须匹配domain 规则集配 behavior: domain,写错会加载失败。
  10. 验证方式mihomo -t -f config.yaml 测试配置;mihomo -d . 指定工作目录;API GET /configs 可查运行状态。