ClashX 規則編寫完全指南:從入門到精通

Article 5 cover image

規則基礎概念

規則是 ClashX 的核心功能,它決定了哪些流量應該透過代理,哪些應該直連。理解並掌握規則編寫,能讓你的代理配置更加智能和高效。

規則的本質是一組匹配條件,當網路請求滿足某個規則時,ClashX 會按照規則指定的策略處理這個請求。

💡
規則的工作原理

當你訪問一個網站時,ClashX 從上到下依次檢查規則列表,一旦找到匹配的規則就立即應用,不再繼續檢查後續規則。因此規則的順序非常重要。

規則的組成部分

每條規則由三個部分組成:

規則型別
如 DOMAIN、IP-CIDR 等
匹配值
要匹配的具體內容
策略名稱
DIRECT、REJECT 或代理組

規則型別詳解

DOMAIN - 完整域名匹配

最精確的匹配方式,只匹配完全相同的域名。

DOMAIN 規則示例

- DOMAIN,www.google.com,🚀 代理
- DOMAIN,api.github.com,🚀 代理
- DOMAIN,www.baidu.com,DIRECT

說明:只有訪問 www.google.com 時才匹配,訪問 mail.google.com 或 google.com 都不會匹配。

DOMAIN-SUFFIX - 域名字尾匹配

最常用的規則型別,匹配指定域名及其所有子域名。

DOMAIN-SUFFIX 規則示例

- DOMAIN-SUFFIX,google.com,🚀 代理
- DOMAIN-SUFFIX,youtube.com,🎬 流媒體
- DOMAIN-SUFFIX,cn,DIRECT

說明:google.com、www.google.com、mail.google.com 都會被匹配。

DOMAIN-KEYWORD - 域名關鍵字匹配

匹配域名中包含指定關鍵字的請求,靈活但可能誤匹配。

DOMAIN-KEYWORD 規則示例

- DOMAIN-KEYWORD,google,🚀 代理
- DOMAIN-KEYWORD,youtube,🎬 流媒體
- DOMAIN-KEYWORD,ads,REJECT

注意:使用時要謹慎,"google" 會匹配 google.com、mygooglesite.com 等所有包含該關鍵字的域名。

IP-CIDR - IP 地址段匹配

基於 IP 地址範圍進行匹配,適用於沒有域名的連線。

IP-CIDR 規則示例

- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,91.108.56.0/22,🚀 代理,no-resolve

no-resolve 參數:跳過 DNS 解析,直接匹配 IP,可提升性能。

GEOIP - 地理位置匹配

根據 IP 地址的地理位置進行匹配。

GEOIP 規則示例

- GEOIP,CN,DIRECT
- GEOIP,US,🇺🇸 美國節點
- GEOIP,JP,🇯🇵 日本節點
規則型別 精確度 性能 推薦場景
DOMAIN 最高 特定域名
DOMAIN-SUFFIX 整站代理
DOMAIN-KEYWORD 批量匹配
IP-CIDR 慢(需解析) 基於 IP 的匹配
GEOIP 地區分流

規則語法深入

基本語法格式

ClashX 規則使用 YAML 格式編寫,必須嚴格遵守縮排規則。

標準規則語法

rules:
  - RULE-TYPE,MATCH-VALUE,POLICY-NAME
  - RULE-TYPE,MATCH-VALUE,POLICY-NAME,OPTIONS

規則引數選項

某些規則型別支援額外的引數來最佳化效能或行為。

  • no-resolve:不進行 DNS 解析,適用於 IP-CIDR 規則
  • src-ip:基於源 IP 地址匹配
  • src-port:基於源埠匹配

特殊規則型別

除了基本規則,ClashX 還支援一些高階規則型別:

高階規則示例

# PROCESS-NAME - 根據程序名匹配
- PROCESS-NAME,Telegram,🚀 代理

# RULE-SET - 引用規則集
- RULE-SET,proxy-list,🚀 代理

# MATCH - 預設策略(必須放在最後)
- MATCH,🚀 節點選擇
⚠️
重要提示

MATCH 規則必須放在規則列表的最後一行,它會匹配所有未被前面規則處理的流量。

編寫最佳實踐

規則順序最佳化

正確的規則順序能顯著提升匹配效率和準確性:

  1. 最前面:REJECT 規則(遮蔽廣告和跟蹤)
  2. 其次:特殊的 DOMAIN 規則(高優先級網站)
  3. 中間:DOMAIN-SUFFIX 和 DOMAIN-KEYWORD 規則
  4. 後面:IP-CIDR 和 GEOIP 規則
  5. 最後:MATCH 預設規則

性能優化技巧

編寫高效能規則的關鍵點:

🚀
性能優化建議

1. 優先使用 DOMAIN-SUFFIX 而不是 DOMAIN-KEYWORD2. IP-CIDR 規則新增 no-resolve 參數3. 使用 RULE-SET 管理大量規則4. 避免過多的正規表示式規則

常見錯誤避免

編寫規則時需要注意的陷阱:

  • 縮排錯誤:YAML 對縮排要求嚴格,使用 2 個空格縮排
  • 規則衝突:確保優先順序高的規則在前面
  • 策略名稱錯誤:確保策略名稱與 proxy-groups 中定義的一致
  • 過度使用 KEYWORD:容易造成誤匹配

規則分類管理

建議按功能對規則進行分類,使用註釋分隔:

規則分類示例

rules:
  # ======= 廣告攔截 =======
  - DOMAIN-SUFFIX,ads.google.com,REJECT
  - DOMAIN-KEYWORD,analytics,REJECT

  # ======= 本地直連 =======
  - DOMAIN-SUFFIX,localhost,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT

  # ======= 流媒體服務 =======
  - DOMAIN-SUFFIX,netflix.com,🎬 流媒體
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒體

  # ======= 國內網站 =======
  - GEOIP,CN,DIRECT

  # ======= 預設策略 =======
  - MATCH,🚀 節點選擇

實戰案例演示

案例 1:完整的分流規則

一個適合日常使用的完整規則配置:

日常使用規則集

rules:
  # 廣告攔截
  - DOMAIN-KEYWORD,adservice,REJECT
  - DOMAIN-SUFFIX,doubleclick.net,REJECT

  # Apple 服務
  - DOMAIN-SUFFIX,apple.com,DIRECT
  - DOMAIN-SUFFIX,icloud.com,DIRECT
  - DOMAIN-SUFFIX,apple-dns.net,DIRECT

  # 流媒體平臺
  - DOMAIN-SUFFIX,netflix.com,🎬 流媒體
  - DOMAIN-SUFFIX,youtube.com,🎬 流媒體
  - DOMAIN-SUFFIX,spotify.com,🎬 流媒體

  # 社交媒體
  - DOMAIN-SUFFIX,twitter.com,🚀 代理
  - DOMAIN-SUFFIX,facebook.com,🚀 代理
  - DOMAIN-SUFFIX,instagram.com,🚀 代理

  # 開發工具
  - DOMAIN-SUFFIX,github.com,🚀 代理
  - DOMAIN-SUFFIX,stackoverflow.com,🚀 代理

  # 中國大陸網站
  - GEOIP,CN,DIRECT

  # 區域網直連
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve

  # 預設策略
  - MATCH,🚀 節點選擇

案例 2:遊戲加速規則

針對遊戲最佳化的規則配置:

遊戲加速規則

rules:
  # Steam
  - DOMAIN-SUFFIX,steampowered.com,🎮 遊戲
  - DOMAIN-SUFFIX,steamcommunity.com,🎮 遊戲

  # Epic Games
  - DOMAIN-SUFFIX,epicgames.com,🎮 遊戲

  # PlayStation
  - DOMAIN-SUFFIX,playstation.com,🎮 遊戲
  - DOMAIN-SUFFIX,playstation.net,🎮 遊戲

  # Xbox
  - DOMAIN-SUFFIX,xbox.com,🎮 遊戲
  - DOMAIN-SUFFIX,xboxlive.com,🎮 遊戲

  # 遊戲 IP 段(示例)
  - IP-CIDR,185.25.182.0/24,🎮 遊戲,no-resolve

  - MATCH,DIRECT

案例 3:隱私保護規則

增強隱私保護的規則配置:

隱私保護規則

rules:
  # 遮蔽廣告跟蹤
  - DOMAIN-KEYWORD,analytics,REJECT
  - DOMAIN-KEYWORD,tracking,REJECT
  - DOMAIN-KEYWORD,telemetry,REJECT

  # 遮蔽常見廣告域名
  - DOMAIN-SUFFIX,googlesyndication.com,REJECT
  - DOMAIN-SUFFIX,googleadservices.com,REJECT
  - DOMAIN-SUFFIX,facebook.net,REJECT

  # 遮蔽資料收集
  - DOMAIN-KEYWORD,crashlytics,REJECT
  - DOMAIN-KEYWORD,bugly,REJECT

  # 正常流量
  - MATCH,🚀 節點選擇

高階規則技巧

使用規則集(Rule Providers)

規則集允許你從外部檔案或 URL 載入規則,便於管理和更新:

規則集配置示例

rule-providers:
  reject:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/reject.txt"
    path: ./ruleset/reject.yaml
    interval: 86400

  proxy:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/proxy.txt"
    path: ./ruleset/proxy.yaml
    interval: 86400

  direct:
    type: http
    behavior: domain
    url: "https://cdn.jsdelivr.net/gh/Loyalsoldier/clash-rules@release/direct.txt"
    path: ./ruleset/direct.yaml
    interval: 86400

rules:
  - RULE-SET,reject,REJECT
  - RULE-SET,proxy,🚀 代理
  - RULE-SET,direct,DIRECT
  - MATCH,🚀 節點選擇

指令碼規則(Script)

使用 JavaScript 編寫自定義匹配邏輯:

💻
指令碼規則能力

指令碼規則提供了最大的靈活性,可以實現復雜的匹配邏輯,如時間段分流、動態節點選擇等高階功能。

除錯和測試規則

如何驗證規則是否正常工作:

檢視日誌
實時檢視規則匹配情況
使用 Dashboard
視覺化檢視連線和規則
測試連接
訪問網站驗證分流

規則維護建議

保持規則高效和更新的方法:

  • 定期審查:每月檢查規則,刪除無用規則
  • 使用版本控制:用 Git 管理配置文件
  • 訂閱社羣規則集:利用社羣維護的規則集
  • 做好備份:保存工作正常的配置版本

規則編寫總結

掌握規則編寫是使用 ClashX 的關鍵技能。從簡單的 DOMAIN-SUFFIX 開始,逐步學習更復雜的規則型別。記住,最好的規則配置是簡潔、高效且符合你實際需求的。不要盲目追求復雜,實用才是王道。