Clash Meta 下載站mihomo 用戶端下載

分流規則入門:DOMAIN、GEOIP、RULE-SET 全解析

設定與訂閱 2026 年 7 月 8 日 4 分鐘閱讀
本文目錄

分流規則決定每一條連線的命運:直連、走代理,還是直接拒絕。訂閱通常已經附了一整套規則,但只要你想讓某個網站固定直連、某個服務固定走特定地區,就得自己動手改 rules

規則的語法其實只有一個模式:規則類型,比對內容,出口[,附加參數]。難的不是語法,而是搞清楚哪一條會先被比對到、為什麼你加的那條看起來沒生效。這篇把比對邏輯、常用類型與偵錯方式一次講完。

規則怎麼生效:由上而下,命中即停

核心拿到一條新連線後,會從 rules 的第一行開始往下比對,只要命中就立刻採用該行指定的出口,後面的規則完全不再看。這帶來兩個實務結論:

  • 順序就是優先級。自己新增的規則要放在整份清單靠前的位置,塞在最下面很可能被前面的廣域規則先攔走。
  • 最後一行一定要有 MATCH它是兜底規則,比對前面都沒命中的所有流量。少了它,未命中的連線會沒有明確去向。

出口可以寫代理群組名稱、DIRECT(直連)或 REJECT(拒絕,常用來擋廣告網域)。群組名稱必須和 proxy-groups 裡定義的完全一致,差一個字核心就會報找不到,群組類型的差異見代理群組完整解析

網域類規則:三個兄弟差在哪

規則類型比對方式範例會命中什麼
DOMAIN完全相同DOMAIN,www.example.com,DIRECT只有這個網域本身
DOMAIN-SUFFIX結尾相符DOMAIN-SUFFIX,example.com,PROXY該網域及其所有子網域
DOMAIN-KEYWORD包含關鍵字DOMAIN-KEYWORD,analytics,REJECT網域中任何位置含該字串者

九成情況用 DOMAIN-SUFFIX 就對了,它涵蓋整個網域家族又不會誤傷。DOMAIN-KEYWORD 威力大但也最容易誤判,例如用一個太常見的字串當關鍵字,會連帶把不相干的網站一起攔下來,加之前想一下涵蓋範圍。

IP 類規則與 no-resolve 的意義

IP-CIDR 比對目標 IP 是否落在某個網段,常用來讓區域網路與本機位址直連;GEOIP 則依內建資料庫判斷目標 IP 屬於哪個國家或地區:

  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - GEOIP,TW,DIRECT

關鍵在 no-resolve。IP 類規則需要知道目標 IP,但很多連線一開始只有網域名稱;若不加這個參數,核心為了比對就得先做一次 DNS 解析,等於把解析提前,既拖慢速度也可能造成非預期的解析行為。加上 no-resolve 表示「還不知道 IP 就跳過這條」,讓後面的網域規則有機會先接手。習慣上,放在規則清單前段的 IP 規則都會加上它。

RULE-SET 與 rule-providers:外部規則集

規則多到上千條時,全部塞進設定檔並不實際。rule-providers 讓你把規則集放在外部檔案或網址,設定檔裡只留一行引用,還能定期自動更新:

rule-providers:
  my-direct:
    type: http
    behavior: domain
    format: yaml
    url: "https://example.com/rules/direct.yaml"
    path: ./ruleset/my-direct.yaml
    interval: 86400

rules:
  - RULE-SET,my-direct,DIRECT
  - MATCH,PROXY

behavior 要和規則集內容相符,常見為 domain(純網域清單)、ipcidr(IP 網段)與 classical(可混寫多種規則類型);interval 是更新間隔(秒),86400 就是一天一次;path 是本機快取路徑。type 若改成 file,則直接讀本機檔案,不對外更新。範例中的網址請換成你實際使用的規則集來源。

一段完整的 rules 結構長這樣

rules:
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - DOMAIN-KEYWORD,ads-tracking,REJECT
  - DOMAIN-SUFFIX,gov.tw,DIRECT
  - DOMAIN-SUFFIX,example-media.com,串流影音
  - RULE-SET,my-direct,DIRECT
  - GEOIP,TW,DIRECT
  - MATCH,PROXY

順序的安排是有意的:先處理本機與區域網路,再擋掉不想要的流量,接著是明確指定的網域,然後才是大範圍的規則集與地區判斷,最後用 MATCH 收尾把其餘流量交給代理群組。自己新增規則時,插在對應區塊的開頭最保險。

注意:GEOIP 這類廣域規則要放在具體網域規則之後。放太前面的話,凡是解析到本地 IP 的服務都會被判為直連,你後面針對特定網域寫的規則就永遠輪不到。

怎麼確認規則到底有沒有命中

改完規則不要憑感覺判斷,客戶端提供兩個現成的觀察窗口:

  1. 連線面板:列出目前每一條連線的目標網域、命中的規則與實際使用的節點。想知道某個網站走了哪條路,開著面板再重新整理該網頁,一看就明白。
  2. 日誌頁面:把 log-level 調成 debug,可以看到更詳細的比對與解析過程,排查完記得調回 info,否則日誌會非常吵。

如果連線面板顯示的出口跟你預期不同,八成是前面某條規則先命中了;若是網頁根本連不上、面板卻看不到對應連線,問題通常出在解析階段而不是規則,這時候該檢查的是 DNS,做法見 mihomo DNS 設定詳解。想再確認整份設定檔的結構有沒有寫壞,回頭用 mihomo -t 檢查一次,細節見設定檔入門