為什麼分流規則是 Clash 的靈魂?
多數使用者最初只在乎「能不能連上」,但一旦開始長期使用代理,真正決定體驗的是:哪些流量走直連、哪些走哪一組節點、什麼時候該例外處理。在 Clash 及其衍生核心(例如廣泛採用的 Mihomo/Meta 路線)之下,這一切都寫在設定檔的 rules 區段,搭配 proxy-groups 與 rule-providers 一起運作。
本文聚焦三類最常見、也最容易混淆的主題:以網域為主的 DOMAIN 家族、以國家/地區判別的 GEOIP,以及可模組化維護的 RULE-SET(規則集)。讀完後,你應能判讀機場附帶的範本、自行補強個人規則,並在命中不如預期時知道從哪裡下手除錯。
適用範圍:文內關鍵字以主流 Mihomo/Clash Meta 相容寫法為主;不同圖形介面的按鈕名稱或有差異,但規則語意相通。若你的用戶端仍停留在極舊核心,少數關鍵字或欄位名稱可能略有出入,請以該版本說明為準。
規則怎麼比對:由上而下、先命中先贏
無論你使用 DOMAIN、GEOIP 還是 RULE-SET,都必須先建立一個觀念:規則清單是按照由上而下的順序逐條檢查,一旦某一條規則成立,就採用該條所指向的策略,不會再繼續往下看(例外情形僅限於實作細節中另行定義的特殊項,日常使用者可先忽略)。因此,寬鬆的規則若放在太前面,會「吃掉」後面更精細的設定,這也是多數「我明明寫了例外卻不生效」的根源。
實務上建議的粗階順序思維如下:先放置必須直連或必須走特定節點的明確網域/網段,再處理地區型判斷(GEOIP),最後才用 MATCH 或同等「兜底」規則把剩餘流量交給預設策略組。若你大量使用 RULE-SET,也要把「個人常改的小規則」放在規則集展開後仍能優先生效的位置——換句話說,規則集不是魔法,它只是把大量條目插入某個位置,位置仍然決定優先權。
DOMAIN 家族:從完整主機名稱到關鍵字
DOMAIN 通常用於匹配完整的主機名稱(例如某個固定的 FQDN)。它的優點是精準;缺點是網站稍一改子網域,你可能就要再加一條。當目標服務是一整個註冊域下的多個子網域時,DOMAIN-SUFFIX 更省事:只要主機名稱的尾段與_suffix相符,就能命中,例如針對常見公開 API 或整站大量子域的 CDN 場景。
DOMAIN-KEYWORD 則是「只要主機名稱裡出現某段文字就算」。它很適合快速封裝一批特徵明顯的功能變數名稱片段,但如果關鍵字太短,可能誤傷不相關網域;因此更建議在理解服務命名規律後再使用,並在旁邊準備幾條優先的否定路徑(例如用更具體的 DOMAIN 規則插在前段)以避免副作用。
與 DOMAIN 常一起出現的還有 IP-CIDR 與 IP-CIDR6:當 DNS 已解析出目標 IP,或流量本身屬於無主機名稱的純 IP 連線時,就會改以網段比對。若你需要根據「來源 IP」(例如內網某個裝置)分流,可查找核心文件中的 SRC-IP-CIDR 是否可用。整體而言,DOMAIN 類規則處理的是「這個名字像不像」,IP 類規則處理的是「這個位址落在哪一塊網段」。
# Illustrative only — policy names follow your proxy-groups
rules:
- DOMAIN-SUFFIX,githubusercontent.com,Proxy
- DOMAIN-KEYWORD,google,Proxy
- IP-CIDR,192.168.0.0/16,DIRECT
GEOIP:用地區資料庫決定走向
GEOIP 代表的並不是「某一個網域是否像國外站」,而是:在核心已取得目標 IP 的前提下,向內建的 MaxMind 風格 GeoIP 資料庫(常見檔名如 Country.mmdb)查詢該 IP 所屬國家/地區,並依你填的 ISO 代碼決定策略。典型寫法會出現 GEOIP,CN,DIRECT 這類句子,意思是:若目標 IP 被判斷為中國大陸境內,就走直連。
使用 GEOIP 時請留意三件事。第一,資料庫必須存在且路徑正確,否則規則可能整段失效或退回預設行為(依版本與設定而異)。第二,網站實際託管地與業務國籍未必一致:例如某些全球站台的邊緣節點可能位於鄰近區域,GEOIP 結果不一定符合你對「這算不算國內站」的直覺,這時就要回頭用 DOMAIN 或規則集補齊。第三,若你同時使用 fake-ip 等 DNS 進階模式,請理解解析路徑與規則命中的互動,避免誤以為 GEOIP 判錯,其實是 DNS 與規則搭配尚未對齊。
對臺灣、香港、澳門使用者而言,機場範本常內建多條地區性 DOMAIN 或清單分流,GEOIP 則多作為粗略分流骨架。當你發現「同一個網站有時直連、有時走代理」的情況,可優先檢查是否同時存在多個出口或解析結果變動,而非急著刪除整段 GEOIP。
RULE-SET 與 rule-providers:把大型清單模組化
當社群或專案方提供可下載的規則集(通常為 YAML 片段或可轉為內部表示式的文字),你不必把上千行手動貼進單一檔案,而是透過 rule-providers 定義來源、格式、更新週期,再在 rules 裡以 RULE-SET 方式引用。這種作法讓「底座骨架」維持簡潔,大型清單獨立更新,也能降低合併衝突與貼錯縮排的機率。
實務設定時,請為每個規則集取清楚易懂的 name,並對遠端來源設定合理的 interval(更新間隔)。過於頻繁的更新可能徒增流量與不穩定;過長則可能錯過對方清單的修正。若你同時訂閱多個來源,建議定期檢視規則彼此是否重複或矛盾,特別是 DOMAIN-KEYWORD 類的寬泛條目。
# rule-providers sketch — names and URLs are examples only
rule-providers:
my-rules:
type: http
behavior: classical
url: "https://example.com/rules.yaml"
path: ./ruleset/my-rules.yaml
interval: 86400
rules:
- RULE-SET,my-rules,Proxy
此外,不同 behavior(例如以網域為主、以 IP 為主、或 classical)會影響規則集內部的解析方式;若你從別人範本複製來卻發現行為怪異,第一件事應核對規則集行為型態是否與內容設計相符,第二件事才是調整 rules 順序。
DNS、規則與策略組:三位一體的思維
實務上,分流是「DNS 如何給出位址」與「規則如何選擇節點」以及「策略組裡實際用哪個代理」三者的組合。僅精通 DOMAIN 寫法卻忽略 DNS,可能出現在日誌裡看到規則命中正確、但網頁仍打開錯誤站點的情況。建議新手至少記住兩點:第一,弄清楚你的設定檔中 dns 區段是否啟用、是否使用 enhanced-mode、以及是否與 TUN 或系統代理一併使用;第二,變更規則後若遇到異常,優先用單一變因方式測試(先關閉額外插件、只保留一條規則差異),不要同時改 DNS、規則與核心版本。
常見範本背後的邏輯:不是偷懶,是經驗縮寫
許多訂閱產生的設定檔會內建「中國大陸網域規則集+GEOIP,CN+MATCH」這類組合。它的設計哲學通常為:能用清單明確指認的網域就先清掉,剩下的 IP 再用地區判斷;最後才用兜底把其他流量交給 Proxy。你在自訂時也可沿用這個骨架,只在最上方插入與你工作相關的內網或公司網域、線上銀行或政務站台的直連條款等個人化項目。
若你的需求是「只要臉書、影音串流走代理,其它一律直連」,則未必需要龐大的 GEOIP 反查;相對地,若你希望最小化特徵流量外洩,則可能更依賴規則集與細緻的 DOMAIN 維護。**沒有一組規則適合所有人**,重點是理解命中順序與資料來源後,再決定要不要背負更複雜的策略。
命中不如預期時:建議的排查順序
- 確認目前啟用的設定檔是否真是你編輯的那一份;圖形介面常有「訂閱產生檔」與「本機覆寫」分開存放。
- 重載或重啟用戶端,避免舊規則仍留在記憶體。
- 檢視RULE-SET 是否成功下載、檔案時間是否更新;必要時改為較短的更新間隔測試。
- 用日誌或儀表板觀察實際命中的規則名稱,對照清單順序思考為何是它。
- 若懷疑 DNS 假 IP 與 GEOIP 打架,嘗試在可控環境切換解析模式或暫時加入更明確的 DOMAIN 規則,縮小問題邊界。
安全與合法性:本文僅從技術角度說明設定檔結構。請在所在地法令與契約範圍內使用網路與代理服務;來路不明的規則集可能含錯誤乃至惡意條目,請從可信專案取得並自行審閱更新內容。
延伸思考:進階使用者還會關心什麼?
當你相信已熟悉 DOMAIN、GEOIP、RULE-SET 之後,下一步常是把個人規則版本化:例如在私有 Git 儲存庫維護小段片段,透過同步工具覆寫到本機;或是將常用清單拆成多個 rule-providers,在機場更新訂閱時降低手動合併成本。若你願意投入時間,甚至能依裝置或場景切換多份設定檔——前提是:你已完成本文所述的基礎心法,才能避免在多檔之間複製出互相矛盾的規則順序。
為什麼談分流規則時,仍值得回到一站式 Clash 體驗?
不少人試過僅能切換「全域/規則」兩段式開關、或介面把規則藏在二進位設定裡難以閱讀的工具,最後不是改不動,就是每次訂閱更新就覆寫掉自訂片段。也有一部分腳本型方案只顧節點連線測試,卻不提供清楚的命中鏈路與規則集更新狀態,結果問題出在 DNS 還是規則順序仍得靠自己猜。
若你希望把 DOMAIN、GEOIP、RULE-SET 的觀念落在看得見、改得動、跟得上核心演進的介面裡,可以改採仍持續整合 Mihomo/Meta 能力、並為中文情境整理過操作流程的 Clash 官方用戶端:訂閱匯入、節點與策略組、規則與遠端規則集多在同一視窗內完成對應,遇到異常時也較容易沿著「設定檔 → 規則順序 → 規則集更新紀錄」逐步縮小範圍,而不是在檔案總管與第三方編輯器之間來回跳。
你可以先從沿用機場提供的主設定檔開始,只在最上方加入少數個人規則並觀察命中;確認邏輯無誤後,再逐步導入網路上可信度高的規則集,讓長期維護的成本維持在可管理的範圍。