路由分流 預計閱讀 12 分鐘

GeoIP 與 GeoSite 資料庫如何更新:檔案位置、載入機制與規則引用

說明 geoip.dat 與 geosite.dat 的用途和存放路徑,示範如何在 v2rayN 與 v2rayNG 更新資料庫,並介紹資料過期造成分流失準的常見症狀與驗證方法。

V2Ray 與 Xray 的路由規則可以依網域、目標 IP、連接埠、網路類型和入站標籤比對流量。其中,geosite.dat 提供網域分類,geoip.dat 提供 IP 網段分類。規則中的 geosite:cngeoip:cn 並非線上查詢指令,而是讓核心讀取本機資料檔中的指定分類。

本文速覽

本文適合已在 v2rayN 或 v2rayNG 啟用路由分流,但遇到中國大陸網站誤走代理、網域分類載入失敗或更新後規則未生效的使用者。內容涵蓋兩個資料檔的職責、桌面端與 Android 端的更新路徑、核心重新載入條件、設定引用方式,以及透過日誌和對照請求驗證結果的步驟。

GeoIP 與 GeoSite分別解決哪些問題

geosite.dat 儲存網域集合。一個分類可以包含完整網域、網域後綴、關鍵字或正規表示式,實際結構取決於資料產生規則。例如,geosite:cn 通常用於比對面向中國大陸網路環境的網域集合,geosite:category-ads-all 則用於引用廣告網域分類。它處理的是請求目標中的網域,不等同於 DNS 回傳位址所屬的地區。

geoip.dat 儲存 CIDR 網段集合。geoip:cn 會將目標 IP 與對應國家或地區的網段比對,geoip:private 則用於比對迴路、區域網路和其他私有位址範圍。它只在路由階段使用,不負責修改 DNS 結果,也不會取代訂閱節點資訊。

geosite.dat

比對對象
網域
規則欄位
domain
常用引用
geosite:cn
更新影響
網域分類邊界

適合在 DNS 解析前依請求網域決定直連、代理或封鎖出站。

geoip.dat

比對對象
目標 IP
規則欄位
ip
常用引用
geoip:cn
更新影響
網段歸屬範圍

適合處理直接存取 IP、網域解析後的 IP 比對,以及放行私有網段。

網域規則是否繼續解析 IP,也會受到 domainStrategy 影響。設定為 AsIs 時,路由主要使用連線中已有的網域或 IP;設定為 IPIfNonMatch 時,只有網域規則未命中後才會解析並嘗試 IP 規則;設定為 IPOnDemand 時,只要規則評估可能需要 IP,核心就可能觸發解析。更新資料檔無法修正錯誤的策略組合,因此排查時應同時檢查檔案版本、規則順序與網域策略。

  • 已知網域:優先使用 geosite 分類判斷,避免只根據解析位址推測服務歸屬。
  • 直接存取 IP:只能由 geoip、特定 CIDR 或其他 IP 條件比對。
  • 同一請求命中多條規則:路由會從上到下評估,通常由第一條完整命中的規則決定出站。
  • 分類名稱不存在:核心會在日誌中回報資源或標籤載入錯誤,不會自動使用相近分類。

資料檔位置與核心載入機制

可攜版 v2rayN 的程式目錄通常同時包含介面程式、設定資料和一個或多個核心子目錄。以 v2rayN 7.12.7 搭配 Xray 核心為例,常見位置是 v2rayN\bin\Xray\geoip.datv2rayN\bin\Xray\geosite.dat。如果使用的是 v2fly 核心,資源檔應位於該核心實際讀取的目錄,而不是直接複製到 Xray 目錄。

不同安裝方式、架構套件和版本可能調整目錄層級,因此檔案搜尋結果只能作為線索。更可靠的方法是先在 v2rayN 的「設定」→「參數設定」中確認目前的核心類型,再從核心日誌查看啟動路徑。日誌中的可執行檔目錄與資源載入錯誤,能指出目前程序實際使用哪一份資料。

環境 常見存放方式 更新後的必要動作 驗證入口
v2rayN 可攜版 + Xray bin\Xray\geoip.dat
bin\Xray\geosite.dat
停止並重新啟動核心 「資訊」或核心日誌視窗
v2rayN 其他核心目錄 跟隨目前核心可執行檔所在目錄 切換核心後再次確認檔案來源 「設定」→「參數設定」
v2rayNG 由應用程式管理的內部資源目錄 更新完成後重新啟動目前設定 主介面右上角選單與日誌
v2flyNG 由應用程式和 v2fly 核心管理 依用戶端更新結果重新載入服務 應用程式日誌與路由測試
2 個
核心地理資料檔
7.12.7
桌面端操作路徑參考版本
10808
常見本機 SOCKS 連接埠
10809
常見本機 HTTP 連接埠

核心通常會在啟動或重新載入設定時讀取地理資料。直接覆蓋正在使用的檔案,不代表現有程序會立即採用新內容;部分情況下,舊檔案控制代碼仍由程序持有。更新完成後應停止目前核心,再重新啟動設定。僅關閉系統代理開關通常不等於重新啟動核心,判斷依據應是日誌中出現新的啟動時間和設定載入記錄。

在 v2rayN 中更新 geoip.dat 與 geosite.dat

v2rayN 的選單文字會隨版本調整,但 7.x 的操作邏輯基本一致:由用戶端執行 Geo 資料更新,將檔案寫入對應核心目錄,然後重新啟動核心。更新前先確認目前節點可以正常連線,因為資料取得失敗與路由規則本身無關,無法靠反覆修改規則解決。

  1. 啟動 v2rayN,在主視窗確認已選取可用設定,並記錄目前的核心類型。
  2. 開啟「設定」→「參數設定」,檢查本機監聽連接埠與核心選項。常見預設值為 SOCKS 10808、HTTP 10809,實際設定以本機介面為準。
  3. 返回主介面,開啟「檢查更新」選單,選擇「更新 Geo 檔案」或目前版本中名稱相近的 Geo 資料更新項目。
  4. 等待狀態列或日誌顯示兩個資料檔都已處理完成。若只完成其中一個,不要直接視為更新成功。
  5. 執行「重新啟動服務」;如果看不到該入口,可先停止服務,再重新啟動目前設定。
  6. 開啟核心日誌,確認沒有 failed to load geoipfailed to load geosite 或分類不存在等錯誤。

更新過程中若顯示連線逾時,先檢查訂閱更新和一般網頁請求是否也失敗。兩者都失敗時,應優先處理目前節點、系統時間或本機代理連接埠問題。只有 Geo 資料更新失敗時,則應檢查更新功能使用的網路路徑、目標目錄寫入權限,以及安全軟體是否暫時鎖定正在執行的檔案。

v2rayN\
├─ v2rayN.exe
└─ bin\
   └─ Xray\
      ├─ xray.exe
      ├─ geoip.dat
      └─ geosite.dat

手動替換檔案時,應先完全退出核心程序,保留舊檔案副本,再將兩個檔案放入同一個核心的資源目錄。不要只依據檔名覆蓋搜尋到的第一份結果。替換後重新執行並檢查日誌;如果啟動後立即報錯,先還原舊檔案,再判斷新檔案是否符合目前核心支援的資料格式或分類規範。

在 v2rayNG 中更新並重新載入資料

v2rayNG 使用 Xray 核心,Geo 資料通常由應用程式放入內部資源目錄。一般使用者不需要尋找 Android 檔案系統中的實際路徑,也不應將桌面端目錄結構直接套用到行動端。以 v2rayNG 1.10.x 介面為例,可從主介面右上角選單尋找「更新 Geo 檔案」;具體文字可能隨建置版本略有不同。

  1. 先選取一個可連線的設定,點選啟動按鈕,確認即時測試能取得延遲結果。
  2. 開啟右上角選單,選擇「更新 Geo 檔案」,讓應用程式保持在前景直到顯示完成。
  3. 停止目前的 VPN 服務,再重新啟動所選設定,讓 Xray 重新讀取資源檔與路由設定。
  4. 進入「設定」→「路由設定」,確認目前啟用的規則確實包含 geositegeoip 引用。
  5. 開啟日誌,分別造訪一個預期直連的網域和一個預期代理的網域,對照目標、規則與出站標籤。

訂閱更新與 Geo 資料更新是兩個獨立流程。訂閱負責伺服器位址、連接埠、使用者識別碼、傳輸方式等節點資訊;Geo 更新負責路由分類。更新訂閱不代表地理資料庫已更新,更新地理資料庫也不會改變 VMess 或 VLESS 節點參數。

點選更新後一直顯示逾時怎麼辦?

先啟動一個可用設定並確認一般網頁可以載入,再返回右上角選單重試。若日誌顯示 DNS 逾時,請檢查「設定」→「DNS 設定」中的伺服器位址與目前網路的可達性。

顯示更新成功,中國大陸網站仍然走代理?

停止並重新啟動服務,然後檢查「設定」→「路由設定」中的規則啟用狀態與順序。位於頂部的全比對代理規則會先攔截流量,使後面的 geosite:cn 無法執行。

更新後所有設定都無法啟動?

開啟日誌查看是否出現 Geo 資源載入錯誤。若錯誤明確指向資料檔,可使用用戶端提供的更新入口重新取得;同時確認應用程式儲存空間充足,再重新啟動目前設定。

v2flyNG 可以直接使用相同的操作路徑嗎?

不能假定選單和內部目錄完全一致。v2flyNG 使用 v2fly 核心,應在其自身設定與更新入口中處理資源,並透過應用程式日誌確認分類是否由目前核心載入。

行動網路和 Wi-Fi 可能使用不同的 DNS、不同的 IPv6 路徑。測試時最好固定一種網路環境,並分別記錄更新前後的日誌。若 Wi-Fi 下比對正確、行動網路下失準,問題可能來自 DNS 回傳差異、IPv6 規則缺漏或私人 DNS 設定,而不是 Geo 檔案本身。

規則中如何引用 geosite 與 geoip

地理資料檔只有在被路由規則引用時才會參與比對。下面的結構先阻擋廣告分類,再放行私有位址與中國大陸網段,接著讓中國大陸網域直連。未命中的流量交由後面的代理規則或預設出站處理。實際設定中的出站標籤必須與用戶端產生的標籤一致,不能直接套用範例名稱。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private", "geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}
接收目標 讀取規則 查詢分類 首條命中 選擇出站

規則順序比分類數量更重要。若第一條規則已使用 network: tcp,udp 比對所有連線並送往代理,後面的中國大陸直連規則就不會再取得比對機會。廣告阻擋一般放在普通直連規則之前,私有網段放行應置於前方,兜底代理規則則放在末尾。

geosite:cngeoip:cn 不能互相取代。某個國際服務可能在中國大陸部署節點,其網域分類仍會依服務屬性整理,而解析位址可能落入 geoip:cn。如果設定使用 IPIfNonMatch,網域分類先命中時就不會繼續依賴 IP 歸屬;這正是必須明確規劃規則意圖的原因。

  • 需要直連區域網路裝置時,請將 geoip:private 放在兜底代理之前。
  • 需要依特定網域覆蓋分類時,請將精確網域規則放在寬泛的 geosite 規則之前。
  • 需要處理 IPv6 時,確認目前的 geoip 資料和自訂 CIDR 規則包含對應的位址族。
  • 修改自訂規則後先重新啟動核心,再透過日誌驗證,不要只看網頁是否剛好能開啟。

如何區分資料過期、規則衝突與載入失敗

資料過期最常見的表現,是少量新網域、新網段或近期調整基礎設施的服務出現分流異常,而大量舊規則仍能正常運作。規則衝突通常具有穩定性:只要存取同一目標,就始終被前面的寬泛規則攔截。載入失敗則更直接,核心啟動日誌會出現檔案遺失、無法讀取或標籤不存在等資訊。

現象 優先懷疑 檢查方法 處理動作
只有近期新增網域誤走代理 GeoSite 資料過舊 用精確網域臨時規則進行對照 更新資料並重新啟動核心
大量中國大陸網域全部走代理 規則順序或規則未啟用 檢查兜底規則是否位於頂部 調整順序並重新載入設定
網域規則正常,直接存取 IP 失準 GeoIP 資料或 IP 規則缺漏 記錄目標 IP 與命中的出站 更新 GeoIP 或補充 CIDR
核心啟動後立即停止 檔案損毀、路徑錯誤或分類不存在 查看第一筆資源載入錯誤 還原可用檔案並核對分類名稱
更新完成但行為完全沒有變化 核心未重新啟動或更新了錯誤目錄 核對日誌啟動時間和核心路徑 停止程序後從正確目錄啟動

驗證時應至少選擇四類目標:區域網路位址、已知中國大陸網域、預期代理網域、直接 IP 請求。先排除瀏覽器連線重用的影響,再逐一建立新連線。v2rayN 可同時觀察核心日誌與本機連接埠連線,v2rayNG 則可在日誌頁面查看目標位址和出站結果。單次延遲高低不能證明路由命中,因為網路壅塞也會改變回應時間。

  1. 記錄目前核心類型、資料檔修改時間和路由模式。
  2. 重新啟動核心,確認日誌中沒有 Geo 資源載入錯誤。
  3. 測試 127.0.0.1 或區域網路目標,確認私有位址直連。
  4. 測試一個穩定的中國大陸網域,確認命中直連出站。
  5. 測試一個明確設定為代理的網域,確認流量進入代理出站。
  6. 將臨時精確規則放到最前方重新測試,藉此區分分類資料問題與規則順序問題。

如果精確網域規則能修正分流,而對應的 geosite 分類仍未命中,才有理由繼續檢查 GeoSite 內容或版本。如果精確規則也未生效,應先檢查用戶端是否使用了另一套路由模式、訂閱產生的設定是否覆蓋自訂項目,以及修改後是否確實重新啟動核心。

更新頻率與維護界線

Geo 資料沒有適用於所有環境的固定更新週期。日常使用中,每月檢查一次通常足以涵蓋一般網段和網域變化;遇到新服務分流異常、電信業者位址調整或日誌提示分類缺漏時,可以立即更新。頻繁更新本身不會改善錯誤的規則順序,也不會提升節點線路品質。

團隊或多裝置環境應記錄用戶端版本、核心類型、更新時間和規則版本。桌面端與 Android 端可以採用相同的規則意圖,但不應假定兩者載入的是同一份實體檔案。v2rayN、v2rayNG 與 v2flyNG 的核心、資源目錄和更新入口各自獨立,驗證結果也應分別保存。

  • 更新前保留目前可正常運作的規則設定,方便失敗時回復。
  • 更新後必須重新啟動核心,並核對新的啟動日誌。
  • 同時測試網域與 IP,避免只驗證 GeoSite 或只驗證 GeoIP。
  • 訂閱變更、DNS 變更和 Geo 資料變更應分開記錄。
  • 規則異常先檢查順序和啟用狀態,再判斷資料是否過期。

穩定的維護流程不是反覆替換檔案,而是確認核心路徑、透過用戶端入口更新、重新載入程序、檢查日誌,再用固定測試目標驗證。只有將檔案版本、載入過程和規則命中三部分串聯起來,才能判斷分流變化究竟來自資料庫、設定還是網路環境。

下載 v2rayN 前往用戶端安裝包頁面