路由分流決定一條連線最終進入哪個出站。節點負責建立代理連線,路由規則則負責判斷哪些請求交由代理、哪些請求直接連線、哪些請求立即阻擋。兩者屬於不同層次:更換 VMess 或 VLESS 節點不會自動修正分流規則,更新訂閱通常也不會覆蓋本機自訂路由。
本文適合已能在 v2rayN 中連線至節點,但需要設定中國大陸直連與境外代理的使用者。內容涵蓋由上而下的比對機制、v2rayN 選單操作、domain 與 ip 寫法、GeoSite 與 GeoIP 資料引用、廣告網域阻擋,以及透過日誌定位錯誤比對的方法。
V2Ray 路由規則先理解比對模型
V2Ray 與 Xray 的路由規則會依照設定陣列中的順序逐一檢查。連線符合第一條完整規則後,就會決定出站,後續規則不再參與判斷。因此,範圍小、意圖明確的規則應放在前面,範圍較大的兜底規則則放在最後。廣告阻擋通常先於中國大陸直連,中國大陸直連又先於最終代理兜底。
規則中的 domain、ip、port、network 與 protocol 是比對條件,outboundTag 是比對後的去向。v2rayN 產生的設定中,常見出站標籤為 proxy、direct 與 block,但實際標籤仍應以目前客戶端匯出的設定為準,不能只憑名稱猜測。
連接埠數值會隨客戶端設定變動,上述 10808 與 10809 只用來說明本機入口與遠端目標連接埠不是同一個概念。路由中的 port: 443 比對的是存取目標的 443 連接埠,不是 v2rayN 的本機監聽連接埠。混淆兩者,會導致瀏覽器流量完全繞過預期規則。
- 網域請求:優先使用網域規則判斷,例如
domain:example.com、full:example.com或geosite:cn。 - IP 請求:直接存取 IP 時,可使用
geoip:cn、geoip:private或 CIDR 網段進行比對。 - 網域解析為 IP:是否為了比對 IP 規則而解析網域,取決於
domainStrategy。 - 最終去向:沒有規則命中時,連線會進入路由設定之外定義的預設出站,結果取決於客戶端的產生方式。
在 v2rayN 中建立可回復的路由設定
以下操作以 v2rayN 7.15.x 的繁體中文介面為參考。小版本可能會調整選單排列,但核心檢查路徑仍是參數設定、路由設定與目前路由模式。修改前先記錄原本的模式,並確認至少有一個節點已通過基本連線測試;否則節點故障與路由錯誤在日誌中可能呈現相似的逾時結果。
-
確認核心
開啟「設定」→「參數設定」→「Core 類型」,確認目前協定對應的核心。VLESS 節點通常由 Xray 核心處理,舊有 VMess 設定則應依訂閱的實際欄位載入。
-
記錄連接埠
在「設定」→「參數設定」→「基本設定」查看本機 SOCKS 與 HTTP 監聽連接埠,並記錄區域網路連線開關狀態,避免測試工具連到錯誤的連接埠。
-
複製規則
進入「設定」→「路由設定」,先複製目前可用的規則集再進行編輯。不要直接覆寫唯一方案,保留原規則可在一分鐘內回復。
-
調整順序
依序放置廣告阻擋、私有位址直連、中國大陸網域直連、中國大陸 IP 直連與最終代理規則,並確認每一項使用的出站標籤都存在。
-
套用並重新啟動
儲存後選取新的路由方案,重新啟動核心並再次開啟系統代理。只儲存編輯內容而不切換目前方案,不會改變正在執行的設定。
系統代理只會影響遵循系統代理設定的程式。若程式自行建立直連、固定使用其他代理連接埠,或快取了舊連線,修改 v2rayN 路由不會立即改變其流量。測試時應關閉並重新開啟目標程式,同時確認系統代理已指向目前 v2rayN 的監聽連接埠。
中國大陸直連、境外代理與廣告阻擋的組合
一套容易維護的規則,應先處理確定性最高的流量。廣告分類命中後進入阻擋出站;區域網路、回環位址與中國大陸資源進入直連;剩餘 TCP、UDP 流量進入代理。如此不必列出所有境外網域,新網站也會自然落入最後的代理兜底。
中國大陸直連
- 網域集合
- geosite:cn
- IP 集合
- geoip:cn
- 私有網段
- geoip:private
- 出站標籤
- direct
私有位址規則應放在代理兜底之前,避免路由器管理頁面與區域網路裝置進入遠端節點。
阻擋與代理
- 廣告集合
- geosite:category-ads-all
- 阻擋標籤
- block
- 兜底網路
- tcp,udp
- 代理標籤
- proxy
兜底項目必須位於最後;放在頂端會攔截後續的中國大陸直連規則。
對應的核心設定可以寫成以下結構。此片段只展示 routing 物件,放入完整設定時仍需要既有的入站、出站、DNS 與節點參數。若 v2rayN 的路由編輯器使用圖形欄位,應依相同順序逐條輸入,而不是把整個物件貼到單一網域輸入框。
{
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
},
{
"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"
}
]
}
}
domainStrategy: IPIfNonMatch 表示網域未被網域規則命中時,可以解析其 IP,再嘗試比對 IP 規則。它不是「先查 IP 再查網域」,也不會無條件提前解析所有網域。此模式適合同時使用 geosite:cn 與 geoip:cn 的一般分流。
- 存取路由器管理位址或區域網路服務,確認
geoip:private會進入直連。 - 存取常用的中國大陸網站,查看日誌中的目標網域與最終出站是否為
direct。 - 存取需要代理的目標,確認它沒有被過於寬泛的自訂網域規則提前導向直連。
- 開啟一個已知含有分類廣告請求的測試頁面,觀察被阻擋的網域,不要只憑頁面留白來判斷。
domain、ip、GeoSite 與 GeoIP 的排序方式
domain 規則適合表示網站歸屬與明確網域。full:api.example.com 只會比對完整主機名稱,domain:example.com 可比對主網域及其子網域,regexp: 則用於確有必要的正規表示式條件。正規表示式的效能負擔與誤比對風險較高,能以完整網域或後綴表示時,不應優先選用正規表示式。
geosite:cn 是依網域分類整理的資料集合,geoip:cn 則是依 IP 網段整理的資料集合。兩者不是同一份資料的兩種寫法。網站使用境外託管位址但服務被歸類為中國大陸時,GeoSite 可能會先將其導向直連;網域不在集合中但解析到中國大陸 IP 時,IPIfNonMatch 可以繼續讓 GeoIP 規則接手。
推薦方案:網域優先、IP 補充、代理兜底
網域判斷層
- 廣告分類先進入 block
- 精確例外放在分類集合之前
- geosite:cn 進入 direct
- 未命中時保留原網域供日誌查看
IP 與兜底層
- geoip:private 保護區域網路存取
- geoip:cn 補充中國大陸 IP 判斷
- 最後的 tcp,udp 進入 proxy
- DNS 解析結果應與目前網路環境一致
規則順序的核心不是「網域永遠高於 IP」,而是先放置更明確的例外,再放分類集合,最後放能涵蓋所有連線的兜底條件。
自訂例外必須放在集合規則之前。例如某個中國大陸分類網域在目前網路環境下直連失敗,可以新增一條完整網域代理規則,並將它放在 geosite:cn 前面。反過來,若某個境外服務只允許本地網路直連,也應把精確直連規則放在代理兜底之前。
{
"type": "field",
"domain": [
"full:api.example.com",
"domain:static.example.net"
],
"outboundTag": "proxy"
}
三種分流寫法的適用範圍
分流方案沒有脫離環境後仍固定最優的選項。日常桌面使用通常適合分類資料加兜底;需要嚴格控制單一業務網域時適合精確規則;短期診斷則可暫時使用全域代理,確認問題是否來自分流層。診斷結束後應恢復容易理解的規則集,而不是長期依賴全域模式掩蓋錯誤比對。
分類資料加代理兜底
推薦使用 geosite:cn、geoip:cn 與私有位址直連,最後由 TCP、UDP 規則統一進入代理。規則數量少,更新地理資料後即可涵蓋新增網域與網段。
適合:日常瀏覽、切換訂閱節點、長期維護
精確網域白名單
依照 full: 或 domain: 維護直連與代理目標,行為可預測,但網域變更時需要手動補充。業務包含多個介面網域時,應搭配日誌完整收集。
適合:固定辦公服務、少量指定網域、嚴格例外控管
暫時全域代理
讓大多數受管理的連線進入代理,用於判斷節點與目標服務是否連通。它無法驗證中國大陸直連規則,也可能導致區域網路或本機服務異常。
適合:短時間排障、驗證節點出口、比較分流結果
v2rayNG 使用 Xray 核心時,domain、GeoSite、GeoIP 與規則順序的基本邏輯一致,但 Android 端還會受到分應用代理、略過區域網路與系統網路切換的影響。v2flyNG 使用 v2fly 核心時,應以該核心實際支援的設定欄位為準。不要直接把桌面端產生的完整設定,逐項照搬成行動端介面規則。
- 同一份訂閱只負責提供節點,不代表不同客戶端會產生完全相同的路由設定。
- VMess 與 VLESS 描述的是節點連線方式,不決定某個目標網域應該直連還是使用代理。
- 切換節點後,路由通常仍會生效,但若自訂修改了出站標籤,就需要重新核對引用。
- 啟用分應用代理後,未被選取的應用程式可能不會進入核心,自然也不會留下對應的路由日誌。
規則衝突與分流失準的排查順序
排查應從「請求是否進入核心」開始,再判斷「命中了哪條規則」,最後檢查「對應出站是否能連線」。反覆更換節點只能驗證代理出站的一部分,無法發現系統代理連接埠錯誤、規則順序錯誤、Geo 資料過期或 DNS 解析不一致。
建議在 v2rayN 主介面開啟日誌視窗,將日誌等級暫時調整到能觀察路由結果的級別,然後只存取一個目標網域。一次開啟多個網頁會產生大量背景請求,廣告、圖片與介面網域混在一起,難以確認哪條連線對應目前測試的頁面。
| 現象 | 優先檢查 | 判斷依據 | 處理方式 |
|---|---|---|---|
| 中國大陸網站走代理 | 代理兜底是否位於頂端 | 日誌先顯示 proxy,後續 direct 規則沒有執行機會 | 將 tcp,udp 兜底移至規則清單末尾 |
| 指定境外網域直連 | 是否被過於寬泛的 domain 規則包含 | 目標子網域命中上層網域後綴或 GeoSite 分類 | 新增 full 精確代理規則並置於前方 |
| 網域與 IP 測試結果不同 | domainStrategy 與 DNS | 網域未進入 IP 比對,或解析結果來自不同網路 | 核對 IPIfNonMatch 與目前 DNS 設定 |
| 區域網路位址無法開啟 | geoip:private 的位置 | 私有位址被最後的代理規則提前攔截 | 將私有網段直連放在代理兜底之前 |
| 修改後沒有變化 | 目前路由方案與核心狀態 | 編輯的是副本,但執行中仍選取舊方案 | 切換方案、重新啟動核心並重新建立目標連線 |
| 部分新網域分流異常 | GeoSite 與 GeoIP 資料日期 | 分類檔案較舊,目標網域或網段尚未收錄 | 更新資料檔案後重新啟動核心並再次測試 |
如果日誌中完全看不到目標連線,先檢查程式是否遵循系統代理,以及是否重用了修改前建立的長連線。瀏覽器可關閉所有視窗後重新開啟;命令列工具則應明確指定 v2rayN 的 HTTP 或 SOCKS 連接埠。若連線已進入核心但仍直接逾時,再檢查命中的出站標籤與節點狀態。
- 固定測試對象:選擇一個完整網域,不要把首頁中不斷變動的第三方資源當作唯一依據。
- 清除 DNS 快取:規則依賴 IP 判斷時,舊的解析記錄可能讓前後測試落在不同網段。
- 核對第一個命中:從規則頂端往下尋找第一條能涵蓋目標的條件,不要只檢查自己預期命中的那一條。
- 單獨驗證出站:暫時讓目標完整網域進入指定出站,確認代理或直連本身是否可用。
- 逐條恢復規則:從最小規則集開始加入分類項目,每次只變更一個條件。
可長期維護的分流基準
穩定的規則集不需要堆疊大量重複網域。保留廣告阻擋、私有位址直連、中國大陸網域直連、中國大陸 IP 直連與最終代理五層,再為確實有問題的網站增加少量精確例外,通常比匯入多個來源不明、條件互相覆蓋的規則清單更容易維護。
GeoSite 與 GeoIP 資料應定期更新,但更新後也要觀察關鍵業務網域是否改變分類。分類資料提供批次判斷,不等於針對目前網路環境的絕對結論。遇到能穩定重現的錯誤分類時,使用 full: 規則建立本機例外,並在註解或規則名稱中記錄新增原因與日期。
- 規則名稱應寫明用途,例如「廣告阻擋」「區域網路直連」「中國大陸網域直連」「最終代理」。
- 精確例外放在集合規則之前,寬泛的網路兜底只保留一條並放在最後。
- 每次修改後,分別測試區域網路、中國大陸網域、境外網域與直接 IP 四類目標。
- 更新 v2rayN、v2rayNG 或 v2flyNG 後,核對目前核心、路由方案與本機連接埠是否維持原值。
- 訂閱更新後若節點協定從 VMess 改為 VLESS,先驗證節點連通,再繼續判斷路由結果。
最終判斷標準不是頁面是否「看起來能開啟」,而是日誌中的目標、命中規則與出站標籤能彼此對應。只要規則順序明確、例外範圍足夠小、兜底位置固定,中國大陸直連與境外代理的行為就能重複驗證,也能在客戶端升級或訂閱變更後快速定位偏差。