中國大陸網站連線走錯出口,或更新後出現規則類別不存在的提示,先釐清資料庫、路由規則與訂閱各自的用途。本文依序說明如何辨識檔案、更新資源、檢查規則及驗證結果,協助你在 v2rayN 搭配 Xray 或 V2Fly 核心時管理 Geo 資料,並提供易讀的路由設定範例與疑難排解方法。
GeoIP 與 GeoSite:一種比對 IP,一種比對網域
geoip.dat 收錄依國家、地區或特殊用途分類的 IP 網段;geosite.dat 則整理依地區、服務或用途分類的網域規則。這兩者都是供核心讀取的二進位資料檔,不是節點清單,也不是能用文字編輯器直接修改的 JSON 設定檔。
| 項目 | geoip.dat | geosite.dat |
|---|---|---|
| 比對對象 | 目標 IP 位址 | 目標網域 |
| 常見引用方式 | geoip:cn、geoip:private | geosite:cn |
| 設定欄位 | 路由規則中的 ip | 路由規則中的 domain |
| 常見用途 | 依 IP 歸屬分流、處理私有位址 | 依網域類別分流 |
geosite:cn 代表讀取目前網域資料庫中的 cn 類別,不等於「所有以 .cn 結尾的網域」。同樣地,geoip:cn 是資料庫記錄的 IP 網段集合,無法據此判斷頁面使用哪種語言或服務商的身分。中文網站可能使用境外 CDN,國際服務也可能解析至中國大陸的位址。
v2rayN 是用來管理訂閱、產生設定及啟動核心的桌面用戶端;實際讀取這些規則的是核心。本文的 DAT 寫法適用於採用相應 Geo 資料機制的 Xray、V2Fly 設定。Android 版 v2rayNG 使用 Xray,v2flyNG 使用 V2Fly,但兩者的選單與檔案儲存方式不能直接套用桌面版的操作步驟。
更新前先釐清:訂閱、路由規則與 Geo 資料
更新訂閱主要會變更伺服器位址、連接埠、協定參數與節點清單。更新 Geo 檔案會變更分類資料;修改路由規則則是決定哪些類別使用哪個出口。這三者是不同操作。更新訂閱不代表 geosite.dat 已經更新;替換資料庫也不會自動新增直連規則。
在用戶端內更新
建議方式優先使用 v2rayN 的 Geo 檔案更新功能,讓用戶端依現有資源網址儲存資料。更新後重新載入設定,並查看記錄確認實際使用的檔案。
適用情境:日常維護、沿用用戶端的資源設定
手動替換檔案
先找出執行中核心的資源目錄,再備份並替換對應檔案。請自行確認來源、類別集合與檔案權限,不能只憑檔名判斷相容性。
適用情境:離線維護、修復內建更新功能失敗的特定問題
只更新訂閱
用來更新伺服器連線資訊。節點可用性有變化時應執行,但不應把它當成修復 Geo 類別缺漏或本機路由順序的方式。
適用情境:節點位址變更、訂閱方案內容調整
結論:先記錄來源,再進行更新
更新前記下目前使用的核心、Geo 資源網址與自訂類別名稱;如果規則依賴額外分類,更新後先確認該類別仍然存在,再恢復日常使用。
不同的資料維護專案即使都輸出 geosite.dat,收錄的類別也可能不同。某個資料庫能辨識 cn,不代表也提供路由範本引用的其他類別。更換來源時,應分別確認「類別是否存在」與「檔案能否下載」。
v2rayN 更新 Geo 檔案:依這 5 個步驟操作
以下說明適用於提供「檢查更新」選單的 v2rayN 桌面版。不同版本的選單位置可能有所調整;若介面沒有「更新 Geo 檔案」,請先確認目前版本的資源更新功能,不要以「更新訂閱」取代。操作前請保留目前可用的設定,避免同時修改節點、DNS 與路由。
-
記錄目前設定
查看目前使用的節點、核心與已啟用的路由設定,並記下自訂規則。若需確認本機監聽連接埠,請前往「設定」→「參數設定」,查看本機監聽相關選項;不要假設每種安裝方式都使用 10808。
-
執行資源更新
在主畫面開啟「檢查更新」→「更新 Geo 檔案」。查看用戶端訊息,確認下載作業已完成;若目前版本分別列出資源更新項目,請檢查 GeoIP 與 GeoSite 的結果。
-
處理下載失敗
若發生逾時,先確認系統時間、資源網址與目前節點是否可用。更新程式是否透過代理連線,取決於用戶端的實作與設定;開啟系統代理並不保證所有更新要求都會經過代理。
-
重新載入設定
更新成功後重新啟動核心;若不確定介面上的操作位置,可以結束後重新開啟用戶端。檔案已寫入磁碟,不代表執行中的核心已重新讀取;接著查看啟動記錄是否出現資源載入錯誤。
-
驗證路由結果
保留原有路由設定,分別測試一個預期直連的網域、一個預期走代理的網域,以及一個區域網路位址。比對連線記錄中的出口標籤,不要只看網頁是否能開啟。
手動替換後,也要確認讀取權限與檔案內容正確。若下載作業儲存的是錯誤回應頁面,即使檔名仍是 geoip.dat,核心也無法將它解析為資料庫。發生解析錯誤時,請先還原備份,再重新取得資源。
規則怎麼寫:geosite:cn 與 geoip:private 的用法
以下是用來說明的 routing 設定片段,並非可獨立啟動的完整設定。範例假設 outbounds 中已有標籤為 direct 的直連出口,且預設出口是代理。若沒有任何規則符合,Xray、V2Fly 通常會使用第一個出站;因此也必須一併檢查出站順序。
{
"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"
}
]
}
}
- 第一條:
geoip:private比對資料庫中的私有位址集合。它不是「所有內網網域」的簡稱,也不能保證不同來源收錄的特殊用途位址完全相同。 - 第二條:
geosite:cn比對網域集合。要求中必須包含網域,或透過適當設定的嗅探機制取得可用網域,才能進行這類比對。 - 第三條:
geoip:cn依目標 IP 判斷。要求本身包含 IP 時可直接判斷;網域要求是否會先解析,則取決於domainStrategy。 - 出口標籤:
direct只是標籤名稱,必須與實際出站設定一致。若使用不存在的標籤名稱,資料庫再新也無法修復設定。
IPIfNonMatch 表示網域未符合現有規則時,再嘗試解析 IP 進行比對。若在規則末尾加入一條能直接比對所有 TCP、UDP 要求的備援規則,網域階段可能已經符合,因此不會再進行預期中的 IP 補充比對。使用這種策略時,不要假設所有要求都會檢查 GeoIP。
更新後分流仍不正確:依 4 個層面逐一確認
「網站可以開啟」只能表示某條連線已建立,無法證明流量經過預期的出口。驗證 Geo 資料時,應固定節點、路由與測試目標,每次只變更一個條件。依序檢查以下四個層面,通常比不斷更換資料庫更容易找出原因。
- 檔案層:檢查更新時間、實際資源路徑與啟動記錄。若出現檔案不存在、讀取失敗或資料解析錯誤,請先修復資源載入,不要急著修改路由。
- 規則層:確認引用的類別是否存在、目前啟用的路由設定是否正確,以及前面的規則是否已攔截流量。規則由上而下比對,第一個符合的結果會生效。
- 網域層:確認核心收到的是網域還是 IP。瀏覽器自行解析、應用程式直接使用 IP,或透過 TUN 接管流量,都可能改變可供比對的資訊。
- 出口層:查看連線記錄中的出站標籤;若目前的記錄層級沒有記錄比對資訊,可暫時調整記錄設定。出口正確但速度較慢時,應改查節點與線路。
如果本機 SOCKS 入站確實監聽 127.0.0.1:10808,可以使用以下指令測試固定入口。socks5h 會讓 curl 將網域交由代理端處理,方便保留網域比對條件;此指令只能驗證要求的連線路徑,無法單獨證明有符合特定 GeoSite 類別。
curl --proxy socks5h://127.0.0.1:10808 --head https://example.com/
這裡的連接埠只是範例,必須與用戶端實際監聽的連接埠一致。若連線遭拒,通常應先檢查監聽連接埠與核心是否正在執行;若要求成功,則應查看相應時間的記錄,確認出口。測試區域網路目標時,也要區分「規則選擇直連」與「目標服務本身允許存取」,兩者並不相同。
常見問題:類別不存在、更新無效與維護頻率
提示 geosite 類別不存在,重新下載有用嗎?
先記下錯誤訊息中的類別名稱,再確認目前使用的資源來源。如果來源根本沒有提供這個類別,重複下載同一個檔案也不會改變結果。請還原原本的資料來源,或依照新來源提供的類別修改規則;修改前先備份路由設定。
顯示更新成功,為什麼中國大陸網站仍走代理?
先重新啟動核心,再確認已啟用的路由設定是否包含 geosite:cn 或 geoip:cn。接著檢查前面的規則、網域是否可供比對,以及目標是否收錄於目前的資料庫;下載成功一次,不代表這四項都正確。
資料庫需要每天手動更新嗎?
沒有統一規定必須每天更新。平時可定期檢查;遇到網站位址遷移、類別調整或明確發生錯誤分流時,再針對性更新。每次更換來源都請保留舊檔,避免將資料變動與其他設定修改混在同一次操作中。
Android 版可以直接沿用桌面版的資源目錄嗎?
不能直接沿用。v2rayNG 與 v2flyNG 的應用程式資料目錄及資源更新功能,會依各自版本而異。請優先使用應用程式提供的資源更新功能;匯入自訂設定時,先確認所用核心、類別名稱與資源檔案彼此相容。
最後,保留一份簡單的維護記錄:更新時間、使用的來源、是否更換路由範本,以及重新啟動後是否正常。Geo 資料提供分類,規則負責選擇出口,DNS 與入站方式則提供比對資訊。釐清各層的職責,才能判斷下一步應更新檔案、調整規則,還是確認應用程式是否真的經過用戶端。