適合已匯入訂閱,但中國大陸與其他地區的流量分流不如預期的 v2rayN 使用者。先分清網域資料庫與 IP 資料庫,再透過用戶端更新 Geo 檔案,確認目前核心實際讀取的位置,最後檢查規則順序與記錄檔。更新資料庫不等於更新訂閱,也不會自動調整路由順序;本文的 JSON 僅示範 Xray、V2Fly 的 routing 設定概念,並非可直接匯入的完整用戶端設定。
兩種 dat 檔案:一種比對網域,一種比對 IP
geosite.dat 儲存依地區、用途或服務分類的網域集合;geoip.dat 儲存依地區等標籤分類的 IP 位址範圍。路由中的 geosite:cn 用來查詢網域集合,geoip:cn 則查詢 IP 集合,兩者不能互換。資料庫提供「集合中有哪些項目」,路由規則則決定「符合條件後使用哪個出口」。
| 檔案 | 路由欄位與範例 | 使用條件 |
|---|---|---|
geosite.dat | domain: ["geosite:cn"] | 路由階段能取得網域,且資料庫包含 cn 分類。 |
geoip.dat | ip: ["geoip:cn"] | 連線目標是 IP,或核心依網域策略解析後再進行 IP 比對。 |
geoip.dat | ip: ["geoip:private"] | 資料庫提供 private 分類,用於私有及相關特殊用途的位址集合;實際涵蓋範圍依資料來源而異。 |
例如,瀏覽器將網域交給本機代理時,網域規則可以直接判斷;若應用程式只將目標 IP 交給代理,網域資料庫可能就沒有機會參與。啟用嗅探可在支援的流量中補充網域資訊,但不保證每條連線都能還原原始網域。單純更新 geosite 檔案,無法解決「應用程式根本沒有提供網域」的問題。
v2rayN 一鍵更新:先備份,再檢查更新記錄
建議優先使用用戶端內建的 Geo 更新功能。桌面介面常見的操作路徑是「檢查更新」→「更新 Geo 檔案」;部分介面會簡稱為「Geo 檔案」。選單位置與文字可能因版本或介面類型而異,請在更新選單中尋找 Geo 項目,不要選成「更新訂閱」或用戶端程式更新。
-
保留原有設定
先記下目前的核心類型、使用中的路由預設與 Geo 資料來源。若要保留本機設定副本,請先退出用戶端,再複製實際使用的設定目錄;不要將正在寫入的設定檔當成穩定備份。
-
更新資料庫
開啟「檢查更新」→「更新 Geo 檔案」,並等待作業完成。確認輸出資訊分別提到 geoip.dat 與 geosite.dat,不要只看到下載進度結束就關閉視窗。
-
確認更新結果
查看記錄中的成功或失敗訊息,並確認實際資料目錄中文件的修改時間與大小。檔案存在不代表內容可用,檔案時間變更也不表示核心已重新讀取。
-
重新載入核心
透過用戶端重新啟動目前的核心,或完全退出後重新開啟用戶端。接著查看啟動記錄,確認沒有讀取檔案失敗、分類不存在或路由設定錯誤等訊息。
-
驗證分流結果
分別測試一個應直連的網站、一個應走代理的網站,以及實際使用的區域網路服務。測試時維持相同節點、路由預設與代理模式,避免一次變更多個變因。
更新逾時時,先確認目前網路能否連線至用戶端設定的資料來源。若介面提供透過代理下載的選項,先選取已確認可用的節點再重試;若沒有此選項,不要將「設定系統代理」視為必定有效的補救方式,因為更新要求是否遵循系統代理取決於用戶端的實作。查看錯誤屬於連線逾時、權限不足或資料載入失敗,再決定下一步。
如何選擇更新方式:優先使用內建更新,手動替換用於疑難排解
用戶端內建更新
建議由 v2rayN 依目前設定下載並儲存資源,可減少放錯目錄或檔名錯誤的機會。更新後仍須重新啟動核心,並確認目前使用的規則確實引用了這些分類。
適用情境:日常維護、目前的資料來源可正常連線。
手動替換檔案
僅使用來源明確且格式符合目前核心的資料檔案。先停止核心並保留原檔,再將檔案替換至核心實際讀取的位置,使用相同檔名;若發生載入錯誤,請還原原始副本。
適用情境:內建下載失敗、需要確認目錄或排查資料相容性問題。
不要照著教學中的固定目錄猜測檔案位置。安裝方式、作業系統平台與用戶端版本都會影響資源目錄。請先參考用戶端設定、啟動記錄與實際檔案位置,確認核心讀取路徑。主程式旁邊有 dat 檔案,不代表執行中的核心正在使用它。
- 格式必須相符:本文的 dat 規則語法適用於 Xray、V2Fly;其他資源格式不能只改副檔名後直接使用。
- 來源必須一致:兩個檔案最好透過同一套可信賴的維護流程取得,降低分類定義不一致造成的排查成本。
- 失敗時請還原:替換後若無法啟動,先還原上一份可用檔案,再查看具體錯誤;不要同時重裝用戶端、更換節點及修改 DNS。
路由寫法與順序:具體規則在前,預設備援規則在後
Xray、V2Fly 常見的 field 路由會依序判斷,由第一條符合的規則決定出口。若將涵蓋所有 TCP、UDP 的規則放在最前面,後面的中國大陸直連規則就很難生效。以下示範五條規則:私有位址優先、中國大陸網域直連、中國大陸 IP 直連,最後由代理規則處理其餘流量。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": ["geoip:private"],
"outboundTag": "direct"
},
{
"type": "field",
"domain": ["domain:localhost"],
"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 是範例出口標籤,不是核心自動建立的關鍵字。完整設定必須已定義同名的出站標籤;用戶端產生的標籤可能不同,請以目前實際設定為準。不要將整段 JSON 貼進只接受單條規則的輸入欄位,也不要直接覆蓋 v2rayN 自動產生的執行設定,因為下次啟動時可能會重新產生。
- 優先處理私有位址:讓區域網路目標先有機會直連,但這不能取代系統路由、防火牆或 TUN 排除設定。
- 網域規則請分開設定:
geosite:cn放在domain陣列,geoip:cn放在ip陣列。 - 不要誤設為條件同時成立:同一條 field 規則同時設定 domain 和 ip 等不同條件時,通常要求所有條件都符合;若要表達「網域或 IP」,拆成兩條規則會更清楚。
- 自訂例外規則應放前面:若某個網站必須走代理,請將明確指定該網域的規則放在範圍較廣的中國大陸直連規則之前。
DNS 與規則庫:檔案更新後,結果也可能不變
domainStrategy 決定路由比對時如何處理網域,不等同於完整的 DNS 設定。AsIs 不會為路由 IP 比對主動解析網域;IPIfNonMatch 會在網域未符合時嘗試解析,再繼續判斷;IPOnDemand 則會在比對過程需要 IP 時觸發解析。選用後兩者會牽涉解析器、網路連線能力與隱私取捨,不能只看「中國大陸網站是否直連」。
判斷某個網站是否應直連時,也不要只憑 IP 所屬地區判定網站所在地。內容傳遞網路可能使同一網域在不同網路中解析到不同位址,資料庫也有各自的更新週期。對有明確需求的網站,使用更精確的網域規則,通常比不斷調整地區規則更容易維護。
- 先確認連線進入核心時帶的是網域還是 IP,並確認應用程式是否確實經過代理。
- 接著查看路由記錄中的目標與出站標籤;必要時可暫時提高記錄詳細程度,排查完畢後再還原原設定。
- 最後檢查 DNS 解析與資料庫分類,不要只憑瀏覽器顯示的出口位址判斷每一筆資源要求。
更新後仍未生效:依錯誤類型處理
更新成功了,為什麼中國大陸網站還是走代理?
先確認目前啟用的是哪一組路由預設,再檢查前面是否有「全部走代理」這類範圍過廣的規則。確認目前模式允許分流後,再查看目標網域是否已送入核心,以及記錄中顯示的實際出站標籤。更新資料庫不會自動切換路由預設。
記錄顯示 geosite 分類不存在,需要更換節點嗎?
先不要更換節點。記下錯誤中的分類名稱,確認目前使用的資料來源是否提供該分類,以及核心讀取的是否為剛更新的檔案。還原舊檔或移除不受支援的分類引用,重新載入設定後再測試連線。
設定了 geoip:private,區域網路裝置還是無法連線?
先確認規則位於代理預設備援規則之前,再確認用戶端是否接管了這條連線。若要連線的是路由器管理位址,可直接使用實際位址測試,判斷是網域解析失敗還是 IP 連線失敗;接著檢查 TUN 路由、區域網路存取權限與裝置防火牆。
一更新就無法啟動,可以只還原資料庫嗎?
可以先停止核心,還原原本可用的兩個檔案,再重新啟動。若還原後仍出現錯誤,請檢查近期是否也修改了路由或核心類型。分別還原資料庫、路由與核心,才能找出問題是由哪項變更造成。
依需求安排維護頻率即可,不必每次連線前都更新。更換資料來源、發現分類遺漏或排查規則異常時,再針對問題更新。更新訂閱負責節點資料,Geo 更新負責規則集合,編輯路由則決定流量去向;將這三件事分開處理,排查記錄才有參考價值。若要進一步確認欄位,請參閱路由設定參考;若連線本身失敗,請先依照連線問題排查確認基本連線。
用戶端與平台選擇
依作業系統選擇 v2rayN 安裝套件,再匯入訂閱並確認基本連線。先確認連線可用,再逐項調整路由與資料庫,發生異常時也更容易還原。