當你完成 Clash 的基礎設定後,很快就會遇到這樣的需求:國內網站直連、境外網站走代理、公司內網不走代理、遊戲流量單獨處理、順便把廣告擋掉。這些都不是「開代理」能解決的,而是 Clash 規則引擎的核心能力。本文從規則語法講起,帶你一步步建構屬於自己的分流策略。
規則引擎是如何工作的
Clash 處理每一個網路請求時,會依順序逐條比對 rules 清單中的規則。一旦某條規則命中,就立即執行對應的動作(走某個代理群組、直連或拒絕),不再繼續往下比對。因此規則的排列順序至關重要——越具體的規則應該放在越前面,越寬泛的規則放在越後面。
典型的規則清單結構如下:
rules:
- DOMAIN-SUFFIX,company.internal,DIRECT
- DOMAIN-SUFFIX,google.com,Proxy
- GEOIP,CN,DIRECT
- MATCH,Proxy
最後一條 MATCH 是兜底規則,必須放在清單末尾,否則後面的規則永遠不會被執行。
GEOSITE、PROCESS-NAME、RULE-SET),功能比原版 Clash 更強大。本文範例均基於 Mihomo 核心語法。
常用規則類型詳解
網域類規則
DOMAIN 精確比對完整網域,DOMAIN-SUFFIX 比對網域及其所有子網域,DOMAIN-KEYWORD 比對網域中包含指定關鍵字的請求。三者從精確到模糊,使用場景不同:
DOMAIN,www.google.com,Proxy— 僅比對 www.google.comDOMAIN-SUFFIX,google.com,Proxy— 比對 google.com 及所有子網域(如 mail.google.com)DOMAIN-KEYWORD,google,Proxy— 比對網域中含 google 的所有請求
日常設定中,DOMAIN-SUFFIX 用得最多,既能覆蓋子網域又不會誤比對無關網域。只有在需要精確控制時才用 DOMAIN。
IP 類規則
IP-CIDR 和 IP-CIDR6 依 IP 位址段比對,常用於內網直連或封鎖特定 IP 段。例如:
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
這三條是 RFC 1918 定義的私有位址段,幾乎所有訂閱設定都會包含,確保區域網路裝置互訪不走代理。no-resolve 表示不為此規則觸發 DNS 解析,避免循環查詢。
地理位置規則
GEOIP 根據 IP 歸屬地比對,GEOSITE 根據網域分類資料庫比對。這是實現「國內直連、國外代理」最簡潔的方式:
- GEOSITE,cn,DIRECT
- GEOSITE,google,Proxy
- GEOIP,CN,DIRECT
- GEOIP,LAN,DIRECT
GEOSITE 基於網域分類,比 GEOIP 更準確——例如一個部署在境外的 CDN 節點,GEOIP 可能誤判為境外,而 GEOSITE,cn 能正確識別為國內服務。
程序與連接埠規則
PROCESS-NAME 依發起請求的程式名比對,適合讓特定軟體走指定線路:
- PROCESS-NAME,Telegram.exe,Proxy
- PROCESS-NAME,WeChat.exe,DIRECT
- PROCESS-NAME,steam.exe,Game
DST-PORT 和 SRC-PORT 依目標或來源連接埠比對,較少單獨使用,但在精細控制遊戲 UDP 流量時很有用。
代理群組:規則的目標
規則右側的第三個參數是代理群組名稱或動作。除了 DIRECT(直連)、REJECT(拒絕)和 REJECT-DROP(靜默丟棄)之外,其餘都是你自訂的代理群組。
常見的代理群組類型:
- select — 手動選擇,介面上顯示為下拉清單,最常用
- url-test — 自動測速,選擇延遲最低的節點
- fallback — 依順序嘗試,目前節點不可用時自動切換
- load-balance — 負載平衡,在多個節點間分配流量
- relay — 鏈式代理,流量依次經過多個節點
一個實用的多群組策略範例:
proxy-groups:
- name: Proxy
type: select
proxies: [Auto, HK, JP, US, DIRECT]
- name: Auto
type: url-test
proxies: [HK, JP, US]
url: http://www.gstatic.com/generate_204
interval: 300
- name: AdBlock
type: select
proxies: [REJECT, DIRECT]
Rule-Provider:訂閱第三方規則集
手動維護幾百條規則不切實際。Rule-Provider 允許你從遠端 URL 訂閱規則集,Clash 會定期拉取更新。設定格式如下:
rule-providers:
reject:
type: http
behavior: domain
url: "https://example.com/rules/reject.txt"
path: ./ruleset/reject.yaml
interval: 86400
direct:
type: http
behavior: domain
url: "https://example.com/rules/direct.txt"
path: ./ruleset/direct.yaml
interval: 86400
rules:
- RULE-SET,reject,AdBlock
- RULE-SET,direct,DIRECT
- GEOSITE,cn,DIRECT
- MATCH,Proxy
behavior 可選 domain、ipcidr 或 classical。domain 和 ipcidr 是最佳化過的二進位格式,比對速度更快;classical 相容完整 Clash 規則語法,靈活性最高。
REJECT 導致服務無法使用,或指向惡意節點竊取流量。
廣告攔截實戰
Clash 的廣告攔截原理很簡單:將廣告網域比對到 REJECT 或 REJECT-DROP,請求在本機被丟棄,廣告內容永遠不會載入。相比瀏覽器擴充功能,Clash 在系統層面攔截,能覆蓋所有 App 內的廣告請求。
推薦的廣告攔截規則排列順序:
- 區域網路和內網 IP 直連(避免誤攔本機服務)
- 廣告網域規則集 →
REJECT - 國內網域 →
DIRECT - 國外網域 →
Proxy MATCH兜底
開啟廣告攔截後,部分網站的「反廣告攔截」偵測可能觸發,頁面會提示你關閉廣告攔截器。這是正常現象,可以在規則中為特定網域加入例外:
- DOMAIN-SUFFIX,anti-adblock-example.com,DIRECT
將例外規則放在廣告規則集之前,這樣會優先命中直連而非被拒絕。
實戰:客製你的分流策略
以下是一個適合大多數使用者的完整規則框架,你可以在此基礎上增減:
rules:
# 1. 本地與內網
- GEOIP,LAN,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
# 2. 廣告攔截
- RULE-SET,reject,REJECT
# 3. 自訂直連(公司、銀行、政務)
- DOMAIN-SUFFIX,company.com,DIRECT
- GEOSITE,cn,DIRECT
# 4. 自訂代理(特定服務走特定節點)
- DOMAIN-SUFFIX,openai.com,US
- DOMAIN-SUFFIX,netflix.com,Proxy
# 5. 國內 IP 直連
- GEOIP,CN,DIRECT
# 6. 兜底
- MATCH,Proxy
在 Clash Verge Rev 等客戶端中,你可以透過「設定 → 規則」介面視覺化編輯,也可以直接修改 YAML 檔案。修改後點選「重新載入設定」即可生效,無需重啟客戶端。
規則除錯:確認流量走向
寫完規則後,如何驗證某條流量確實依預期分流?Clash 提供了連線日誌功能。在 Clash Verge Rev 中開啟「連線」面板,可以即時看到每個請求比對的網域、目標 IP、使用的規則和最終走的代理群組。
除錯技巧:
- 先存取目標網站,在連線日誌中找到對應項目
- 查看「規則」欄,確認命中了哪條規則——如果不是預期的規則,說明順序需要調整
- 如果顯示
MATCH,說明前面所有規則都未命中,需要加入更具體的規則 - 修改規則後重新載入設定,重新整理頁面複測
對於批次驗證,可以使用 Clash 的 API 介面查詢規則命中情況。進階使用者還可以透過 LOG-LEVEL 設為 debug,在日誌檔案中看到完整的規則比對過程,但日常使用時建議保持 info 等級,避免日誌檔案膨脹。
規則合併:覆寫 vs 取代
使用訂閱時,你的自訂規則如何與訂閱提供的規則共存?常見有兩種方式:
- 前置規則(prepend-rules) — 你的規則插入到訂閱規則之前,優先順序最高,適合加入直連例外或廣告攔截
- 後置規則(append-rules) — 你的規則追加到訂閱規則之後,適合修改兜底策略
在 Clash Verge Rev 的「設定 → 覆寫」功能中,可以用 YAML 片段追加規則而無需修改完整設定檔。例如只加入廣告攔截和自訂直連:
prepend-rules:
- RULE-SET,reject,REJECT
- DOMAIN-SUFFIX,mycompany.com,DIRECT
這種方式的好處是訂閱更新時不會覆蓋你的自訂規則,是日常維護最推薦的做法。
常見問題排查
規則修改後沒有生效
確認已重新載入設定(不是僅儲存檔案)。部分客戶端有「規則」和「設定」兩個編輯入口,改錯了位置不會生效。檢查 YAML 縮排是否正確——YAML 對縮排極其敏感,少一個空格就會導致整段規則被忽略。
國內網站走了代理
通常是 GEOIP,CN,DIRECT 位置太靠後,被前面的 MATCH,Proxy 搶先比對。將 GEOIP/GEOSITE 規則上移,確保兜底規則在最後。
廣告攔截導致 App 功能異常
某些 App 的統計、推播、更新服務網域與廣告網域在同一規則集裡。為受影響的 App 加入 DOMAIN-SUFFIX 例外,或暫時將廣告規則集從 REJECT 改為 DIRECT 排查具體網域。
總結
Clash 的規則系統是分流代理的靈魂。掌握 DOMAIN-SUFFIX、GEOSITE、GEOIP 三類核心規則,搭配 Rule-Provider 訂閱維護,就能建立一套穩定、個人化的分流策略。廣告攔截只需將廣告網域指向 REJECT,在規則順序正確的前提下即可實現系統級去廣告。
規則設定沒有「一次到位」——隨著使用場景變化,你會不斷微調。建議從訂閱提供的預設規則出發,每次只加入一兩條自訂規則並測試,比一次性重寫全部規則要穩妥得多。