Clash 規則如何決定流量走向?
在 Clash/Mihomo 配置檔中,rules: 陣列是分流的大腦:每一條連線進來後,核心會由上而下掃描規則,命中第一條即停止,並把流量導向該條末尾寫明的目標——可以是策略組名稱(如 Proxy、🚀 手動選擇)、特殊動作 DIRECT(直連)、REJECT(拒絕),或另一條規則類型(較少見)。
規則右側的名稱必須與 proxy-groups: 裡某個 name 完全一致(大小寫、emoji 都要對)。若你點選「規則模式」卻發現所有網站都走代理,多半是缺少 GEOIP,CN,DIRECT,或 MATCH 指向了錯誤的組。新手可先閱讀《Clash 完全使用指南》完成訂閱匯入,再回到本文調整規則細節。
rules 裡的匹配條目;② proxy-groups 裡的策略組(selector、url-test 等)。本文「規則」主要指①;談到「選哪個節點」時則指②。
匹配順序:為什麼「寫對了卻不生效」
Mihomo 不會為你「挑最合適的一條」,只認先出現的先贏。因此實務排序原則是:
- 精確、例外類放最前:公司內網網域、廣告攔截、必須直連的銀行網域。
- 區網與本機:私有 IP 段直連,避免 TUN 開啟後 NAS 失聯。
- 地區與類別:
GEOSITE、GEOIP等大範圍規則。 - 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-CIDR或PROCESS-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:依預編譯的域名清單分類(如 cn、google、category-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,訂閱常用於精簡主配置。
192.168.0.0/16、10.0.0.0/8、172.16.0.0/12 的 DIRECT 規則;遊戲場景可參考《Clash 遊戲加速與 TUN 配置》。
MATCH:兜底規則與策略組的關係
MATCH 不帶條件參數,語法固定為:
- MATCH,Proxy
# 或
- MATCH,DIRECT
它匹配所有尚未被前面規則處理的流量,因此必須放在 rules 陣列末尾。訂閱裡常見 MATCH,Proxy 表示「其餘全部走預設代理組」;若你改為 MATCH,DIRECT,則變成「預設直連、僅前面列出的網域走代理」的反向邏輯,適合極少數白名單場景。
MATCH 右側也可以是具名策略組,例如 MATCH,🐟 漏網之魚。該組在 proxy-groups 中可能是 select 或 url-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 Rev、OpenClash 等客戶端中,應使用 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 等版本,匯入訂閱後用連線頁對照本文逐條驗證命中結果,比背誦語法更有效。