Clash 規則如何決定流量走向?

ClashMihomo 配置檔中,rules: 陣列是分流的大腦:每一條連線進來後,核心會由上而下掃描規則,命中第一條即停止,並把流量導向該條末尾寫明的目標——可以是策略組名稱(如 Proxy🚀 手動選擇)、特殊動作 DIRECT(直連)、REJECT(拒絕),或另一條規則類型(較少見)。

規則右側的名稱必須與 proxy-groups: 裡某個 name 完全一致(大小寫、emoji 都要對)。若你點選「規則模式」卻發現所有網站都走代理,多半是缺少 GEOIP,CN,DIRECT,或 MATCH 指向了錯誤的組。新手可先閱讀《Clash 完全使用指南》完成訂閱匯入,再回到本文調整規則細節。

名詞對照:口語中的「規則組」常混指兩件事——① rules 裡的匹配條目;② proxy-groups 裡的策略組(selector、url-test 等)。本文「規則」主要指①;談到「選哪個節點」時則指②。

匹配順序:為什麼「寫對了卻不生效」

Mihomo 不會為你「挑最合適的一條」,只認先出現的先贏。因此實務排序原則是:

  1. 精確、例外類放最前:公司內網網域、廣告攔截、必須直連的銀行網域。
  2. 區網與本機:私有 IP 段直連,避免 TUN 開啟後 NAS 失聯。
  3. 地區與類別GEOSITEGEOIP 等大範圍規則。
  4. MATCH 兜底:永遠放最後,接住前面未命中的全部流量。

下面是一段典型訂閱規則片段(順序已簡化說明):

rules:
  - DOMAIN-SUFFIX,company.internal,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT
  - GEOSITE,google,Proxy
  - GEOSITE,netflix,Streaming
  - MATCH,Proxy
若把 MATCH,Proxy 插在 GEOIP,CN,DIRECT 之前,大陸 IP 也會先被 MATCH 接走,國內網站可能變慢或無法開啟。修改規則後請在 Clash Verge Rev 的「連線」頁確認命中規則欄位。

DOMAIN 系列:從精確網域到萬用字元

域名類規則在連線仍使用主機名(SNI / Host)時最可靠。常見四種寫法如下。

類型 語法範例 匹配範圍
DOMAIN DOMAIN,www.example.com,Proxy 僅完全相等的主機名
DOMAIN-SUFFIX DOMAIN-SUFFIX,example.com,Proxy 該網域及所有子網域(如 a.example.com)
DOMAIN-KEYWORD DOMAIN-KEYWORD,google,Proxy 主機名包含關鍵字即命中(易誤傷,慎用)
DOMAIN-REGEX DOMAIN-REGEX,^.*\.cdn\.example\.com$,Proxy 正則匹配,靈活但需自行測試效能

實戰建議:

  • 單一子站用 DOMAIN;整站或 CDN 根網域用 DOMAIN-SUFFIX,並注意前綴點:寫 example.com 即可,不必加 .
  • DOMAIN-KEYWORD 會匹配到不相關網域(例如關鍵字 baidu 可能誤傷其他含字串的域名),僅在維護成本極高時使用。
  • 部分 App 使用 IP 直連或自訂 SNI,域名規則可能失效,需搭配 IP-CIDRPROCESS-NAME(桌面端)。
# 常見:讓 Apple 服務與區網設備直連
- DOMAIN-SUFFIX,apple.com,Apple
- DOMAIN-SUFFIX,icloud.com,Apple
- DOMAIN-SUFFIX,localhost,DIRECT

GEOIP、GEOSITE 與 IP 類規則

當連線目標已解析為 IP,或規則引擎需要依 IP 歸屬決策時,使用 IP 與地理資料庫規則。

GEOIP:依 GeoIP 資料庫判斷 IP 所屬國家/地區。

- GEOIP,CN,DIRECT
- GEOIP,US,Proxy

CN 表示中國大陸 IP 段(具體覆蓋範圍隨資料庫版本而變)。港澳台若需單獨策略,需查閱訂閱是否使用更細的代碼或改用 GEOSITE 分類。

GEOSITE:依預編譯的域名清單分類(如 cngooglecategory-ads-all),在域名階段即可分流,常與 GEOIP 搭配。

- GEOSITE,cn,DIRECT
- GEOSITE,gfw,Proxy
- GEOSITE,telegram,Proxy

IP-CIDR / IP-CIDR6:匹配 IPv4/IPv6 網段。

- IP-CIDR,127.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- IP-CIDR6,fc00::/7,DIRECT,no-resolve

尾部的 no-resolve 表示:若連線目標已是 IP,則不要為匹配此規則而觸發額外 DNS 解析,可避免規則階段 DNS 洩漏或循環。區網直連、TUN 模式下幾乎必寫。

其他進階類型(按需查 Mihomo 文件):

  • SRC-IP-CIDR — 依來源 IP 分流(多設備共享閘道時有用)。
  • DST-PORT / SRC-PORT — 依連接埠(如 53 埠 DNS、遊戲埠)。
  • PROCESS-NAME — 依行程名稱(Windows/macOS 桌面端)。
  • RULE-SET — 引用外部規則集 URL,訂閱常用於精簡主配置。
開啟 TUN 後若 NAS 無法存取,優先檢查是否包含 192.168.0.0/1610.0.0.0/8172.16.0.0/12DIRECT 規則;遊戲場景可參考《Clash 遊戲加速與 TUN 配置》。

MATCH:兜底規則與策略組的關係

MATCH 不帶條件參數,語法固定為:

- MATCH,Proxy
# 或
- MATCH,DIRECT

它匹配所有尚未被前面規則處理的流量,因此必須放在 rules 陣列末尾。訂閱裡常見 MATCH,Proxy 表示「其餘全部走預設代理組」;若你改為 MATCH,DIRECT,則變成「預設直連、僅前面列出的網域走代理」的反向邏輯,適合極少數白名單場景。

MATCH 右側也可以是具名策略組,例如 MATCH,🐟 漏網之魚。該組在 proxy-groups 中可能是 selecturl-test,規則只負責「把流量送進這個組」,具體節點由組類型決定。

proxy-groups:
  - name: Proxy
    type: select
    proxies: [HK-01, JP-02, DIRECT]
  - name: Streaming
    type: select
    proxies: [NF-专线, Proxy]

rules:
  - GEOSITE,netflix,Streaming
  - GEOSITE,cn,DIRECT
  - MATCH,Proxy

覆寫實戰:不動訂閱也能追加規則

機場訂閱遠端更新會覆蓋你手改的 rules。在 Clash Verge RevOpenClash 等客戶端中,應使用 Merge/覆寫 追加規則,而不是直接編輯遠端 YAML。

常見覆寫鍵(Mihomo 系):

  • prepend-rules — 插入到訂閱規則之前(適合公司內網、必須直連的例外)。
  • append-rules — 插入到訂閱規則之後、但在內建邏輯合併前需注意是否晚於 MATCH;多數情況更推薦 prepend-rules 處理例外。
  • rules: 在覆寫裡整段替換 — 僅進階使用者,需理解合併順序。
# merge.yaml — 追加在訂閱規則之前
prepend-rules:
  - DOMAIN-SUFFIX,mycompany.corp,DIRECT
  - DOMAIN-SUFFIX,tracker.ads.example,REJECT
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve

在 Verge Rev 中:設定 → 覆寫 → 新建 Merge 檔 → 貼上上述內容 → 在配置檔列表對訂閱啟用該 Merge。詳細圖形化步驟可見《Clash Verge Rev 教學》。

覆寫裡不要再寫一條 MATCH 插在訂閱規則中間,除非你很清楚合併後的完整順序。例外直連用 prepend-rules 通常最安全。

除錯清單與常見錯誤

現象 可能原因 處理方式
國內網站變慢 缺少 GEOIP,CN,DIRECT 或出站為全域 改規則模式;確認 GEOIP/GEOSITE,cn 在 MATCH 之前
規則寫了仍走 DIRECT 前面已有 GEOSITE cn 或更寬的 DIRECT 把自訂代理規則移到更前,或用 prepend-rules
域名規則不命中 App 直連 IP、或 fake-ip 行為 查連線頁實際目標;必要時加 IP-CIDR 或調 DNS 模式
策略組顯示無效 規則末尾名稱與 proxy-groups 不一致 複製訂閱裡現有組名,含 emoji 與空格
TUN 後區網斷線 私有 IP 未 DIRECT 追加三條 RFC1918 的 IP-CIDR,no-resolve

常見問題

規則模式和全域模式有什麼差別?

規則模式依 rules 分流;全域模式忽略規則,全部流量進入你選中的那一個策略組。除非除錯,否則請保持規則模式,並保留 MATCH 兜底。

DOMAIN 與 DOMAIN-SUFFIX 該選哪個?

只針對單一主機名用 DOMAIN;要覆蓋整個站點及其子網域用 DOMAIN-SUFFIX。不確定時在連線頁看實際請求的 Host,再選類型。

能否用規則指定「只走 Trojan 節點」?

規則只能指向策略組,不能直接篩選協定。做法是建立只含 Trojan 節點的 proxy-groups,再在規則裡寫 DOMAIN-SUFFIX,xxx.com,Trojan-Only。多數使用者更推薦按地區 url-test 自動選線。

訂閱更新後自訂規則消失?

說明你把規則寫在遠端配置本體裡了。改為 Merge 的 prepend-rules,更新訂閱時覆寫檔會保留。

相較只能「全開/全關」的封閉加速器,Clash/Mihomo 把 DOMAIN、GEOIP、MATCH 等語法開放給使用者,配合策略組即可實現「國內直連、串流專線、公司內網例外」等精細策略;相較手改系統代理或逐 App 填 SOCKS,透過規則 + TUN 能在桌面與路由器上保持一致行為。若你尚未安裝客戶端,可從站內下載頁取得 Clash Verge Rev、Mihomo Party 等版本,匯入訂閱後用連線頁對照本文逐條驗證命中結果,比背誦語法更有效。

立即免費下載 Clash,開啟流暢上網新體驗 →