什麼是規則分流?
在傳統的網路代理工具中,我們通常只能選擇「全域代理」或「直連」。然而,現代網路環境極其複雜:訪問 Google 需要代理,訪問 Facebook 需要直連以保證速度,而某些公司內網服務則必須通過特定的私有路徑。這種根據目標地址、IP、進程名等條件自動選擇連接路徑的技術,就是規則分流。
Clash 的核心價值就在於其強大且靈活的規則引擎。通過合理的規則配置,您可以實現「無感」上網:網頁自動選擇最快路徑,下載流量走大頻寬節點,串流媒體流量走特定地區的解鎖節點。
Clash 規則的基本構成與匹配邏輯
在 config.yaml 文件的 rules: 區塊中,每一行都是一條規則。它的基本格式如下:
- 類型,條件,策略[,選項]
例如:- DOMAIN-SUFFIX,google.com,Proxy。這條規則的意思是:如果請求網域的後綴是 google.com,則使用名為 Proxy 的代理組進行處理。
MATCH 規則指定的默認策略。
核心規則類型詳解
要寫好規則,首先要了解 Clash 支援的規則類型。
1. 網域匹配 (Domain Matching)
- DOMAIN: 精確匹配某個網域。例如
DOMAIN,www.google.com,Proxy。 - DOMAIN-SUFFIX: 匹配網域後綴。這是最常用的類型,例如
DOMAIN-SUFFIX,google.com,Proxy可以同時匹配www.google.com和mail.google.com。 - DOMAIN-KEYWORD: 關鍵詞匹配。只要網域中包含該關鍵詞就匹配。例如
DOMAIN-KEYWORD,google,Proxy。
2. IP 匹配 (IP Matching)
- IP-CIDR: 匹配特定的 IP 段。例如
IP-CIDR,192.168.1.0/24,DIRECT。 - GEOIP: 匹配特定國家/地區的 IP。例如
GEOIP,TW,DIRECT會匹配所有已知的台灣 IP。
3. 其他匹配
- SRC-IP-CIDR: 根據請求來源 IP 匹配。常用於區域網路分流,讓不同設備走不同策略。
- PROCESS-NAME: 根據發出請求的進程名匹配(僅部分核心支援)。
- MATCH: 全匹配規則。通常放在最後,作為兜底策略。例如
- MATCH,FinalProxy。
規則匹配順序:誰先誰後很重要
由於「首個匹配即停止」的特性,規則的排放順序直接決定了分流結果。一個典型的錯誤是將 GEOIP,TW,DIRECT 放在了 DOMAIN-SUFFIX,google.com,Proxy 之前嗎?不,那樣沒問題。但如果您把 MATCH,Proxy 放在了第一行,那麼所有流量都會走代理,後面的規則就全部失效了。
推薦的排序邏輯:
- 區域網路/直連黑名單:如
localhost、127.0.0.1。 - 精確網域匹配:處理需要特殊照顧的單個網域。
- 網域後綴匹配:處理大部分國外服務。
- IP 分流(包括 GEOIP):處理那些無法通過網域識別的流量。
- 兜底規則 (MATCH):處理所有漏網之魚。
高級技巧:使用 Rule Providers 實現高效管理
如果您的規則文件長達幾千行,管理起來將是噩夢。Clash.Meta 引進了 rule-providers 概念,允許您引用外部的規則文件(Rule Sets)。
rule-providers:
google:
type: http
behavior: domain
url: "https://raw.githubusercontent.com/.../google.yaml"
path: ./ruleset/google.yaml
interval: 86400
rules:
- RULE-SET,google,Proxy
- GEOIP,TW,DIRECT
- MATCH,Final
使用 Rule Providers 的好處:
- 自動更新:您可以引用社群維護的高質量規則庫(如 LoyalSoldier 的規則集),Clash 會根據
interval自動下載更新。 - 保持配置整潔:您的主配置文件只需要定義幾個大的策略組和引用幾條
RULE-SET,非常易於閱讀。 - 效能更佳:核心會對這些規則集進行專門的索引優化。
DNS 與規則的微妙關係
許多人疑惑:為什麼我寫了 GEOIP,TW,DIRECT,但訪問某些國內網站還是很慢?
這通常涉及到 DNS 解析。在 Fake-IP 模式下,Clash 會立即返回一個偽造的 IP 給瀏覽器,然後在內部并行進行 DNS 解析。如果您 DNS 配置不當,導致解析一個國內網域卻返回了一個國外的 IP 地址,那麼 GEOIP,TW 規則就會失效。
nameserver 中包含可靠的國內 DNS(如 8.8.8.8 或 1.1.1.1 的台灣節點),並正確設置 fallback 邏輯。
常見問題與調試方法
1. 規則匹配了但沒生效?
檢查是否有更靠前的規則已經攔截了該請求。在 Clash 控制面板(如 Yacd 或 MetaCubeX)的「連接」標籤頁中,您可以實時查看到每一條連接的具體匹配過程,這是調試規則的「金鑰匙」。
2. 為什麼需要網域分流而非全靠 IP?
現代大型網路服務(如 CDN)可能在不同國家擁有相同的 IP 段。如果僅靠 IP,可能導致路由不穩定。網域分流在應用層進行判斷,更加精準。
3. 規則衝突怎麼辦?
遵循「越具體越靠前」的原則。例如 DOMAIN,test.google.com,DIRECT 應該放在 DOMAIN-SUFFIX,google.com,Proxy 之前。
實戰案例:一個理想的規則配置模板
下面是一個基於最佳實踐的規則配置片段,兼顧了效能與精準度:
rules:
# 1. 區域網路直連
- DOMAIN-SUFFIX,local,DIRECT
- IP-CIDR,192.168.0.0/16,DIRECT
- IP-CIDR,10.0.0.0/8,DIRECT
- IP-CIDR,172.16.0.0/12,DIRECT
- IP-CIDR,127.0.0.0/8,DIRECT
# 2. 核心服務特殊分流
- DOMAIN-SUFFIX,apple.com,AppleServices # 蘋果服務走特定組
- DOMAIN-SUFFIX,netflix.com,Streaming # 奈飛走解鎖組
# 3. 使用 Rule Sets 管理大部分分流
- RULE-SET,proxy,Proxy
- RULE-SET,gfw,Proxy
# 4. IP 兜底
- GEOIP,TW,DIRECT
# 5. 全域兜底
- MATCH,FinalProxy
通過這種結構,您的網路請求將各司其職:國內流量通過 GEOIP,TW 規則走 DIRECT(直連),確保低延遲;已知被牆的服務通過 RULE-SET 走 Proxy(代理);而所有未知流量則通過 MATCH 走 FinalProxy 以確保連通性。
規則分流並非一勞永逸,隨著網路環境的變化,定期更新規則庫和調整自己的策略組是保持流暢上網體驗的關鍵。
希望這篇指南能幫助您構建出更完美的 Clash 配置。記住,真正的自由來自於對每一個請求的精準掌控。
結語:從手動配置到智慧路由
當您掌握了規則分流的精髓,Clash 就不再僅僅是一個代理工具,而是一個私人的智慧網路調度中心。雖然初期的配置可能需要花費一些精力,但一旦構建完成,它帶來的絲滑體驗是任何傳統 VPN 都無法比擬的。
相比於折騰複雜的 YAML 文件,如果您追求更簡單、更現代的使用體驗,選擇一款核心更新及時、介面友善的用戶端同樣重要。