GeoIP 與 GeoSite 資料庫更新指南:規則引用、載入確認與回復

區分 IP 分類庫與網域分類庫,整理用戶端更新入口、核心相容性與規則標籤引用,並說明如何從日誌判斷載入失敗及恢復原有分流。

本文速覽

適合已在 v2rayN、v2rayNG 或 v2flyNG 中使用路由規則,但遇到標籤缺失、更新後無法啟動或分流結果改變的使用者。重點是先備份規則與資料檔,再更新 GeoIP、GeoSite,接著透過啟動日誌、命中結果與實際連線逐層確認;若發生異常,可依原始檔案、原有規則與原核心三個層次回復。

先釐清 GeoIP 與 GeoSite 各自比對的內容

GeoIP 與 GeoSite 都是供路由模組讀取的分類資料,但比對對象不同。GeoIP 用於目標 IP 位址,例如規則中的 geoip:privategeoip:cn;GeoSite 用於網域名稱,例如 geosite:cngeosite:category-ads-all。前者無法直接判斷網域屬於哪個分類,後者也不能取代 IP 位址範圍比對。

常見檔名是 geoip.datgeosite.dat。檔案只是分類容器,規則實際引用的是其中的標籤。不同資料來源、建立日期或精簡方案可能包含不同標籤,因此「檔案能下載」不代表「目前規則中的每個標籤都存在」。更新前應記錄實際使用的標籤,而不只是查看檔案日期。

2 個檔案
geoip.dat 與 geosite.dat
3 層檢查
檔案、標籤、規則命中
10808
本文測試使用本機 SOCKS 連接埠
30 秒
重新啟動後的首輪日誌觀察時間
GeoIP 與 GeoSite 的比對對象和使用條件
資料類型 比對對象 規則範例 注意事項
GeoSite 請求中的網域名稱 geosite:cn 標籤必須存在於目前的 geosite.dat,規則順序也會影響結果。
GeoIP 目標 IPv4 或 IPv6 位址 geoip:private 網域是否先解析為 IP,取決於路由的網域解析策略。
明確指定的網域 完整網域、後綴或關鍵字 domain:example.com 不依賴 GeoSite 標籤,適合保留少量重要例外規則。
明確指定的網段 指定的 CIDR 位址範圍 192.168.0.0/16 不依賴 GeoIP 分類,區域網路直連規則通常應放在前面。
網域請求GeoSite 比對解析位址GeoIP 比對選擇出站

這個流程不一定每次都完整發生。以 Xray 路由的 domainStrategy 為例,AsIs 通常會先依原始網域規則處理,不會為了 GeoIP 比對而主動解析網域;IPIfNonMatch 會在網域規則未命中時嘗試解析,接著比對 IP 規則;IPOnDemand 則可能在遇到需要目標 IP 的規則時觸發解析。更新資料庫後若分流結果改變,應一併檢查策略與規則順序。

結論:先確認比對對象,再判斷資料庫是否失效

網域沒有命中 geoip:cn,不一定代表資料檔損壞;在 AsIs 策略下,它可能根本沒有進入目標 IP 分類比對。先查看網域策略與日誌中的目標位址,再決定是否更換資料檔。

更新前先保存三類可回復內容

更新 Geo 資料通常不會改變節點的 VMess、VLESS、TLS 或 REALITY 參數,但可能改變路由標籤的可用性與分類範圍。穩妥的做法不是直接覆蓋,而是先保存目前的規則、資料檔,以及用戶端正在呼叫的核心資訊。如此才能判斷故障來自規則、資料還是核心切換。

在 v2rayN 中,先開啟「設定」→「路由設定」,記錄目前啟用的路由規則集、規則順序與預設出站。接著在主介面查看目前的核心類型;若使用 Xray,常見解壓縮版的資料檔位於對應核心的資源目錄中。不同 v2rayN 7.x 版本的目錄組織可能不同,應以啟動日誌顯示的資源路徑或用戶端實際選用的核心目錄為準,不要只憑相似檔名覆蓋其他核心的資源。

  1. 匯出或複製路由設定:保留目前啟用的規則順序,尤其是區域網路直連、封鎖、指定網域與最終兜底規則。
  2. 複製舊資料檔:將現有的 geoip.datgeosite.dat 放入附有日期的本機備份資料夾,避免與新檔案混在同一路徑。
  3. 記錄核心與用戶端狀態:記下目前使用的 Xray 或 v2fly 核心、更新前是否能正常啟動,以及測試節點是否可連線。
  4. 列出自訂標籤:搜尋路由設定中的 geoip:geosite:,將不常見的標籤另外列出。
  5. 一次只更新一組資源:不要同時更換核心、訂閱、DNS 與 Geo 資料,否則日誌出現異常時難以定位變因。

桌面版可在關閉核心後複製檔案,避免檔案正好處於讀取或替換過程。Android 上的 v2rayNG 與 v2flyNG 通常由應用程式管理資源目錄,不必尋找系統沙盒中的檔案;優先使用應用程式內提供的 Geo 資源更新或匯入入口,並在操作前匯出自訂設定。v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心,兩者對基礎 geoip.datgeosite.dat 規則的支援方向相近,但不能因此假定所有擴充標籤與設定欄位完全一致。

更新入口只負責替換資源,不能證明規則仍然相容

在 v2rayN 中透過「檢查更新」→「Geo files」完成下載後,仍需重新啟動核心並檢查日誌。進度提示結束只代表更新動作完成,不能取代標籤載入與分流命中確認。

檢查規則標籤、順序與核心相容性

Geo 資料最常見的相容性問題不是檔案完全無法讀取,而是某個自訂標籤在新資料中不存在。基礎標籤如 geoip:private 較常見,但地區、服務類別與擴充屬性標籤取決於資料集。若規則來自舊設定或其他資料來源,更新前必須確認新檔案仍提供相同標籤。

規則順序同樣重要。路由通常會依序尋找符合項目,前面的寬泛規則可能覆蓋後面的精確規則。例如先放置涵蓋範圍很大的 GeoSite 分類,再放單獨的網域直連規則,後者可能沒有執行機會。處理重要網域時,可將明確的例外規則放在寬泛分類之前,並保留最終兜底出站。

網域分類規則

輸入
請求網域
標籤
geosite:cn
出站
direct
前提
標籤存在且網域可見

適合先依網域分類處理,再由後續規則接手未命中的請求。

位址分類規則

輸入
目標 IP
標籤
geoip:private
出站
direct
策略
搭配 domainStrategy

區域網路位址應優先直連,避免管理頁面或本機服務走代理出站。

以下是用於理解結構的精簡路由片段。實際匯入 v2rayN 時,出站標籤必須與目前設定中的標籤一致;若用戶端產生的是其他名稱,應使用用戶端現有的值,不要機械式照抄。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["domain:intranet.example"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

其中 domain:intranet.example 是明確的網域規則,不依賴 GeoSite 資料,適合作為重要內部服務的保護規則。若新的 GeoSite 檔案缺少某個業務分類,先將少量重要網域改為明確規則,可以恢復基本使用;之後再決定尋找相容資料或調整分類設計。不要只因缺少一個標籤就一次刪除全部分流。

從啟動日誌確認檔案與標籤是否載入

判斷更新是否成功,第一步是完全停止舊核心並重新啟動,而不是只關閉設定視窗。核心通常會在啟動或首次解析對應標籤時讀取 Geo 資料。若舊程序仍在執行,即使磁碟上的檔案已替換,目前的連線也可能繼續使用舊資源。

在 v2rayN 中可先停止服務,再重新啟動選定的設定,然後開啟日誌視窗觀察最初 30 秒。測試環境若使用本機 SOCKS 連接埠 127.0.0.1:10808,應先確認該入站監聽成功,再檢查 Geo 相關錯誤;因連接埠被佔用導致核心未啟動時,後續分流測試沒有參考價值。10808 只是本文的測試值,實際連接埠以「設定」→「參數設定」中的本機監聽設定為準。

日誌現象與優先處理方向
日誌或現象 可能原因 下一步
找不到 geoip.dat 或 geosite.dat 檔案不在目前核心讀取的資源目錄中,或更新寫入了另一套核心目錄。 根據啟動日誌確認資源路徑,將原檔案恢復到目前核心實際讀取的位置。
list not found 或標籤缺失 規則引用了新資料中不存在的分類標籤。 恢復舊資料,或將規則改為新檔案中存在的標籤後重新啟動。
核心啟動成功但分流相反 規則順序、網域策略或分類內容發生變化。 開啟路由日誌,使用固定測試網域比較實際命中的出站。
本機連接埠沒有監聽 核心在讀取設定或資源時已退出,也可能是連接埠被佔用。 先處理第一個錯誤,不要用瀏覽器存取結果反推 Geo 資料狀態。

不同核心版本的錯誤文字可能略有差異,但判斷順序相同:先找出日誌中的第一個致命錯誤,再看它指向檔案路徑、標籤名稱還是設定欄位。後續出現的連線失敗往往只是核心未成功啟動所造成的連鎖結果。可重點搜尋 geoipgeositeroutingfailed 與具體標籤名稱。

更新完成了,為什麼日誌仍顯示舊規則結果?

先在用戶端停止核心,再確認工作管理員中的舊程序已退出,然後重新啟動設定。只替換檔案而不重新啟動核心,目前程序可能繼續使用已載入的舊資料。

提示找不到某個 GeoSite 標籤時該怎麼辦?

開啟「設定」→「路由設定」,找到日誌中指出的 geosite: 標籤。先恢復舊檔案,確認設定可以啟動,再確認新資料是否提供同名標籤;若沒有,應調整規則,而不是反覆覆蓋檔案。

核心可以啟動,但指定網域仍走錯出站?

將該網域暫時寫成一條明確的 domain: 規則,並放在寬泛分類之前。若明確規則能夠命中,表示連線鏈路正常,接下來應檢查 GeoSite 分類內容與規則順序。

v2rayNG 更新後需要重新匯入訂閱嗎?

通常不需要。Geo 資源與 VMess、VLESS 節點訂閱負責不同內容。先重新啟動目前的設定並查看執行日誌,只有訂閱本身的節點參數變更時才需要更新訂閱。

只測試網頁能否開啟,就能確認分流正確嗎?

不能。網頁可以存取只能證明存在可用的出站。應分別測試預期直連、預期代理與區域網路目標,並配合路由日誌確認三個請求實際使用的出站標籤。

更新異常時依檔案、規則、核心逐層回復

回復的目標是盡快恢復更新前已知的正常狀態,而不是在異常狀態下繼續疊加修改。先停止核心,將新的 geoip.datgeosite.dat 移出資源目錄,再放回備份檔案。重新啟動後,若原有規則恢復正常,問題範圍就已縮小到新資料或標籤相容性。

如果恢復舊資料後仍然異常,再恢復更新前匯出的路由設定,尤其要確認規則順序、domainStrategy 與出站標籤。若資料與規則都恢復後核心仍無法啟動,請檢查更新過程中是否同時切換了 Xray 或 v2fly 核心。用戶端版本、核心版本與資料檔應分別記錄,避免將三個變因合併成一次更新。

恢復連線後,可以建立固定的維護節奏:更新前保存兩個資料檔與路由設定;更新後檢查本機連接埠、第一個日誌錯誤與三個固定測試目標;確認無誤後再刪除臨時備份。Geo 資料不需要因日期變化而頻繁替換,只有規則確實依賴新的位址範圍或網域分類時,更新才有明確效益。

最終判斷:能啟動、能連線、命中正確缺一不可

核心啟動成功只代表資源可讀取,網頁可以開啟只代表某個出站可用。完成維護必須同時滿足:日誌沒有 Geo 載入錯誤、固定測試請求能夠連線,以及直連與代理目標命中預期的出站。

v2rayN 下載