節點能夠連線,只代表代理伺服器的出站功能基本可用;中國大陸網站繞道、區域網路位址進入代理、某個網域始終未走指定線路時,通常還需要繼續檢查路由層。GeoIP 與 GeoSite 正是路由層常用的兩組比對資料。它們不會取代 VMess、VLESS 等協定設定,也不負責更新訂閱,而是為 Xray、V2Fly 核心提供可查詢的 IP 與網域集合。
適合已匯入訂閱、節點連線正常,但在 v2rayN 或 v2rayNG 中遇到規則未命中、中國大陸流量誤走代理、啟動時出現資料檔案錯誤的使用者;操作重點是確認檔案位置與更新時間、更新兩份資料庫、核對規則前綴與順序,再透過日誌和實際連線逐項驗證。
GeoIP 與 GeoSite 各自處理什麼
geoip.dat 儲存依國家、地區或用途整理的 IP 網段集合。規則中的 geoip:cn 會將目標 IP 與對應集合比對,geoip:private 通常用來比對區域網路、迴路位址和其他私有位址。它適合處理已取得目標 IP 的連線,也可作為網域規則之後的補充判斷。
geosite.dat 儲存網域集合。規則中的 geosite:cn、geosite:category-ads-all 等標籤不是一般網域,而是從資料檔案讀取一組網域項目。核心會依完整網域、子網域或正規表示式項目進行比對,因此能在連線真正發往目標伺服器前完成網域分流。
兩類資料的作用無法互換。網域請求可能先由 GeoSite 命中;如果應用程式直接連線至 IP,GeoSite 就沒有網域可供比對,只能依靠 GeoIP、連接埠或其他條件。啟用 TUN 後還要配合嗅探與 DNS 設定判斷:嗅探還原出網域時,網域規則可能重新參與比對;未還原網域時,連線仍會套用 IP 規則或最終規則。
在 v2rayN 更新 Geo 檔案
以下以 v2rayN 7.15.0 的繁體中文介面為例。不同小版本可能會將更新入口放在主選單或系統匣選單中,但選單項目通常仍包含「檢查更新」和「Geo files」。更新前先讓目前連線保持穩定;如果資料來源只能透過代理存取,需先確認系統代理或 TUN 已正常運作。
-
確認核心類型
開啟「設定」→「參數設定」→「Core 類型」,確認目前設定實際使用的是 Xray 核心還是 V2Fly 核心。訂閱名稱中出現 VLESS 或 VMess,不代表已確認執行中的核心。
-
開啟更新入口
返回主視窗,選擇「檢查更新」→「Geo files」。若目前版本顯示為「更新 Geo 檔案」,選擇該項即可,請勿誤按「更新訂閱」。
-
等待寫入完成
觀察訊息區域,確認 geoip.dat 與 geosite.dat 都已完成下載並寫入。一次測試中兩個檔案合計約 11.9 MB,網路穩定時通常會在 5 至 30 秒內完成。
-
重新啟動執行中的核心
使用「重新啟動服務」,或先停止再啟動目前設定。僅關閉設定視窗不會讓已執行的核心重新載入資料檔案。
-
核對啟動日誌
開啟「日誌」視窗,確認沒有出現 load geosite、load geoip 或 failed to start 等訊息,再測試目標網域的出站結果。
便攜版 v2rayN 需要特別檢查寫入權限。如果程式位於受系統保護的目錄,介面可能顯示下載完成,但舊檔案並未被取代。可退出客戶端後查看程式目錄中的兩個檔案修改時間;修改時間應接近剛才的更新時間,而不是安裝包解壓縮的時間。
更新完成後不建議立即同時修改 DNS、路由和節點設定。先保留原有規則,只重新啟動核心並再次測試,可以判斷變化是否確實來自資料檔案。若同時變更三處設定,發生分流錯誤時很難確認是哪一項造成。
結論:先確認檔案已重新載入
「下載成功」只代表檔案傳輸結束;修改時間已變更、核心完成重新啟動、啟動日誌沒有載入錯誤,三項同時符合後,才能視為新資料已生效。
在 v2rayNG 更新 Geo 檔案
以下以 v2rayNG 1.10.31 的繁體中文介面為例。Android 端的選單配置會隨螢幕寬度略有不同,相關入口可能位於右上角選單中。操作期間先保持一個可用設定處於選取狀態,以便更新位址需要代理時能正常存取。
-
檢查檔案位址
進入右上角選單的「設定」→「Geo files 設定」,檢查 GeoIP 與 GeoSite 下載位址是否分別指向對應的 dat 檔案,避免在兩個輸入框填入相同的檔案位址。
-
執行資料更新
返回主介面,開啟右上角選單並選擇「更新 Geo files」。等待頁面提示兩份檔案處理完成,中途不要強制結束客戶端程序。
-
重新啟動連線服務
中斷目前連線,等待約 2 秒後重新連線。這樣可以讓 Xray 核心重新初始化路由模組並讀取新檔案。
-
開啟執行日誌
從主介面進入「日誌」,搜尋
geoip、geosite、routing等關鍵字,確認啟動階段沒有檔案讀取錯誤。 -
重新測試目標連線
先測試一個明確應直連的中國大陸網域,再測試一個應走代理的網域。分別記錄出口位址與連線耗時,避免只憑頁面能否開啟來判斷規則是否命中。
若目前版本沒有獨立的 Geo 更新選單,應先確認客戶端版本及使用的核心,不要把「更新訂閱」當成資料庫更新。訂閱更新處理的是伺服器設定清單,Geo 更新處理的是路由集合,兩者的儲存位置和載入時機都不同。v2flyNG 同樣採用 Geo 資料概念,但應使用與其 V2Fly 核心和規則標籤相符的資料檔案。
檢查規則寫法與比對順序
資料庫是新的,規則仍可能因為寫法錯誤而完全不生效。最常見的問題是漏掉前綴、把網域標籤填入 IP 條件、使用資料檔案中不存在的標籤,或讓範圍更大的規則排在前面。路由通常會依序判斷,連線命中第一條可用規則後,後續規則不會再覆蓋它。
{
"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",
"network": "tcp,udp",
"outboundTag": "proxy"
}
]
}
}
這段範例會先放行私有 IP,再依中國大陸網域直連,接著依中國大陸 IP 直連,最後讓其餘 TCP 與 UDP 連線進入代理出站。實際設定中的 direct 與 proxy 必須與現有出站標籤一致;如果客戶端產生的標籤是 freedom、block 或其他名稱,應以目前的完整設定為準。
geosite:cn應填入網域條件,不應填入 IP 條件。geoip:cn與geoip:private應填入 IP 條件。domain:example.com用於比對該網域及常見的子網域範圍,完整比對可依核心支援的規則格式設定。- 自訂資料標籤必須確實存在於所使用的 dat 檔案中,不能根據檔名猜測標籤。
- 阻擋規則、直連規則和代理規則應依實際範圍由窄到寬排列,最後再放置兜底規則。
domainStrategy 也會影響結果。AsIs 主要依原始網域資訊比對;IPIfNonMatch 會在網域規則未命中時解析 IP,再嘗試 IP 規則;IPOnDemand 可能會更早觸發解析。修改此選項會牽涉 DNS 路徑,不應把它當成單純的「加強分流」開關。
結論:先檢查第一條命中的規則
規則結果與預期相反時,優先向前檢查是否存在範圍更廣的網域、IP、連接埠或全網路規則;只把目標規則移到清單末端,通常不會提高它的優先順序。
排查啟動錯誤與資料庫異常
檔案不存在、內容損壞或標籤缺失時,核心通常會在啟動日誌中留下比「連線失敗」更具體的資訊。排查時應保留完整的錯誤鏈,尤其是檔名、標籤名稱和底層讀取原因,不要只截取最後一行。
錯誤:failed to load geosite: geosite.dat: no such file or directory
原因與解法:核心工作目錄中找不到 geosite.dat,或客戶端指向錯誤路徑——重新執行 Geo files 更新,確認檔案已寫入目前核心目錄後重新啟動服務。
錯誤:failed to load GeoIP: geoip.dat: no such file or directory
原因與解法:GeoIP 檔案遺失、被移動或更新未完成——退出客戶端,確認 geoip.dat 存在且大小不是 0 位元組,再重新下載。
錯誤:failed to decode geosite.dat: invalid wire-format data
原因與解法:下載結果不是有效的資料檔案,常見原因是傳輸中斷或位址回傳了網頁內容——刪除異常檔案,透過客戶端更新入口重新取得並重新啟動核心。
錯誤:failed to load geosite: list not found
原因與解法:規則引用的標籤不在目前的 geosite.dat 中——核對標籤拼寫和資料來源,暫時移除該規則後確認核心能否正常啟動。
如果更新後客戶端無法啟動,可以先備份路由設定,再暫時停用所有引用 Geo 標籤的自訂規則。核心能夠啟動時,表示節點協定和基礎出站大致正常,問題集中在資料檔案或規則標籤;仍然無法啟動時,則應繼續檢查連接埠占用、設定語法和核心路徑。
還要檢查檔案是否被重複放置。客戶端目錄、核心子目錄和自訂資源目錄中可能各有一份同名檔案,實際讀取的未必是剛更新的那份。最直接的方法是查看啟動日誌顯示的資源路徑,再比對該路徑下檔案的修改時間與大小。
規則命中但仍然分流錯誤
日誌沒有錯誤,不代表分流結果一定符合預期。Geo 資料依集合維護,網域歸屬與伺服器 IP 都可能變更;大型網站還會使用多地解析和內容傳遞,同一網域在不同網路下可能得到不同位址。此時需要區分「規則未命中」和「規則命中後選擇的出站不符合預期」。
| 現象 | 優先檢查 | 驗證方式 |
|---|---|---|
| 中國大陸網域進入代理 | GeoSite 標籤與規則順序 | 將目標網域單獨加入直連規則,並放在寬泛代理規則之前 |
| 直接連線 IP 時未命中 | GeoIP 條件與目標 IP 歸屬 | 記錄目標 IP,再檢查是否命中 geoip:cn 或私有位址集合 |
| TUN 下的結果與系統代理不同 | 嗅探、DNS 與 domainStrategy | 保持節點不變,分別記錄兩種模式下日誌中的目標網域與 IP |
| 更新後只有部分規則失效 | 自訂標籤是否存在 | 逐條停用擴充標籤,保留 geosite:cn 與 geoip:cn 進行基準測試 |
| 區域網路裝置無法存取 | geoip:private 的位置 | 將私有 IP 直連規則放在代理兜底規則之前,再重新連線 |
建議建立最小測試設定:保留一個可用節點、一條私有位址直連規則、一條中國大陸網域直連規則、一條中國大陸 IP 直連規則和一條代理兜底規則。確認這組規則正常後,再分批恢復廣告網域、自訂網域、程序或連接埠規則。每恢復一批就測試一次,比一次載入數十條規則更容易定位衝突。
驗證時至少記錄三項結果:目標網域解析出的 IP、核心選擇的出站標籤、最終出口位址。網頁開啟速度容易受到快取、伺服器負載和網路抖動影響,不能單獨證明分流是否正確。若本機 SOCKS 監聽連接埠設為 10808,還要確認測試工具確實連線至該連接埠,而不是繞過客戶端使用系統直連。
結論:用最小規則集區分資料問題與順序問題
基本的 geosite:cn 與 geoip:cn 能正常運作,逐步恢復擴充規則後才出現分流錯誤,問題通常在新增規則的範圍或順序,而不是兩份資料庫本身。
更新後的完整驗證清單
一次可靠的更新應同時涵蓋檔案、核心、規則和連線四個層面。只看到選單提示「完成」,不足以證明路由已依新資料運作。完成以下檢查後,再恢復自動啟動、定時更新訂閱等日常設定。
- 確認 geoip.dat 與 geosite.dat 都存在,檔案大小大於 0 位元組,修改時間接近本次更新時間。
- 確認目前執行的是預期核心,v2rayN 可從「設定」→「參數設定」→「Core 類型」核對。
- 中斷並重新連線,確保舊核心程序已退出,新程序重新讀取資源檔案。
- 查看啟動日誌,排除 file not found、decode、list not found 等載入錯誤。
- 檢查 GeoSite 標籤位於網域條件、GeoIP 標籤位於 IP 條件,出站標籤與現有設定一致。
- 將私有位址、精確網域等窄範圍規則放在寬泛代理兜底規則之前,避免提前命中。
- 分別測試網域連線與直接 IP 連線,記錄實際選擇的出站,而不是只看頁面是否開啟。
- 確認系統代理或 TUN 模式下的應用程式流量確實進入客戶端,測試工具未繞過本機代理連接埠。
Geo 資料不需要在每次更新訂閱後重複下載。訂閱變更主要影響節點清單,Geo 檔案變更主要影響路由集合。可以依實際需要定期更新,也可以在出現新網域無法分類、舊 IP 歸屬明顯變更、擴充標籤缺失時手動更新。頻繁覆蓋檔案卻不重新啟動核心,反而容易讓磁碟版本與執行版本不一致。
如果最終確認某個網域長期被集合錯誤分類,最穩妥的暫時處理方式是新增一條範圍更窄的自訂網域規則,並放在對應集合規則之前。這樣既能修正目前的連線,也不必刪除整組 GeoSite 或 GeoIP 規則。後續資料更新後,再重新測試該網域是否仍需保留例外項目。