入門教程 閱讀約 17 分鐘

Clash Meta GEOIP 與 GEOSITE 規則怎麼寫?按國家與域名分流步驟(2026)

若您已會寫 DOMAINDOMAIN-SUFFIX,下一步通常是用內建資料檔把「整個國家」或「整包域名分類」一次寫進規則表:GEOIP 對應 IP 所屬國家/地區,GEOSITE 則對應社群維護的域名集合(如 googlecncategory-ads-all 等標籤)。在 MihomoClash Meta 系核心)裡,這兩類規則與 RULE-SET(遠端規則集)共用同一套由上而下、先命中先贏的語意。本文不重複 PROCESS-NAME 按進程分流Sniffer 還原 HTTPS 域名 的完整教學,而是專注在語法、geodata 準備、規則順序與 no-resolve 等可照抄步驟;DNS 地基請併讀 Meta 核心 DNS 防洩漏指南,規則集選型可對照 ACL4SSR 與 Loyalsoldier 規則集對比

Clash 編輯組 Clash Meta · Mihomo · GEOIP · GEOSITE · 分流規則

GEOSITE 與 GEOIP 各自解決什麼?

GEOSITE 規則的輸入是「主機名是否落在某個 GEOSITE 標籤」:核心會拿連線當下能取得的域名(來自 DNS、SNI、Sniffer 等管道),去查載入的 geosite 資料。好處是一次覆蓋成百上千個相關域名,適合「整個 Google/整個廣告聯播網/整批中資站」這類集合式策略。

GEOIP 規則的輸入是「目的 IP 落在哪個國家或地區」:依賴 GeoIP(mmdb) 資料庫。它適合當兜底分桶——例如「所有判定為 CN 的 IP 直連、其餘走代理」——但對跨國 CDN、Anycast、或握手階段尚無可靠 IP 語意的場景,要與域名規則、Sniffer 搭配,否則容易出現「看起來是海外站、實際命中卻像國內 IP」的體感落差。

兩者都不回答「是哪個應用程式發起的連線」——那是 PROCESS-NAME;也不自動讓 HTTPS 變出域名——若日誌長期只有 IP,請回到 Sniffer 教學 與 TUN/DNS 設定。

1準備 geodata:GeoIP 與 GeoSite 檔從哪裡來?

規則要生效,核心必須能讀到對應的二進位資料。常見做法是讓 Mihomo 在啟動或更新時下載/指向本機路徑:GeoIP 多為 .mmdbGeoSite 多為 .dat(或依版本與打包方式略有差異)。圖形客戶端常在「設定目錄」下快取這些檔案;純核心則在設定裡寫明路徑或使用預設目錄。

實務上請確認三件事:(1)檔案確實存在且版本夠新(過舊的 mmdb 會讓國家判斷漂移);(2)容器或路由器環境下,掛載卷沒有把資料目錄指到唯讀錯誤的位置;(3)您手動拼的 GEOSITE,某標籤當前 geosite 檔裡真的存在——拼錯標籤會變成「靜默不命中」,排查時很容易被誤判成規則壞掉。

提醒:分流與代理行為須符合所在地法規與網路使用政策;教學僅供合法合規的網路除錯與自用學習。

2GEOSITE 規則怎麼寫?

典型列式為:GEOSITE,<標籤>,<策略或策略組名>。標籤名稱來自您載入的 geosite 資料,例如常見的 cn(中國大陸站點集合)、googletelegram 等,實際可用集合請以上游發行說明為準,不要憑印象自造名稱。

策略欄位可以是 DIRECTREJECTREJECT-DROP 等內建動作,或您在 proxy-groups 裡定義的英文策略組名(大小寫需一致)。若您從訂閱合併設定,請先確認訂閱方使用的策略組命名習慣,再把自己的 GEOSITE 列接在對應組上,避免「規則寫了卻指向不存在的組」導致載入失敗或落到預設。

# Snippet — GEOSITE examples; policy names must exist in proxy-groups
rules:
  - GEOSITE,cn,DIRECT
  - GEOSITE,google,PROXY
  - GEOSITE,category-ads-all,REJECT

對於HTTPS,若規則引擎在決策時仍拿不到域名,GEOSITE 無從發揮;此時應優先檢查 Sniffer、DNS 與 rules 前段是否有更寬鬆的 IP 規則先命中,而不是急著增刪 GEOSITE 標籤。

3GEOIP 規則怎麼寫?no-resolve 什麼時候加?

典型列式為:GEOIP,<國家碼>,<策略>,例如 GEOIP,CN,DIRECT。國家碼一般採 ISO 3166-1 alpha-2(如 CNUSTW)。當您希望「只有在已經有 IP、且不想為了這條規則觸發多餘解析」時,可加上 no-resolve 修飾(寫法位置依您使用的設定格式與版本慣例為準,匯出完整 YAML 後對照官方文件最保險)。

no-resolve 的精神是:避免規則引擎在只有域名、尚未有確定 IP 時,為了做 GEOIP 匹配而提前發起解析,進而與 FakeIP、分流 DNS 策略打架或造成循環。若您發現開了某條 GEOIP 後 DNS 行為變得難以預測,請把該列與 DNS 教學 對照,一次只改一個變因。

# Snippet — GEOIP examples; add no-resolve per your schema when needed
rules:
  - GEOIP,private,DIRECT,no-resolve
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,PROXY

IP 維度兜底通常直接寫明確的 MATCH 列即可維持可讀性;若您使用訂閱產生的特殊寫法,請以該訂閱與 Mihomo 版本文件為準。

4RULE-SET 與 rule-providers:大表怎麼接進 rules?

社群維護的「分流大包」通常不會把數千行直接塞進主設定,而是放在 rule-providers,再在 rules 裡用 RULE-SET 引用。好處是可獨立設定更新間隔、降本體積,並與 ACL4SSR/Loyalsoldier 這類生態對接。

RULE-SET 時,provider 名稱必須與 rule-providers 區塊的鍵名一致;策略欄位同樣必須是存在的策略組或內建動作。載入失敗時,客戶端日誌通常會提示無法取得遠端規則或格式不符——先修復網路與 URL,再談規則細節。

# Snippet — illustrative rule-providers + RULE-SET
rule-providers:
  my-rules:
    type: http
    behavior: classical
    url: "https://example.com/rules.yaml"
    path: ./rules/my-rules.yaml
    interval: 86400

rules:
  - RULE-SET,my-rules,DIRECT

5規則順序:最常見的「寫對了卻不生效」

Clash 系規則是有序清單:每一條連線從第一行開始往下找,命中即停。因此寬鬆的 GEOIP,CN,DIRECT 若放在很前面,可能會在域名規則還沒機會出場前就把流量分走;反之,過寬的 MATCH 若太早出現,後面的細緻規則永遠是死碼。

實務上可記一個粗骨架:本機與區網直連明確域名/GEOSITE 例外(廣告攔截、特定站走代理或直連)→ IP/GEOIP 兜底MATCH。HTTPS 場景別忘了 Sniffer 與 DNS 是否讓「域名條件」真的存在,否則前段域名規則會長期閒置,流量直接落到後段 IP 規則。

小結:GEOSITE 解決「域名集合」;GEOIP 解決「IP 國別」;RULE-SET 解決「可更新的外部表」。三者都仰賴順序正確資料檔最新

常見坑與排查捷徑

GEOIP 放太前,吃掉細域名

症狀是「我明明寫了某個 DOMAIN-SUFFIX 走代理,結果仍直連」。請先在日誌確認第一條命中規則是哪一行;若顯示為某條 GEOIP,就把細域名/GEOSITE 規則上移到該 GEOIP 之前,或縮窄 GEOIP 的適用條件。

GEOSITE 標籤拼錯或資料版本不符

社群教學裡的標籤名會隨上游改版;複製貼上舊文可能導致規則靜默失效。排查方式是:用最小可重現的單條 GEOSITE 測試,並確認 geosite 檔與文件版本一致。

跨國 CDN 與「IP 國別 ≠ 網站國別」

大型站點常把邊緣節點設在您所在區域,導致 GEOIP 判定與直覺不符。此時應以域名規則為主、GEOIP 為輔,或為該站單獨寫明確策略。

HTTPS 無域名,GEOSITE 永不觸發

請對照 Sniffer 教學 開啟 TLS/QUIC 嗅探並檢查日誌是否出現主機名;否則再多 GEOSITE 也只是紙上談兵。

可照抄的最小骨架(請再合併訂閱與節點區塊)

下列片段僅示範 rules 與 rule-providers 的相對位置,不可單獨作為完整可執行設定;請與您的 proxiesproxy-groupsdnstun 合併。註解使用英文以利部分解析器相容。

# Minimal skeleton — merge with your proxies, proxy-groups, dns, tun
mode: rule
log-level: info

rule-providers:
  example-classical:
    type: http
    behavior: classical
    url: "https://example.com/ruleset.yaml"
    path: ./rules/example.yaml
    interval: 86400

rules:
  - GEOSITE,cn,DIRECT
  - GEOSITE,google,PROXY
  - RULE-SET,example-classical,DIRECT
  - GEOIP,private,DIRECT,no-resolve
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,PROXY

開源資訊與安裝包取得方式

Mihomo 上游以開源方式維護,查閱授權、Issue 或版本變更時適合前往公開程式庫。日常安裝或更新圖形客戶端,建議優先使用 本站 Clash 下載頁,並搭配 設定說明文件;將「取得安裝包」與「閱讀原始碼」分開,可避免誤以為必須自行從 Release 頁拼裝環境。

結語

掌握 GEOIPGEOSITE 並不是記幾個關鍵字而已,而是理解它們各自依賴哪種輸入(域名集合 vs. IP 國別)、以及您的設定是否提供了這些輸入。把 geodata 準備好、規則順序排對、在需要時為 GEOIP 選擇合適的 no-resolve,再與 Sniffer、DNS、PROCESS-NAME 疊加,就能把「按國家/按域名集合」的分流寫得既簡潔又可維護。

相較於在訂閱裡盲目堆疊別人寫好的大包而不讀命中順序,自己理解這一層語意後,遇到「某站走錯出口」時也能快速從日誌反查是第一條規則、資料過舊,還是 HTTPS 根本沒有域名可供匹配。這正是 Clash MetaMihomo 規則模式在長期使用上的優勢。

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

Clash 客戶端 GEOIP/GEOSITE

內建或外掛 Meta(Mihomo)核心的圖形客戶端,可自動維護 GeoIP/GeoSite 資料並視覺化規則命中;撰寫 GEOSITE、GEOIP 與 RULE-SET 時,建議以連線日誌驗證第一條命中規則是否與預期一致。

國家與域名集合

GEOIP/GEOSITE 一次覆蓋大範圍

RULE-SET 可更新

rule-providers 與主設定分離

順序決定命中

寬鬆 GEOIP 不宜壓過細則

安裝包請走本站

下載與開源倉庫資訊分開理解

上下篇導覽

相關閱讀

GEOIP/GEOSITE 分流更精準

從本站下載 Clash,更新 geodata 後用日誌確認規則命中;GEOSITE 管域名集合,GEOIP 管 IP 國別,順序對了才省排查時間。

免費下載客戶端