訂閱自帶的規則覆蓋了大路貨,但總有它照顧不到的:公司內網域名被錯誤代理、某個冷門網站沒走代理、想按程序分流。學會自己寫規則,這些問題五分鐘解決。規則應寫在 Merge 配置裡(為什麼以及怎麼做),本文專講語法。

Clash 自定義規則示例:流媒體走代理、內網直連、廣告攔截
一份典型的自定義規則片段,註釋說明每組的用途

規則的通用格式

型別,匹配值,出口[,附加參數]

出口填分組名(如 PROXY)、DIRECTREJECT從上到下匹配、命中即停——這一條記住了,優先順序問題就全通了。

最常用的規則型別

型別示例說明
DOMAINDOMAIN,ads.example.com,REJECT精確匹配整個域名
DOMAIN-SUFFIXDOMAIN-SUFFIX,netflix.com,PROXY匹配域名及其全部子域,最常用
DOMAIN-KEYWORDDOMAIN-KEYWORD,google,PROXY域名包含關鍵詞即命中,慎用(誤傷面大)
IP-CIDRIP-CIDR,10.0.0.0/8,DIRECT,no-resolve按目標 IP 段匹配
GEOIPGEOIP,CN,DIRECT按 IP 歸屬國家,依賴 Geo 資料庫
PROCESS-NAMEPROCESS-NAME,steam.exe,DIRECT按發起連線的程序分流
MATCHMATCH,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 倉庫裡,多裝置共享一份清單。

驗證規則是否命中

「連線」頁面是標準答案:每條連線都標註了命中的規則和出口。改完規則 → 重新啟用訂閱 → 訪問目標網站 → 連線頁看命中情況,一個迴圈十幾秒。規則沒生效時,先檢查是不是被更靠前的規則截胡了。