GeoIP 與 GeoSite 資料庫更新指南:讓 V2Ray 路由分流更精準

說明 geoip.dat 與 geosite.dat 在路由規則中的作用,並示範如何在 v2rayN 與 v2rayNG 檢查版本及更新資料檔案。

本文速覽

本文適合已能正常使用 v2rayN 或 v2rayNG,卻發現中國大陸網站繞經代理、網域分流失效,或規則標籤無法識別的使用者。內容涵蓋兩類 Geo 資料的比對邏輯、桌面版與 Android 版的更新步驟、版本檢查方法、規則驗證指令及故障處理;完成操作後,即可判斷問題來自資料檔案、規則順序或 DNS 解析,無須反覆更換節點。

GeoIP 與 GeoSite 分別解決哪些問題

V2Ray 與 Xray 的路由模組需要先識別連線目標,再決定交由直連、代理或阻斷出站。若目標是 IP 位址,可透過 GeoIP 資料集合判斷其所屬網路範圍;若目標仍保留網域名稱,則可透過 GeoSite 資料集合判斷網站類別。這兩個檔案都不是客戶端程式本身,也不會改變 VMess、VLESS 等協定參數,只為路由比對提供資料。

geoip.dat 儲存依地區或用途整理的 IP 網段。常見規則寫法包括 geoip:cngeoip:private:前者通常用於比對中國大陸 IP,後者則用於比對區域網路、迴路位址等保留網段。資料庫過舊時,新分配的位址範圍可能無法命中原有集合,結果便會落到最後一條備援規則。

geosite.dat 儲存依類別整理的網域集合。常見標籤包括 geosite:cngeosite:geolocation-!cn,以及部分資料來源提供的分類標籤。它比對的是網域,而不是網頁內容。某個網站更換網域、增加靜態資源網域或調整服務入口後,舊資料可能只命中主網域,卻遺漏圖片、API 或登入網域。

產生請求擷取目標Geo 比對選擇出站備援規則
資料檔案 主要比對對象 典型規則 常見用途
geoip.dat IPv4、IPv6 網段 geoip:private 區域網路位址直連
geoip.dat 地區 IP 集合 geoip:cn 中國大陸位址直連
geosite.dat 網域與網域後綴 geosite:cn 中國大陸網域直連
geosite.dat 境外網域集合 geosite:geolocation-!cn 交由代理出站

更新前先記錄版本、路徑與現有規則

不要在連線異常時直接覆蓋所有檔案。先記錄客戶端版本、核心類型、目前的出站標籤與自訂路由規則,才能在更新後判斷變化來自哪一項。本文介面路徑以 v2rayN 7.x、v2rayNG 1.10.x 與 Xray 核心為操作基準,小版本可能調整選單文字,但檢查順序不變。

桌面版還要確認目前實際使用的核心目錄。v2rayN 可在「設定」→「參數設定」→「核心設定」中查看已選取的核心;不同安裝方式下,Geo 檔案可能位於程式資料目錄或對應核心目錄。不要只根據搜尋結果覆蓋第一個同名檔案,應先從執行記錄確認核心啟動路徑。

2 個
核心 Geo 資料檔案
10808
常見本機代理連接埠
3 層
網域、IP、備援檢查
1 次
更新後重新啟動核心

桌面版檢查項目

客戶端
v2rayN 7.x
選單
設定 → 參數設定
核心
Xray 或 v2fly
記錄
查看核心啟動路徑

先確認實際核心目錄,再執行內建 Geo 檔案更新。

Android 版檢查項目

客戶端
v2rayNG 1.10.x
核心
Xray
入口
設定 → Geo 資源檔案
操作
下載並重新啟動服務

使用應用程式內的更新入口,不要透過檔案管理員覆蓋內部資料。

在 v2rayN 中更新 Geo 資料檔案

v2rayN 的內建更新入口會依目前版本下載對應資料,並替換核心讀取的檔案;優先使用此入口,比手動判斷目錄更可靠。開始前先停止目前的代理服務,避免核心程序仍占用舊檔案。若正在使用 TUN 模式,也應先關閉 TUN,再執行更新。

  1. 開啟 v2rayN 主視窗,在狀態列確認目前核心已停止執行。
  2. 進入「檢查更新」選單,選擇「更新 Geo 檔案」或名稱相近的 Geo 資料更新項目。部分 7.x 版本會將此入口放在更新子選單內。
  3. 等待介面顯示下載與替換完成。進度尚未結束前,不要退出客戶端。
  4. 開啟「設定」→「參數設定」→「核心設定」,再次確認目前選取的核心與剛才更新的目標一致。
  5. 啟動原有節點,再開啟記錄視窗,確認沒有出現找不到 geoip.dat、找不到 geosite.dat 或規則標籤不存在等錯誤。
  6. 重新啟用系統代理或 TUN 模式,分別使用一個中國大陸網域與一個需要代理的網域驗證出站結果。

若內建更新提示檔案被占用,先退出 v2rayN,再在工作管理員中確認對應核心程序已結束,然後重新開啟客戶端執行一次。若提示寫入失敗,應檢查程式目錄是否具有目前帳戶的寫入權限。不要長期以系統管理員模式執行來掩蓋目錄權限問題;更穩妥的做法是將程式資料放在帳戶可寫入的位置。

手動替換只適用於已取得可信資料檔案,且明確知道目前核心讀取位置的情況。操作時必須停止核心,將兩份舊檔案重新命名保存,再把新的 geoip.datgeosite.dat 一起放入同一個資料目錄。只替換其中一個檔案,可能造成標籤涵蓋範圍不一致,增加排查時的變數。

在 v2rayNG 中檢查並更新 Geo 資源

v2rayNG 使用 Xray 核心處理路由,Geo 檔案由應用程式管理。Android 系統通常不會將應用程式內部資料目錄作為一般檔案目錄開放,因此應從 v2rayNG 的設定頁面更新,而不是將桌面版檔案複製到下載目錄後等待客戶端自動識別。

操作前先點選主畫面的停止按鈕,確認狀態列中的代理服務已結束。若啟用了「繞過區域網路」或自訂路由,也要記錄目前選項,因為更新資源不會自動修正規則順序。

  1. 開啟 v2rayNG,停止目前的連線。
  2. 進入右上角選單,依序開啟「設定」→「Geo 資源檔案」。不同小版本可能顯示為「Geo 檔案」或「更新 Geo 資料」。
  3. 分別執行 GeoIP 與 GeoSite 更新,等待兩項都顯示完成。網路較慢時,請讓應用程式保持在前景,避免系統中斷工作。
  4. 返回設定頁,進入「路由設定」,檢查預先定義的規則與自訂規則是否仍處於啟用狀態。
  5. 回到主畫面重新啟動節點,再查看執行記錄,確認資源載入與路由初始化沒有報錯。
  6. 切換一次飛航模式後恢復網路,再進行網域與 IP 測試,以排除舊連線與 DNS 快取的影響。
更新後的現象 優先檢查位置 處理方式
服務無法啟動 執行記錄中的第一個錯誤 檢查檔案下載是否完整,並重新執行兩項更新
中國大陸網域仍經由代理 路由規則順序 將明確的直連規則放在最終代理規則之前
網域規則未命中 DNS 與 domainStrategy 確認路由階段是否仍保留網域名稱
部分應用程式沒有變化 應用程式連線快取 結束目標應用程式程序後重新建立連線

規則順序決定更新後的實際效果

Geo 資料只是提供可供比對的集合,最終出站仍由路由規則依序從上到下決定。更具體的區域網路、指定網域與指定 IP 規則應放在前面,範圍較大的地區集合放在後面,最後再設定代理或直連備援。若第一條規則已比對全部 0.0.0.0/0,後面的 GeoIP 規則便不會取得處理機會。

以下片段展示一種常見順序:私有位址先直連,中國大陸網域與 IP 再直連,境外網域交由代理。設定中的 directproxy 必須與實際出站標籤一致,不能直接照抄標籤名稱而忽略客戶端產生的設定。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["geosite:geolocation-!cn"],
        "outboundTag": "proxy"
      }
    ]
  }
}

IPIfNonMatch 表示網域規則未命中時,再解析 IP 並嘗試套用 IP 規則。它適合同時使用 GeoSite 與 GeoIP 的設定,但會增加一次解析程序。若設為 AsIs,核心不會為了 IP 路由主動解析網域;此時依賴 geoip:cn 的規則,可能無法處理仍以網域形式存在的目標。

如何確認核心已載入新資料

僅憑「更新成功」提示,不足以證明路由已採用新資料。驗證應分為檔案載入、規則命中與實際出站三個層次。第一層查看啟動記錄,第二層檢查規則順序,第三層比較目標連線經由直連還是代理。分開檢查三個層次,才能避免將 DNS 快取、節點延遲或瀏覽器重複使用連線誤認為 Geo 檔案失效。

  1. 重新啟動核心後立即查看記錄,搜尋 geoipgeositefailedrouting 等關鍵字。
  2. 造訪一個路由規則明確指定直連的中國大陸網域,記錄中的目標網域、目標 IP 與出站標籤。
  3. 再造訪一個由 geosite:geolocation-!cn 處理的網域,確認記錄顯示代理出站。
  4. 直接連線至一個已知 IP,檢查 GeoIP 規則是否參與比對。此步驟應與網域測試分開執行。
  5. 若使用本機 HTTP 或 SOCKS 入口,確認應用程式連線的連接埠與客戶端顯示值一致,例如常見組合中的 10808;不要使用舊連接埠測試新設定。
記錄資訊 含義 下一步
資源檔案無法開啟 路徑、權限或檔案狀態異常 停止核心後重新更新,並核對實際核心目錄
規則標籤不存在 目前 Geo 資料不含該標籤 改用現有標籤,或更新為相符的資料集合
全部命中最終規則 前置條件未命中 檢查網域是否已解析,以及規則排列順序
出站正確但無法存取 問題不在 Geo 分流層 繼續檢查節點、DNS、傳輸參數與目標服務狀態

更新頻率與常見問題

Geo 資料沒有適用於所有人的固定更新週期。一般使用情境可每月檢查一次;若經常調整自訂路由、需要識別新網域,或發現部分位址突然走錯出站,則可立即檢查。客戶端升級核心後,也應確認 Geo 檔案仍能正常載入;沒有異常時,不必每天重複更新。

更新應視為路由維護的一部分,而不是處理連線故障的萬用修復按鈕。節點無法使用、VMess 或 VLESS 參數錯誤、系統代理未開啟、連接埠被占用等問題,都不會因替換 Geo 檔案而自動解決。先根據記錄確認故障位於路由層,再執行資料更新。

更新後中國大陸網站反而走代理了?

先檢查 geosite:cngeoip:cn 是否位於最終代理規則之前,再確認 domainStrategy 是否為會略過 IP 比對的 AsIs。修改後停止核心約 2 秒,再重新啟動。

只更新 geoip.dat 可以嗎?

技術上可以單獨替換,但不建議在排查故障期間這樣操作。GeoIP 與 GeoSite 通常會共同參與同一套路由,成對更新可減少標籤涵蓋範圍與產生時間不一致造成的判斷偏差。

v2rayNG 更新一直顯示逾時?

先連線至確認可用的節點,再到「設定」→「Geo 資源檔案」重新執行更新;同時關閉省電限制,並讓應用程式保持在前景。若一般網頁也無法存取,應先處理節點或 DNS 問題。

檔案更新了,為什麼舊連線沒有變化?

核心與目標應用程式都可能保留現有連線。依序停止代理服務、結束目標應用程式、等待 2 至 5 秒,再重新啟動核心與應用程式。使用瀏覽器測試時可建立獨立視窗,減少重複使用連線的影響。

自訂標籤提示找不到,該怎麼辦?

不同 Geo 資料集合包含的標籤並不完全相同。先從核心記錄抄下準確的標籤名稱,再檢查規則是否拼寫錯誤;無法確認標籤存在時,改用 cnprivate 等目前檔案已驗證可識別的集合。

客戶端入口 查看各平台下載選項