GeoIP 與 GeoSite 資料庫如何更新:檔案位置、載入機制與規則引用
說明 geoip.dat 與 geosite.dat 的用途和存放路徑,示範如何在 v2rayN 與 v2rayNG 更新資料庫,並介紹資料過期造成分流失準的常見症狀與驗證方法。
V2Ray 與 Xray 的路由規則可以依網域、目標 IP、連接埠、網路類型和入站標籤比對流量。其中,geosite.dat 提供網域分類,geoip.dat 提供 IP 網段分類。規則中的 geosite:cn 與 geoip: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.dat 與 v2rayN\bin\Xray\geosite.dat。如果使用的是 v2fly 核心,資源檔應位於該核心實際讀取的目錄,而不是直接複製到 Xray 目錄。
不同安裝方式、架構套件和版本可能調整目錄層級,因此檔案搜尋結果只能作為線索。更可靠的方法是先在 v2rayN 的「設定」→「參數設定」中確認目前的核心類型,再從核心日誌查看啟動路徑。日誌中的可執行檔目錄與資源載入錯誤,能指出目前程序實際使用哪一份資料。
| 環境 | 常見存放方式 | 更新後的必要動作 | 驗證入口 |
|---|---|---|---|
| v2rayN 可攜版 + Xray | bin\Xray\geoip.datbin\Xray\geosite.dat |
停止並重新啟動核心 | 「資訊」或核心日誌視窗 |
| v2rayN 其他核心目錄 | 跟隨目前核心可執行檔所在目錄 | 切換核心後再次確認檔案來源 | 「設定」→「參數設定」 |
| v2rayNG | 由應用程式管理的內部資源目錄 | 更新完成後重新啟動目前設定 | 主介面右上角選單與日誌 |
| v2flyNG | 由應用程式和 v2fly 核心管理 | 依用戶端更新結果重新載入服務 | 應用程式日誌與路由測試 |
核心通常會在啟動或重新載入設定時讀取地理資料。直接覆蓋正在使用的檔案,不代表現有程序會立即採用新內容;部分情況下,舊檔案控制代碼仍由程序持有。更新完成後應停止目前核心,再重新啟動設定。僅關閉系統代理開關通常不等於重新啟動核心,判斷依據應是日誌中出現新的啟動時間和設定載入記錄。
在 v2rayN 中更新 geoip.dat 與 geosite.dat
v2rayN 的選單文字會隨版本調整,但 7.x 的操作邏輯基本一致:由用戶端執行 Geo 資料更新,將檔案寫入對應核心目錄,然後重新啟動核心。更新前先確認目前節點可以正常連線,因為資料取得失敗與路由規則本身無關,無法靠反覆修改規則解決。
- 啟動 v2rayN,在主視窗確認已選取可用設定,並記錄目前的核心類型。
- 開啟「設定」→「參數設定」,檢查本機監聽連接埠與核心選項。常見預設值為 SOCKS
10808、HTTP10809,實際設定以本機介面為準。 - 返回主介面,開啟「檢查更新」選單,選擇「更新 Geo 檔案」或目前版本中名稱相近的 Geo 資料更新項目。
- 等待狀態列或日誌顯示兩個資料檔都已處理完成。若只完成其中一個,不要直接視為更新成功。
- 執行「重新啟動服務」;如果看不到該入口,可先停止服務,再重新啟動目前設定。
- 開啟核心日誌,確認沒有
failed to load geoip、failed 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 檔案」;具體文字可能隨建置版本略有不同。
- 先選取一個可連線的設定,點選啟動按鈕,確認即時測試能取得延遲結果。
- 開啟右上角選單,選擇「更新 Geo 檔案」,讓應用程式保持在前景直到顯示完成。
- 停止目前的 VPN 服務,再重新啟動所選設定,讓 Xray 重新讀取資源檔與路由設定。
- 進入「設定」→「路由設定」,確認目前啟用的規則確實包含
geosite或geoip引用。 - 開啟日誌,分別造訪一個預期直連的網域和一個預期代理的網域,對照目標、規則與出站標籤。
訂閱更新與 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:cn 與 geoip:cn 不能互相取代。某個國際服務可能在中國大陸部署節點,其網域分類仍會依服務屬性整理,而解析位址可能落入 geoip:cn。如果設定使用 IPIfNonMatch,網域分類先命中時就不會繼續依賴 IP 歸屬;這正是必須明確規劃規則意圖的原因。
- 需要直連區域網路裝置時,請將
geoip:private放在兜底代理之前。 - 需要依特定網域覆蓋分類時,請將精確網域規則放在寬泛的
geosite規則之前。 - 需要處理 IPv6 時,確認目前的
geoip資料和自訂 CIDR 規則包含對應的位址族。 - 修改自訂規則後先重新啟動核心,再透過日誌驗證,不要只看網頁是否剛好能開啟。
如何區分資料過期、規則衝突與載入失敗
資料過期最常見的表現,是少量新網域、新網段或近期調整基礎設施的服務出現分流異常,而大量舊規則仍能正常運作。規則衝突通常具有穩定性:只要存取同一目標,就始終被前面的寬泛規則攔截。載入失敗則更直接,核心啟動日誌會出現檔案遺失、無法讀取或標籤不存在等資訊。
| 現象 | 優先懷疑 | 檢查方法 | 處理動作 |
|---|---|---|---|
| 只有近期新增網域誤走代理 | GeoSite 資料過舊 | 用精確網域臨時規則進行對照 | 更新資料並重新啟動核心 |
| 大量中國大陸網域全部走代理 | 規則順序或規則未啟用 | 檢查兜底規則是否位於頂部 | 調整順序並重新載入設定 |
| 網域規則正常,直接存取 IP 失準 | GeoIP 資料或 IP 規則缺漏 | 記錄目標 IP 與命中的出站 | 更新 GeoIP 或補充 CIDR |
| 核心啟動後立即停止 | 檔案損毀、路徑錯誤或分類不存在 | 查看第一筆資源載入錯誤 | 還原可用檔案並核對分類名稱 |
| 更新完成但行為完全沒有變化 | 核心未重新啟動或更新了錯誤目錄 | 核對日誌啟動時間和核心路徑 | 停止程序後從正確目錄啟動 |
驗證時應至少選擇四類目標:區域網路位址、已知中國大陸網域、預期代理網域、直接 IP 請求。先排除瀏覽器連線重用的影響,再逐一建立新連線。v2rayN 可同時觀察核心日誌與本機連接埠連線,v2rayNG 則可在日誌頁面查看目標位址和出站結果。單次延遲高低不能證明路由命中,因為網路壅塞也會改變回應時間。
- 記錄目前核心類型、資料檔修改時間和路由模式。
- 重新啟動核心,確認日誌中沒有 Geo 資源載入錯誤。
- 測試
127.0.0.1或區域網路目標,確認私有位址直連。 - 測試一個穩定的中國大陸網域,確認命中直連出站。
- 測試一個明確設定為代理的網域,確認流量進入代理出站。
- 將臨時精確規則放到最前方重新測試,藉此區分分類資料問題與規則順序問題。
如果精確網域規則能修正分流,而對應的 geosite 分類仍未命中,才有理由繼續檢查 GeoSite 內容或版本。如果精確規則也未生效,應先檢查用戶端是否使用了另一套路由模式、訂閱產生的設定是否覆蓋自訂項目,以及修改後是否確實重新啟動核心。
更新頻率與維護界線
Geo 資料沒有適用於所有環境的固定更新週期。日常使用中,每月檢查一次通常足以涵蓋一般網段和網域變化;遇到新服務分流異常、電信業者位址調整或日誌提示分類缺漏時,可以立即更新。頻繁更新本身不會改善錯誤的規則順序,也不會提升節點線路品質。
團隊或多裝置環境應記錄用戶端版本、核心類型、更新時間和規則版本。桌面端與 Android 端可以採用相同的規則意圖,但不應假定兩者載入的是同一份實體檔案。v2rayN、v2rayNG 與 v2flyNG 的核心、資源目錄和更新入口各自獨立,驗證結果也應分別保存。
- 更新前保留目前可正常運作的規則設定,方便失敗時回復。
- 更新後必須重新啟動核心,並核對新的啟動日誌。
- 同時測試網域與 IP,避免只驗證 GeoSite 或只驗證 GeoIP。
- 訂閱變更、DNS 變更和 Geo 資料變更應分開記錄。
- 規則異常先檢查順序和啟用狀態,再判斷資料是否過期。
穩定的維護流程不是反覆替換檔案,而是確認核心路徑、透過用戶端入口更新、重新載入程序、檢查日誌,再用固定測試目標驗證。只有將檔案版本、載入過程和規則命中三部分串聯起來,才能判斷分流變化究竟來自資料庫、設定還是網路環境。