訂閱自帶的規則覆蓋了大路貨,但總有它照顧不到的:公司內網域名被錯誤代理、某個冷門網站沒走代理、想按程序分流。學會自己寫規則,這些問題五分鐘解決。規則應寫在 Merge 配置裡(為什麼以及怎麼做),本文專講語法。
規則的通用格式
型別,匹配值,出口[,附加參數]
出口填分組名(如 PROXY)、DIRECT 或 REJECT。從上到下匹配、命中即停——這一條記住了,優先順序問題就全通了。
最常用的規則型別
| 型別 | 示例 | 說明 |
|---|---|---|
DOMAIN | DOMAIN,ads.example.com,REJECT | 精確匹配整個域名 |
DOMAIN-SUFFIX | DOMAIN-SUFFIX,netflix.com,PROXY | 匹配域名及其全部子域,最常用 |
DOMAIN-KEYWORD | DOMAIN-KEYWORD,google,PROXY | 域名包含關鍵詞即命中,慎用(誤傷面大) |
IP-CIDR | IP-CIDR,10.0.0.0/8,DIRECT,no-resolve | 按目標 IP 段匹配 |
GEOIP | GEOIP,CN,DIRECT | 按 IP 歸屬國家,依賴 Geo 資料庫 |
PROCESS-NAME | PROCESS-NAME,steam.exe,DIRECT | 按發起連線的程序分流 |
MATCH | MATCH,PROXY | 兜底,永遠放最後一條 |
IP 類規則記得加 no-resolve:否則純域名請求會為了匹配這條規則先做一次 DNS 解析,拖慢速度還可能造成洩漏。
三個拿來即用的例子
公司內網強制直連
prepend-rules:
- DOMAIN-SUFFIX,corp.example.com,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
輕量去廣告
prepend-rules:
- GEOSITE,category-ads-all,REJECT
比裝瀏覽器外掛更徹底——App 內廣告也能攔一部分。誤殺時把具體域名 DOMAIN 直連放它前面。
下載工具不走代理省流量
prepend-rules:
- PROCESS-NAME,qbittorrent.exe,DIRECT
- PROCESS-NAME,Thunder.exe,DIRECT
RULE-SET:規則多了怎麼管
規則上百條後,全堆在 Merge 裡難以維護。Mihomo 支援把規則放進獨立檔案按需引用:
rule-providers:
my-direct:
type: http
behavior: domain
url: "https://example.com/my-direct.yaml"
interval: 86400
prepend-rules:
- RULE-SET,my-direct,DIRECT
規則檔案可以放在自己的 GitHub 倉庫裡,多裝置共享一份清單。
驗證規則是否命中
「連線」頁面是標準答案:每條連線都標註了命中的規則和出口。改完規則 → 重新啟用訂閱 → 訪問目標網站 → 連線頁看命中情況,一個迴圈十幾秒。規則沒生效時,先檢查是不是被更靠前的規則截胡了。