本文適合已匯入節點、準備檢查路由分流的使用者。先分清網域分類與 IP 位址庫,再依用戶端更新實際使用的資料檔,最後透過精簡的路由範例和日誌確認匹配結果。重點是分別檢查「檔案下載成功」、「分類能否載入」及「流量是否走對出口」,避免一再更新卻仍無法排除分流錯誤。
兩個資料庫各自匹配什麼
geosite.dat 儲存依標籤分類的網域項目;geoip.dat 儲存依標籤分類的 IP 位址範圍。兩者都是供核心讀取的二進位資料檔,不是可直接貼進路由編輯欄的 JSON,也不會儲存訂閱連結、節點密碼或傳輸協定參數。
例如,geosite:cn 會查詢網域庫中的 cn 分類,geoip:cn 則會查詢位址庫中的 cn 位址範圍。兩者不是同一份清單:網域被歸入某個分類,不代表它目前解析出的每個位址都屬於相同地區;使用境外 CDN 的網站尤其容易出現這種差異。
| 資源 | 匹配對象 | 常見引用方式 | 限制 |
|---|---|---|---|
geosite.dat | 要求中帶有或核心辨識出的網域 | geosite:cn | 取決於分類收錄情況,不是即時 DNS 查詢結果 |
geoip.dat | 目標 IP 位址 | geoip:cn | 僅反映 IP 位址範圍分類,不能據此判斷服務營運主體 |
geoip.dat | 資料來源定義的私有或保留位址集合 | geoip:private | 實際範圍以該資料來源的標籤內容為準 |
只有 IP 位址的要求無法直接使用網域分類匹配。網域要求能否進一步進行 IP 匹配,則與路由的網域策略和 DNS 解析有關。因此,「更新了 geosite,所有應用程式就會依網域分流」並不成立,還得檢查用戶端收到的目標資訊。
選擇資料來源與更新方式
常見資料來自社群維護的網域清單和 IP 位址範圍專案,再透過建置流程編譯成 DAT 檔。網域項目可能包含完整網域、後綴匹配、關鍵字或正規表示式等不同形式;位址庫則主要依標籤彙整 CIDR 網段。Xray 與 V2Ray 生態系中的這些檔案有相應的格式規範,但檔名相同不代表不同來源使用相同標籤。
用戶端程式、核心程式、規則資料和路由規則是四個不同層面。更新 v2rayN 不代表正在使用的 Geo 檔案也已更新;更新 Geo 檔案也不會自動調整自訂規則的順序。切換資料來源前,請先記下規則引用的標籤,例如 cn、private 和業務分類,並確認新來源確實提供這些標籤。
透過用戶端內建功能更新
建議由用戶端依已設定的資源網址取得檔案,並寫入其管理的資源位置。這樣較不容易把新檔案放進舊目錄,更新日誌也方便追查失敗環節。
適用情境:日常維護、沿用預設資料來源、初步排查。
手動匯入或替換
先確認目前核心實際讀取的資源位置,再使用來源可信的檔案。Android 端建議優先使用用戶端提供的資源匯入功能,不要猜測應用程式的私有目錄。
適用情境:離線更新、內建下載無法連線、需要固定資料版本。
切換自訂來源
同時核對下載網址、檔案格式與分類清單。不要只因檔案容量較大就替換;新增分類未必派得上用場,缺少正在引用的分類反而可能導致核心無法啟動。
適用情境:明確依賴特定業務分類,且能維護規則引用的使用者。
結論:先固定來源,再更新資料
保留現有資源和路由設定的備份,先在相同來源內更新並驗證。只有確認缺少必要標籤時,才考慮更換來源;排查時不要同時更換來源、修改 DNS 和調整規則順序。
v2rayN 更新與重新載入步驟
桌面端請先確認目前連線使用的是 Xray 或 V2Ray 的 DAT 路由設定。本文範例不適用於其他格式的規則集。v2rayN 各版本的選單配置可能不同,常見更新入口位於主視窗的「檢查更新」下方,名稱可能是「Geo 檔案」或「更新 Geo 檔案」;若該版本將入口移至資源管理頁,請以目前的選單名稱和日誌為準,不要把「更新訂閱」當成更新規則資料。
-
記錄目前設定
開啟「設定」→「路由設定」,記下目前啟用的路由方案、規則順序和使用的分類,並另外備份自訂設定。有些版本儲存方案後,還需要在主視窗選取該方案才會套用。
-
更新規則資料
在主視窗開啟「檢查更新」→「Geo 檔案」,執行更新。分別查看
geoip.dat與geosite.dat的更新結果,不要看到第一項成功就關閉日誌。 -
確認下載結果
如果出現連線失敗,先檢查資源下載網址,以及更新操作是否需要透過目前的代理連線。如果回傳內容無法解析,請確認是否誤填網頁網址而非檔案網址;有檔名不代表內容就是 DAT 資料。
-
重新啟動目前服務
資料寫入後,請重新啟動目前的連線,讓核心重新載入資源。只切換主視窗分頁不會重新載入;已建立的長連線也無法代表新規則的處理結果。
-
檢查啟動日誌
確認沒有出現資源開啟失敗、分類不存在或路由建置失敗等訊息。接著重新發出測試要求;若用戶端啟用了自動還原舊設定,也要確認目前執行的確實是剛儲存的方案。
v2rayNG 的資源更新入口
Android 版 v2rayNG 使用 Xray 核心,Geo 資料通常由應用程式管理。提供獨立資源管理頁的版本,可從側邊選單進入「Geo 資源檔案」,在該頁更新或匯入資源;較早期的版本可能將「更新 Geo 檔案」放在主畫面右上角選單。若入口名稱或版面不同,請先尋找 Geo 資源相關項目,不要到訂閱群組中尋找。
- 更新前:在側邊選單的「路由設定」中記下目前規則,並確認沒有暫時啟用全域代理或全域直連模式,否則無法測出預期的分流效果。
- 更新時:分別確認兩項資源的更新狀態。若資源頁允許修改下載網址,請填入能回傳原始檔案內容的網址,不要填入專案介紹頁。
- 更新後:停止連線服務再重新啟動,讓新的核心程序載入資料;返回應用程式不等於重新啟動連線。
- 手動匯入:使用資源頁實際提供的匯入功能,並核對檔案類型。若目前版本沒有匯入入口,就不應猜測私有目錄來替換資源。
若更新必須透過代理,請先確保既有連線能存取資源伺服器;若代理本身因資源載入失敗而無法啟動,則應改用目前網路可連線的下載來源或離線匯入。不要把「下載通道依賴代理」和「路由檔案需要更新」混為一談而不斷重試。
geosite 與 geoip 的引用方式
在 Xray 路由 JSON 中,geosite: 引用要寫在 domain 陣列,geoip: 引用則要寫在 ip 陣列。分類名稱不是任意描述文字,必須存在於目前使用的檔案中。geoip:cn 的 cn 是常見的地區代碼標籤;private 則是資料集定義的特殊標籤,不是國家代碼。
{
"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"
}
]
}
}
這是一段路由設定範例,不是可獨立啟動的完整設定。此範例假設完整設定已定義 direct 與 proxy 出口;若要封鎖流量,還必須另外定義並引用 block。這些標籤只是名稱,必須與實際的 outbounds 相對應,不能直接照抄後就期待用戶端自動建立出口。圖形化規則編輯器通常只需填入對應的匹配欄位,不應貼上整段 JSON。
- 規則順序:規則會依序匹配,第一條符合條件的規則會決定出口。若把範圍寬泛的備用規則放在前面,後續較精確的分類就沒有機會匹配。
- 網域策略:
IPIfNonMatch會在網域規則未匹配時嘗試解析並進行 IP 匹配;這不代表每個要求都會先解析,也不是 DNS 伺服器位址設定。 - 後綴與完整網域:
domain:example.com和full:example.com是直接匹配網域的寫法,不是資料庫分類。前者涵蓋該網域及其子網域,後者只匹配完整網域。 - 分類差異:只有目前資料來源包含
geosite:category-ads-all這個標籤時,才能使用該分類。某個來源支援的業務分類,不代表其他來源也支援。
若要指定其他檔案,Xray 支援類似 ext:custom-site.dat:cn 的外部資源引用。對應檔案必須位於核心可存取的資源位置,且包含該分類。一般使用情境沿用預設檔名即可,不必為了更新資料而加入外部檔案引用。
更新後的生效檢查與問題排查
請依照「資源已載入 → 規則能匹配 → 流量抵達預期出口」的順序進行驗證。只看網站能否開啟並不足夠:代理和直連都可能成功,網頁快取也會進一步掩蓋路由變化。建議在更新前後各記錄一輪結果,並維持節點、DNS 和測試目標不變。
| 現象 | 優先檢查項目 | 處理方式 |
|---|---|---|
| 核心啟動失敗 | 資源路徑、檔案內容、分類名稱 | 查看啟動日誌中的檔名與標籤,還原舊資源後逐項修正 |
| 更新成功但行為沒有改變 | 執行中的設定、服務是否重新啟動、既有長連線 | 重新啟動連線服務,透過新要求確認實際出口 |
| 網域規則沒有匹配 | 目標網域是否可見、分類是否收錄、前置規則 | 暫時新增完整網域規則,分辨是資料缺漏還是要求資訊不足 |
| IP 規則沒有匹配 | 實際目標位址、網域策略、解析結果 | 核對日誌中的目標 IP,確認是否需要先解析網域再進行匹配 |
| 區域網路服務經由代理連線 | 私有位址規則、規則順序、區域網路網域 | 先確認實際目標位址,再設定明確的直連規則 |
可在自有測試環境中連線至 192.168.1.10:8080 的服務,用來確認區域網路位址是否直連;這裡的位址和連接埠僅為測試範例,必須替換成網路內實際存在的服務。再選擇一個確定收錄於目前網域分類的網站,以及一個應透過代理連線的網站,分別查看存取日誌中的目標和出口標籤。若未啟用存取日誌,可暫時調高至適當的日誌層級;測試完成後請還原設定,避免長期儲存不必要的存取記錄。
結論:先用單條規則隔離問題
針對分流錯誤的網域,暫時新增一條置頂的完整網域規則:若出口因此改變,接著檢查分類收錄情況和規則優先順序;若出口仍未改變,先確認流量是否進入目前的用戶端、執行中的設定是否正確,以及核心是否取得網域資訊。
確認穩定後,再刪除臨時測試規則,並記錄這次使用的資料來源、更新日期和有效分類。Geo 資料適合定期維護,但不必每次遇到連線異常就更新:驗證失敗、伺服器無法連線和傳輸參數不一致,通常應檢查節點或協定設定,而不是修改地理分類。