一、GeoIP 與 GeoSite 各管什麼
Clash 的分流規則本身不內建任何地理或站點資料。規則裡的 GEOIP 與 GEOSITE 只是查詢語句,真正回答「這個 IP 屬於哪裡」「這個網域算哪類」的,是內核工作目錄下的資料庫檔案。內核啟動時把檔案載入記憶體,規則命中時才查得到結果。檔案缺失或長期不更新,分流結果就會出現偏差:該直連的走了代理,該代理的落了直連。
GeoIP:依 IP 歸屬地判斷
GeoIP 資料形如「IP 段對應地區代碼」的映射表。規則 GEOIP,CN,DIRECT 命中時,表示目標 IP 落在中國大陸位址段,連線直接放行。若請求目標本身是網域,內核會先做 DNS 解析再查表;在規則末尾加上 no-resolve,可跳過解析,只對目標已經是 IP 的請求生效,避免為了一條規則就把每個網域都解析一次。mihomo 預設使用 geoip.metadb(mmdb 格式);把 geodata-mode 設為 true 後,則改用 v2ray 格式的 geoip.dat。兩種格式二選一,依規則來源決定,不要混用。
GeoSite:依網域類別判斷
GeoSite 資料形如「網域對應類別標籤」的映射表,來自社群維護的 domain-list-community 專案,編譯產物是 geosite.dat。常用類別包括 cn(中國大陸站點)、geolocation-!cn(常見境外站點)、google、github、telegram、private(內網與本機網域)。單一類別往往涵蓋數萬條網域,且隨社群提交持續增補,比逐條手寫 DOMAIN-SUFFIX 規則省事,也更不容易遺漏。
提示
GEOSITE 規則只比對網域,不觸發解析;GEOIP 規則只認 IP。兩者職責互補,實際設定中通常搭配使用:網域先查 GeoSite,查無結果的部分交給 GeoIP 依歸屬地兜底。
二、資料庫檔案與下載來源
mihomo 的 GEO 資料檔案放在內核工作目錄,通常與 config.yaml 同一目錄。常見檔案如下:
| 檔案 | 格式 | 用途 |
|---|---|---|
| geoip.metadb | mmdb | 預設 IP 歸屬庫,未開啟 geodata-mode 時使用 |
| geoip.dat | v2ray geodata | 開啟 geodata-mode 後使用的 IP 歸屬庫 |
| geosite.dat | v2ray geodata | GEOSITE 規則的網域類別庫 |
| country.mmdb | mmdb | 選用,MaxMind 風格的國家/地區庫,可替代 metadb |
| GeoLite2-ASN.mmdb | mmdb | 選用,IP-ASN 規則依自治域分流時使用 |
預設下載來源是 MetaCubeX/meta-rules-dat 儲存庫的 Release,每日構建一次。需要換位址時,在設定裡用 geox-url 指定:
# config.yaml 片段
geox-url:
geoip: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.dat"
geosite: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat"
mmdb: "https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip.metadb"
若直連 GitHub 不穩定,把位址換成可連通的鏡像即可;欄位留空則回退預設位址。記憶體吃緊的環境可另設 geodata-loader: memconservative,降低資料庫常駐記憶體的占用。
三、更新方法:手動與自動
自動更新
geo-auto-update: true
geo-update-interval: 24
geo-auto-update 開啟後,內核會依 geo-update-interval 指定的間隔(單位:小時)自動檢查並下載最新資料庫,下載完成即熱載入,不需重啟。間隔設 24 小時已經足夠:社群儲存庫每日構建一次,本機一天一更就跟得上;間隔設得更短只是重複下載同一份檔案,沒有實際效益。
手動更新
- 從發佈頁下載
geoip.metadb(geodata 模式下為geoip.dat)與geosite.dat,檔名保持原樣。 - 放入內核工作目錄:桌面用戶端通常在各自設定目錄下的內核工作目錄;命令列部署預設為
~/.config/mihomo/,與config.yaml同一目錄。 - 重啟內核讓新資料庫生效;也可以在面板裡點選更新 Geo 資料庫按鈕,或呼叫外部控制器 API 的
PUT /configs/geo,讓內核立即重新下載並載入。
注意
更新失敗最常見的原因是下載來源無法連通。先確認目前網路能否直接打開 geox-url 裡的位址;打不開就換鏡像,或改用手動更新。每次更新後看一下日誌,確認 geosite 與 geoip 的載入條目數正常;若條目數為零或報錯,代表檔案損壞,或檔案格式與 geodata-mode 設定不相符。
四、在 rules 中引用 GEO 資料
規則寫法固定為 GEOSITE,類別,策略 與 GEOIP,地區代碼,策略,後者可選加第四個參數 no-resolve。地區代碼用兩位字母表示,如 CN、US、JP。常用範例:
| 規則範例 | 含義 |
|---|---|
| GEOSITE,private,DIRECT | 內網與本機網域直連 |
| GEOSITE,cn,DIRECT | 中國大陸站點直連 |
| GEOSITE,geolocation-!cn,PROXY | 常見境外站點走代理 |
| GEOSITE,github,PROXY | GitHub 相關網域走代理 |
| GEOIP,CN,DIRECT,no-resolve | 目標已是 IP 且歸屬中國大陸,直連 |
| GEOIP,CN,DIRECT | 網域先解析,歸屬中國大陸則直連 |
比對順序自上而下,命中即停止。網域類規則(GEOSITE、DOMAIN 系)放在前面,GEOIP 放在後面:若 GEOIP 排在前面,會迫使大量網域請求先做 DNS 解析,拖慢首個封包的回應時間,也讓本可避免的解析請求增加。以下是常見的「中國大陸直連、境外代理」收尾寫法:
rules:
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOSITE,geolocation-!cn,PROXY
- IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
- IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
- IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
- GEOIP,CN,DIRECT,no-resolve
- MATCH,PROXY
最後兩條的含義:目標已經是 IP 且歸屬中國大陸的直連,其餘全部走代理。若希望「網域解析後歸屬中國大陸也直連」,把 GEOIP 那條的 no-resolve 拿掉即可,代價是所有未命中前面規則的網域都會被解析一次。
資料量大的類別還可以改用規則集。meta-rules-dat 同時發佈 mrs 格式的規則集檔案,用 rule-providers 依需求引用,載入更快、占用更低:
rule-providers:
geosite-cn:
type: http
behavior: domain
format: mrs
interval: 86400
path: ./ruleset/geosite-cn.mrs
url: "https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/meta/geo/geosite/cn.mrs"
rules:
- RULE-SET,geosite-cn,DIRECT
五、常見問題
GeoIP 與 GeoSite 一定要同時啟用嗎?
不一定。規則裡只寫 GEOIP,就不需要 geosite.dat;用到 GEOSITE 規則才必須備齊 geosite.dat。多數分流方案會兩者搭配:網域請求先查 GeoSite,查無結果的部分再用 GeoIP 依歸屬地兜底。
自動更新間隔設多少合適?
24 小時。社群資料庫每日構建發佈,本機一天一更已經夠新;間隔設得更短只是重複下載同一份檔案,沒有實際效益。
更新後分流結果沒有變化?
依序排查:先重啟內核或重新載入設定;再確認檔案是否放在內核實際讀取的工作目錄,而不是瀏覽器的下載目錄;最後查看啟動日誌中 geosite 與 geoip 的載入條目數,若條目數為零或報錯,代表檔案損壞,或檔案格式與 geodata-mode 設定不相符。
訂閱設定裡沒有 geo 相關欄位,需要補上嗎?
不寫也能用,內核會依預設位址自動下載所需資料庫。若需要固定鏡像位址、調整更新間隔,再於覆寫或全域設定裡補上 geox-url 與 geo-auto-update。
geodata-mode 要不要開啟?
視規則來源而定。只用 GEOIP、GEOSITE 常規寫法時,預設 mmdb 模式即可;若引用的規則集或教學明確要求 geoip.dat,再開啟此模式。開啟後必須確保 geoip.dat 存在,否則 GEOIP 規則無法載入,內核啟動會直接報錯。
六、小結
GeoIP 管 IP,GeoSite 管網域。檔案放對目錄、下載位址可連通、規則順序寫對,分流就會穩定。維持一天一次的自動更新,規則寫法再隨社群資料庫的演進調整即可。用戶端與內核依平台整理在下載中心,基礎設定步驟見使用教學。