本文適合已在使用 v2rayN、v2rayNG 或 v2flyNG 路由規則,卻遇到應直連的網站誤走代理、代理網域被錯誤直連、廣告規則不完整等問題的使用者。讀完後可分清 GeoIP 與 GeoSite 的比對階段,完成用戶端內更新、手動替換與更新後驗證,並建立每週檢查資料的維護習慣。
GeoIP 與 GeoSite 分別解決哪些問題
V2Ray 與 Xray 的路由模組需要依據請求特徵選擇出站。一個連線可以交由直連出站、代理出站或阻擋出站處理,而判斷條件通常來自網域、目標 IP、連接埠、網路類型與協定。GeoSite 和 GeoIP 不是節點設定,也不負責建立 VMess、VLESS 等連線;它們是供路由規則查詢的分類資料。
geosite.dat 儲存網域分類。規則中的 geosite:cn、geosite:category-ads-all 等寫法,會在此檔案中查找對應標籤。用戶端取得網域後可以先進行 GeoSite 比對,因此網域規則通常應放在需要解析目標 IP 的規則之前。
geoip.dat 儲存 IP 位址範圍分類。常見的 geoip:private 用於識別區域網路與保留位址,geoip:cn 用於識別歸類至中國大陸的位址範圍。網域未命中前置規則,或連線本身直接使用 IP 位址時,GeoIP 規則才較可能成為決定出站的依據。
GeoSite 網域分類
- 資料檔
- geosite.dat
- 典型輸入
- 完整網域
- 常用標籤
- geosite:cn
- 比對時機
- 網域解析前
適合依網站類別進行分流,實際標籤是否存在取決於目前使用的資料集。
GeoIP 位址分類
- 資料檔
- geoip.dat
- 典型輸入
- IPv4 或 IPv6
- 常用標籤
- geoip:private
- 比對時機
- 取得目標 IP 後
適合處理直接使用 IP 的連線,也能為網域規則提供後續判斷。
哪些現象表示資料可能過舊
資料檔不會像訂閱節點一樣直接顯示「失效」。更常見的情況是連線仍然成功,但出站選擇不符合預期。例如原本應直連的新網域開始走代理、新分配的位址範圍未命中 geoip:cn,或歸屬已調整的服務仍依照舊分類處理。
不過,單次存取異常不能直接證明 Geo 資料已過期。DNS 回應結果、路由規則順序、網域嗅探、節點可用性與系統代理狀態都會影響結果。判斷時應先查看用戶端日誌中的目標網域、目標 IP 與 outboundTag,再對照規則命中順序。
- 新網域持續分流錯誤:同一項服務近期啟用了新網域,但舊資料尚未將其加入對應的 GeoSite 分類。
- 新位址範圍未命中:日誌顯示網域已完成解析,但目標 IP 落入預設規則,而不是預期的 GeoIP 規則。
- 規則標籤讀取失敗:核心日誌出現找不到 geosite 或 geoip 標籤的提示,表示檔案遺失、來源不相容或標籤名稱寫錯。
- 更新用戶端後規則異常:程式升級不一定會同步替換 Geo 資料,仍需另外檢查資料檔的更新時間。
結論:先確認命中對象,再決定是否更新
日誌中有網域卻未命中 GeoSite,應先檢查標籤與規則順序;若已進入 IP 比對階段但新位址範圍未分類,再優先更新 geoip.dat。如此可避免把 DNS 或節點故障誤判為資料問題。
在 v2rayN 中更新 Geo 資料檔
以下以 v2rayN 7.x 的常見介面為例,Geo 資料更新入口位於主視窗的更新選單中。不同小版本可能將入口顯示為「檢查更新」或「檢查更新 → Geo files」,但操作目標相同:下載與目前核心相容的 geoip.dat 和 geosite.dat,接著讓核心重新載入。
- 先連線至一個可正常使用的節點,確認 v2rayN 主視窗日誌沒有持續出現連線逾時。
- 開啟主選單中的「檢查更新」→「更新 Geo 檔案」。如果目前版本顯示子選單,請選擇同時包含 GeoIP 與 GeoSite 的更新項目。
- 等待介面或日誌顯示下載完成。更新期間不要關閉程式,也不要同時啟動第二個 v2rayN 執行個體。
- 更新完成後執行「重新啟動服務」,或完全退出 v2rayN 後重新開啟,讓 Xray 核心重新讀取資料。
- 進入「設定」→「路由設定」,選取目前使用的路由規則集,確認其中引用的
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 路由語法及現有標籤相容的資料檔。
- 停止目前連線,開啟用戶端設定,找到 Geo 檔案或路由資料相關入口。
- 記錄目前的路由模式與自訂規則,避免更新後誤將規則模式切換至其他預設值。
- 執行 GeoIP、GeoSite 更新,等待兩個工作都顯示完成。
- 返回主介面重新連線節點,再開啟即時日誌檢查路由命中結果。
Android 系統可能在用戶端切換至背景後限制網路活動。更新時請讓用戶端保持在前景,直到兩個檔案都處理完成。如果檔案較大,或網路在 Wi-Fi 與行動網路之間切換,下載可能會中斷;此時應回到穩定網路後重新執行,而不要使用只完成一半的檔案。
若某個版本沒有獨立的更新按鈕,優先使用該用戶端版本提供的資源管理入口。不同核心雖然都能識別常見 Geo 資料格式,但自訂標籤集合不一定相同。使用 geosite:category-ads-all 等標籤前,應以用戶端日誌是否成功載入為準。
手動替換 geoip.dat 與 geosite.dat
內建更新無法使用時,可以手動替換資料檔,但手動操作的重點不只是「複製進去」,而是確認實際生效的目錄。桌面用戶端可能同時儲存多個核心目錄,舊版目錄也可能殘留同名檔案。只替換搜尋結果中的第一個檔案,不一定會影響目前正在執行的核心。
- 在用戶端日誌或核心設定中確認目前啟用的是 Xray 還是 v2fly 核心,並找到該核心的實際程式目錄。
- 完全退出用戶端,確認背景不再保留核心程序。
- 將現有
geoip.dat與geosite.dat重新命名並保存為本機備份,避免新資料不相容時無法復原。 - 將新的兩個檔案放入同一個核心資源目錄,檔名維持全小寫,副檔名為
.dat。 - 重新開啟用戶端,先觀察啟動日誌,再至少測試一條 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:private 或 geoip: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 規則之前。