配置文档

想让我更听话?文档都在这

我的全部行为都由一份 config.yaml 决定。
这页把配置文件的每个部分讲清楚,示例可以直接复制去改。

配置文件总览

我的配置文件是一份 YAML 文本,默认名为 config.yaml。使用订阅时服务商已经帮你写好了,通常不需要手动编辑;想自定义分流或 DNS 行为时,才需要了解它的结构。一份配置从上到下主要分四块:

config.yaml 的骨架
# 1. Basic settings: ports, mode, log level
mixed-port: 7890
mode: rule

# 2. Proxy nodes: where traffic can go
proxies: [...]

# 3. Proxy groups: how to pick a node
proxy-groups: [...]

# 4. Rules: which traffic goes where
rules: [...]

记住一句话就够了:proxies 定义"有哪些路",proxy-groups 定义"怎么选路",rules 定义"谁走哪条路"。

代理节点 proxies

每个节点是一个列表项,type 决定协议,不同协议的字段略有差异。我支持 Shadowsocks、VMess、VLESS、Trojan、WireGuard 等主流协议,下面是两种最常见的写法:

proxies 示例
proxies:
  - name: "香港 01"
    type: ss
    server: hk01.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "your-password"

  - name: "东京 02"
    type: vmess
    server: jp02.example.com
    port: 443
    uuid: 23ad6b10-8d1a-40f7-8ad0-e3e35cd38297
    alterId: 0
    cipher: auto
    tls: true

用订阅的话这一段完全不用管,节点列表会随订阅自动更新。

策略组 proxy-groups

策略组把节点打包成"一个可选项",规则里引用的是组名而不是具体节点。四种常用类型:

类型行为适合场景
select手动选择,你点谁就走谁日常主力,自己掌控
url-test定时测速,自动选最快节点懒人首选,一劳永逸
fallback按顺序检测,头一个可用的顶上主备线路,故障秒切
load-balance把请求分摊到多个节点高并发下载、多开
proxy-groups 示例
proxy-groups:
  - name: "节点选择"
    type: select
    proxies: [自动选择, 香港 01, 东京 02]

  - name: "自动选择"
    type: url-test
    proxies: [香港 01, 东京 02]
    url: "http://www.gstatic.com/generate_204"
    interval: 300

interval: 300 表示每 300 秒重新测速一次;测速地址用 gstatic 的 204 页面最稳妥。

分流规则 rules

规则从上到下逐条匹配,第一条命中即生效,所以越精确的规则要放越前面,最后用 MATCH 兜底。每条规则的格式是「类型,匹配内容,出口」:

规则类型含义示例
DOMAIN完整域名精确匹配DOMAIN,www.google.com,节点选择
DOMAIN-SUFFIX匹配域名及其所有子域名DOMAIN-SUFFIX,youtube.com,节点选择
DOMAIN-KEYWORD域名包含关键词即命中DOMAIN-KEYWORD,github,节点选择
IP-CIDR目标 IP 落在网段内IP-CIDR,8.8.8.8/32,节点选择
GEOIP按 IP 归属国家匹配GEOIP,CN,DIRECT
MATCH兜底,匹配所有剩余流量MATCH,节点选择

出口除了策略组名,还有两个内置值:DIRECT(直连不走代理)和 REJECT(直接拒绝,常用来拦广告)。

一段典型的规则
rules:
  # Ads: reject outright
  - DOMAIN-KEYWORD,adservice,REJECT
  # Overseas services: via proxy group
  - DOMAIN-SUFFIX,youtube.com,节点选择
  - DOMAIN-SUFFIX,github.com,节点选择
  # Domestic traffic: direct connection
  - DOMAIN-SUFFIX,cn,DIRECT
  - GEOIP,CN,DIRECT
  # Everything else: via proxy group
  - MATCH,节点选择

DNS 配置

DNS 决定"域名如何变成 IP"。配置不当会遇到解析污染或规则误判,推荐直接使用下面这份久经考验的写法:

dns 推荐配置
dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5        # AliDNS
    - 119.29.29.29     # DNSPod
  fallback:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query

要点:fake-ip 模式响应快、兼容性好;nameserver 负责国内域名解析,fallback 用加密 DNS 兜底海外域名,防污染。

端口与常用设置

字段说明推荐值
mixed-portHTTP 和 SOCKS5 共用的混合端口7890
mode代理模式:rule / global / directrule
allow-lan允许局域网设备通过我上网false(按需开)
log-level日志级别,排查问题时调高info
external-controller控制面板 API 地址127.0.0.1:9090

allow-lan 打开后,同一 Wi-Fi 下的手机、电视只要把代理指到「电脑 IP:7890」,就能借用我上网,不用每台设备单独装。

完整示例

把上面所有片段拼起来,就是一份能直接跑的最小配置。替换其中的节点信息即可使用:

config.yaml 完整最小示例
mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver: [223.5.5.5, 119.29.29.29]
  fallback: [https://1.1.1.1/dns-query]

proxies:
  - name: "香港 01"
    type: ss
    server: hk01.example.com
    port: 8388
    cipher: aes-256-gcm
    password: "your-password"

proxy-groups:
  - name: "节点选择"
    type: select
    proxies: [香港 01]

rules:
  - DOMAIN-KEYWORD,adservice,REJECT
  - GEOIP,CN,DIRECT
  - MATCH,节点选择
改完不生效? 桌面端在「配置」页点击重载按钮;Linux 命令行则执行 systemctl restart mihomo。YAML 对缩进敏感,报错时先检查是不是混用了 Tab 和空格。