GeoIP 與 GeoSite 資料檔更新方法:路由分流規則的資料基礎

geoip.dat 與 geosite.dat 會影響網域與 IP 分類的準確性,資料過舊可能導致分流判斷錯誤。本文說明兩個資料檔的用途、用戶端內的更新入口,以及建議的更新頻率。

本文速覽

本文適合已在使用 v2rayN、v2rayNG 或 v2flyNG 路由規則,卻遇到應直連的網站誤走代理、代理網域被錯誤直連、廣告規則不完整等問題的使用者。讀完後可分清 GeoIP 與 GeoSite 的比對階段,完成用戶端內更新、手動替換與更新後驗證,並建立每週檢查資料的維護習慣。

GeoIP 與 GeoSite 分別解決哪些問題

V2Ray 與 Xray 的路由模組需要依據請求特徵選擇出站。一個連線可以交由直連出站、代理出站或阻擋出站處理,而判斷條件通常來自網域、目標 IP、連接埠、網路類型與協定。GeoSite 和 GeoIP 不是節點設定,也不負責建立 VMess、VLESS 等連線;它們是供路由規則查詢的分類資料。

geosite.dat 儲存網域分類。規則中的 geosite:cngeosite:category-ads-all 等寫法,會在此檔案中查找對應標籤。用戶端取得網域後可以先進行 GeoSite 比對,因此網域規則通常應放在需要解析目標 IP 的規則之前。

geoip.dat 儲存 IP 位址範圍分類。常見的 geoip:private 用於識別區域網路與保留位址,geoip:cn 用於識別歸類至中國大陸的位址範圍。網域未命中前置規則,或連線本身直接使用 IP 位址時,GeoIP 規則才較可能成為決定出站的依據。

應用程式發起請求讀取目標網域GeoSite 比對解析目標 IPGeoIP 比對選擇出站

GeoSite 網域分類

資料檔
geosite.dat
典型輸入
完整網域
常用標籤
geosite:cn
比對時機
網域解析前

適合依網站類別進行分流,實際標籤是否存在取決於目前使用的資料集。

GeoIP 位址分類

資料檔
geoip.dat
典型輸入
IPv4 或 IPv6
常用標籤
geoip:private
比對時機
取得目標 IP 後

適合處理直接使用 IP 的連線,也能為網域規則提供後續判斷。

哪些現象表示資料可能過舊

資料檔不會像訂閱節點一樣直接顯示「失效」。更常見的情況是連線仍然成功,但出站選擇不符合預期。例如原本應直連的新網域開始走代理、新分配的位址範圍未命中 geoip:cn,或歸屬已調整的服務仍依照舊分類處理。

不過,單次存取異常不能直接證明 Geo 資料已過期。DNS 回應結果、路由規則順序、網域嗅探、節點可用性與系統代理狀態都會影響結果。判斷時應先查看用戶端日誌中的目標網域、目標 IP 與 outboundTag,再對照規則命中順序。

2 個
核心資料檔
7 天
例行檢查週期
1 次
更新後完整重新啟動
3 項
網域、IP、出站驗證

結論:先確認命中對象,再決定是否更新

日誌中有網域卻未命中 GeoSite,應先檢查標籤與規則順序;若已進入 IP 比對階段但新位址範圍未分類,再優先更新 geoip.dat。如此可避免把 DNS 或節點故障誤判為資料問題。

在 v2rayN 中更新 Geo 資料檔

以下以 v2rayN 7.x 的常見介面為例,Geo 資料更新入口位於主視窗的更新選單中。不同小版本可能將入口顯示為「檢查更新」或「檢查更新 → Geo files」,但操作目標相同:下載與目前核心相容的 geoip.datgeosite.dat,接著讓核心重新載入。

  1. 先連線至一個可正常使用的節點,確認 v2rayN 主視窗日誌沒有持續出現連線逾時。
  2. 開啟主選單中的「檢查更新」→「更新 Geo 檔案」。如果目前版本顯示子選單,請選擇同時包含 GeoIP 與 GeoSite 的更新項目。
  3. 等待介面或日誌顯示下載完成。更新期間不要關閉程式,也不要同時啟動第二個 v2rayN 執行個體。
  4. 更新完成後執行「重新啟動服務」,或完全退出 v2rayN 後重新開啟,讓 Xray 核心重新讀取資料。
  5. 進入「設定」→「路由設定」,選取目前使用的路由規則集,確認其中引用的 geosite:geoip: 標籤沒有拼寫變更。

如果下載過程顯示逾時,先檢查更新請求是否需要經過目前的代理。部分網路環境下,必須先啟用可用節點並開啟系統代理,更新請求才能完成。若主視窗已有正常代理連線但更新仍失敗,應查看日誌確認是 DNS 解析失敗、連線逾時,還是檔案寫入遭拒。

便攜版目錄沒有寫入權限時,程式可能成功下載暫存檔,卻無法覆寫核心正在使用的資料。可完全退出用戶端後重新啟動,再執行一次更新;如果程式位於受保護的目錄,應移至目前帳戶可讀寫的位置,而不是反覆點擊更新。

在 v2rayNG 與 v2flyNG 中檢查更新

v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心,兩者都可能透過路由設定引用 Geo 資料。Android 用戶端的選單名稱會隨版本調整,常見路徑是主選單中的「檢查更新」或「設定」→「Geo files settings」。進入後應同時確認下載網址設定、目前檔案狀態與更新操作,而不是只修改路由規則。

v2rayNG 檢查項目

平台
Android
核心
Xray
入口
設定 → Geo files settings
更新對象
GeoIP 與 GeoSite

更新完成後停止目前連線,再重新啟動一次連線服務。

v2flyNG 檢查項目

平台
Android
核心
v2fly
入口
設定 → 路由設定
驗證對象
規則標籤與檔案狀態

應選擇與 v2fly 路由語法及現有標籤相容的資料檔。

  1. 停止目前連線,開啟用戶端設定,找到 Geo 檔案或路由資料相關入口。
  2. 記錄目前的路由模式與自訂規則,避免更新後誤將規則模式切換至其他預設值。
  3. 執行 GeoIP、GeoSite 更新,等待兩個工作都顯示完成。
  4. 返回主介面重新連線節點,再開啟即時日誌檢查路由命中結果。

Android 系統可能在用戶端切換至背景後限制網路活動。更新時請讓用戶端保持在前景,直到兩個檔案都處理完成。如果檔案較大,或網路在 Wi-Fi 與行動網路之間切換,下載可能會中斷;此時應回到穩定網路後重新執行,而不要使用只完成一半的檔案。

若某個版本沒有獨立的更新按鈕,優先使用該用戶端版本提供的資源管理入口。不同核心雖然都能識別常見 Geo 資料格式,但自訂標籤集合不一定相同。使用 geosite:category-ads-all 等標籤前,應以用戶端日誌是否成功載入為準。

手動替換 geoip.dat 與 geosite.dat

內建更新無法使用時,可以手動替換資料檔,但手動操作的重點不只是「複製進去」,而是確認實際生效的目錄。桌面用戶端可能同時儲存多個核心目錄,舊版目錄也可能殘留同名檔案。只替換搜尋結果中的第一個檔案,不一定會影響目前正在執行的核心。

  1. 在用戶端日誌或核心設定中確認目前啟用的是 Xray 還是 v2fly 核心,並找到該核心的實際程式目錄。
  2. 完全退出用戶端,確認背景不再保留核心程序。
  3. 將現有 geoip.datgeosite.dat 重新命名並保存為本機備份,避免新資料不相容時無法復原。
  4. 將新的兩個檔案放入同一個核心資源目錄,檔名維持全小寫,副檔名為 .dat
  5. 重新開啟用戶端,先觀察啟動日誌,再至少測試一條 GeoSite 規則與一條 GeoIP 規則。
核心資源目錄/
├── geoip.dat
├── geosite.dat
└── 核心程式

路由引用範例:
domain: geosite:cn
ip:     geoip:private
ip:     geoip:cn

如果用戶端支援自訂資源目錄,應以設定中顯示的目錄為準。環境變數、啟動參數或多核心切換都可能改變搜尋位置。最可靠的驗證方式是暫時記錄兩個檔案的修改時間,重新啟動後查看日誌是否仍提示舊標籤遺失。

兩個檔案最好來自同一套發布節奏,並在同一次維護中完成替換。GeoIP 與 GeoSite 並沒有必須完全同步的內部版本號,但混用長期未更新的舊檔案與新檔案,會讓排查變得困難:同一條路由鏈中,網域階段與 IP 階段可能依據不同時間範圍的資料作出判斷。

更新後如何驗證分流是否生效

更新成功提示只能證明檔案處理流程已結束,不能證明每條規則都依預期命中。驗證時應選擇能代表不同分支的目標:一個區域網路位址、一組預期直連網域、一組預期代理網域,以及一個直接使用 IP 的連線。測試期間維持節點、DNS 與系統代理設定不變。

在 v2rayN 中可開啟主視窗日誌,提高日誌等級後觀察目標、路由規則與出站標籤。若規則將 geosite:cn 指向 direct,日誌中的對應網域應進入直連出站;若目標直接以 IP 形式出現,則應檢查 geoip:privategeoip:cn 是否命中。

測試對象 主要檢查項目 異常時先排查
區域網路位址 是否命中 geoip:private 私有位址規則是否位於預設代理規則之前
一般網域 是否命中目標 GeoSite 標籤 網域嗅探、DNS 與標籤拼寫
直接輸入 IP 是否進入預期的 GeoIP 分支 位址範圍分類與規則順序
未分類目標 是否進入最終預設規則 預設出站是否放在規則清單末端

規則順序是更新後最容易被忽略的因素。V2Ray 與 Xray 通常會依規則清單由前往後判斷,範圍較廣的規則若排在前面,便會提前攔截請求。例如將「所有連接埠走代理」放在 geosite:cn 之前,後面的網域分類即使已更新也沒有機會生效。

還要區分「未命中」與「命中後連線失敗」。前者應檢查資料、標籤與規則順序;後者表示已選定出站,接著應檢查節點連線、目標連接埠與 DNS 回應。兩類問題在使用者端都可能表現為網頁無法開啟,但處理方向完全不同。

結論:以日誌中的 outboundTag 作為驗收結果

檔案修改時間只能說明曾經發生替換,真正的更新驗收應落實到具體請求:網域或 IP 被哪條規則識別,最後進入 direct、proxy 還是 block。連續測試 3 類目標,比反覆更新檔案更能發現規則順序問題。

更新頻率與常見問題

一般使用情境不需要每天更新。建議每 7 天檢查一次,或在用戶端升級、路由規則調整、持續出現新網域分流錯誤時執行更新。過於頻繁地替換檔案不會提升連線速度,也不會改善節點延遲;Geo 資料只參與分類判斷。

維護時一次只變更一個變數。先更新 Geo 檔案並完成驗證,確認結果後再調整 DNS 或路由規則。若更新前後都保留同一組測試目標與日誌等級,就能直接比較規則命中變化,避免只憑網頁使用感受下判斷。

更新後所有網站都走代理了?

開啟「設定」→「路由設定」,檢查預設代理規則是否被移至清單頂端。將精確的 GeoSite 與 GeoIP 規則放在範圍較廣的規則之前,儲存後重新啟動核心再測試。

日誌提示找不到 geosite 標籤?

先核對標籤拼寫,再確認新的 geosite.dat 是否包含該分類。若問題是在手動替換後開始,請還原備份檔案並重新啟動,避免繼續使用不相容的資料集。

GeoIP 更新成功但分流沒有變化?

確認測試請求是否直接使用 IP,或是否已在前面的網域規則中命中。GeoSite 先完成比對時,後續 GeoIP 規則不會參與這次出站選擇。

兩個檔案必須一起更新嗎?

格式上可以分別替換,但維護時建議同批更新。完成後記錄兩個檔案的修改時間,並各測試一條網域規則與一條 IP 規則。

更新時一直顯示連線逾時?

先連線至可用節點,再確認系統代理或用戶端的代理更新選項已啟用。仍然逾時時,查看日誌中的 DNS 與連線錯誤,不要連續啟動多個更新工作。

Geo 資料維護的目標,是讓分類規則盡量貼近現實網路變化,而不是讓所有請求都命中某個預設標籤。對於業務上必須固定直連或固定代理的網域,使用明確的自訂網域規則通常比等待公共分類更新更可控,而且應放在通用 Geo 規則之前。

下載 v2rayN查看四個平台安裝包