mihomo 設定檔入門:YAML 結構完整解析
本文目錄
mihomo 的全部行為都寫在一個 YAML 設定檔裡,通常叫 config.yaml。訂閱連結回傳的內容其實就是這樣一份檔案,只是由服務商幫你產生。看懂它的結構,你才有辦法自己加規則、改 DNS,或在出問題時判斷是哪一段寫壞了。
這篇從語法規則講到最小可用範例,讀完你會知道每個頂層欄位負責什麼、節點與規則之間怎麼串起來,以及怎麼在啟動前先把設定檔檢查一遍。內容同樣適用於各家 Clash 系客戶端,因為它們用的都是同一顆核心。
先守住三條 YAML 語法規則
YAML 的可讀性很好,但它用縮排表達層級,所以格式錯誤幾乎都出在看不見的地方:
- 縮排一律用半形空白,不要用 Tab。同一層級的縮排量必須一致,通常用兩個空白。
- 冒號後面要有一個空白:
mode: rule正確,mode:rule會被當成一整串文字。 - 不要有全形符號。從網頁或聊天視窗複製貼上時,最常見的災難就是全形冒號、全形空白與智慧引號,肉眼幾乎看不出來,核心卻直接拒絕載入。
另外,# 之後到行尾是註解,用來暫時停用某一行很方便;清單項目用 - 開頭,後面同樣要空一格。
建議:用支援 YAML 語法標示的編輯器改設定檔,縮排錯位與全形符號通常一眼就能看出來,比啟動失敗後才回頭找有效率得多。
頂層欄位總覽
| 欄位 | 作用 | 常見寫法 |
|---|---|---|
mixed-port | 本機混合代理連接埠,HTTP 與 SOCKS 共用一個 | 設定中可查看,常見為 7890 或 7897 |
allow-lan | 是否允許區域網路其他裝置連進來用這個代理 | true / false |
mode | 執行模式:依規則分流、全域走代理、全部直連 | rule / global / direct |
log-level | 日誌詳細程度,偵錯時調高 | info / warning / debug |
external-controller | 對外的控制 API 位址,圖形客戶端與面板靠它溝通 | 127.0.0.1:9090 |
dns | 內建 DNS 設定,含 fake-ip 等增強模式 | 見 DNS 專文 |
proxies | 節點清單,每個節點一組協議與連線參數 | 清單 |
proxy-groups | 代理群組,把節點組織起來供規則引用與手動切換 | 清單 |
rules | 分流規則,由上而下比對 | 清單 |
訂閱回傳的設定檔往往還有 proxy-providers、rule-providers 等進階欄位,先掌握上表這幾個,讀懂八成內容不成問題。
一份最小可用的設定範例
下面這份可以直接跑起來:核心會在本機開一個混合連接埠,依規則決定直連或走代理。把節點資訊換成你自己的即可。
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
fake-ip-range: 198.18.0.1/16
nameserver:
- 168.95.1.1
- 1.1.1.1
proxies:
- name: "HK-01"
type: ss
server: your-server-host
port: 8388
cipher: aes-256-gcm
password: "your-password"
proxy-groups:
- name: PROXY
type: select
proxies:
- "HK-01"
- DIRECT
rules:
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- GEOIP,TW,DIRECT
- MATCH,PROXY
注意 DIRECT 與 REJECT 是核心內建的兩個特殊出口,分別代表直連與拒絕,不需要在 proxies 裡定義。
proxies、proxy-groups 與 rules 怎麼串起來
三者是一條由下而上的引用鏈,看懂這條鏈,設定檔就不再是一堆散落的欄位:
proxies定義「有哪些節點可用」——伺服器位址、連接埠、協議、密碼。proxy-groups把節點編成群組,決定「同一組裡要用哪一個」,例如手動選、自動測速選最快。rules決定「這條連線該交給誰」——比對到某條規則後,就把流量丟給該規則指定的群組或DIRECT。
所以規則裡寫的名稱必須是群組名或內建出口,寫錯一個字核心就會報找不到對應的 proxy。群組類型的差異見代理群組完整解析,規則寫法見分流規則入門。
啟動前先檢查,錯誤定位就靠它
不要拿正式執行去試錯,用 -t 參數先檢查設定檔,它只驗證不啟動:
mihomo -t -f config.yaml
mihomo -d .
檢查失敗時,訊息通常會指出行號與原因。三種錯誤佔了絕大多數:縮排多了或少了空白,導致某個欄位跑到錯誤的層級;同一層出現重複的鍵,例如兩個 rules;規則引用了不存在的群組名稱。逐項對照修好,再執行一次 -t 直到通過為止。
設定檔看懂之後,接著調什麼
結構掌握了,接下來最有感的兩塊是分流與 DNS:規則決定哪些流量走代理、哪些直連,寫得好可以兼顧速度與可用性;DNS 則影響解析是否正確、會不會外洩,設定要點見 mihomo DNS 設定詳解。手邊還沒有核心或客戶端的話,先到下載中心取得對應版本再動手實驗。