設定檔

想讓我更聽話?文件都在這

我的全部行為都由一份 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,TW,DIRECT
MATCH最後防線,匹配所有剩餘流量MATCH,節點選擇

出口除了策略組名,還有兩個內建值:DIRECT(直連不走代理)和 REJECT(直接拒絕,常用來攔廣告)。

一段典型的規則
rules:
  # Ads: reject outright
  - DOMAIN-KEYWORD,adservice,REJECT
  # Streaming/gaming services: via proxy group
  - DOMAIN-SUFFIX,youtube.com,節點選擇
  - DOMAIN-SUFFIX,github.com,節點選擇
  # Local sites: direct connection
  - DOMAIN-SUFFIX,tw,DIRECT
  - GEOIP,TW,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:
    - 1.1.1.1          # Cloudflare
    - 8.8.8.8          # Google
  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: [1.1.1.1, 8.8.8.8]
  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,TW,DIRECT
  - MATCH,節點選擇
改完不生效? 桌面端在「配置」頁點選過載按鈕;Linux 命令列則執行 systemctl restart mihomo。YAML 對縮排敏感,報錯時先檢查是不是混用了 Tab 和空格。