路由分流 預計閱讀 14 分鐘

V2Ray 路由規則設定實戰:中國大陸直連與境外代理的分流寫法

以 v2rayN 路由設定為例,說明 domain、ip、geosite 規則的比對順序與寫法,提供中國大陸直連、境外代理、廣告攔截三組常用規則,並整理規則衝突時的排查方法。

路由分流決定一條連線最終進入哪個出站。節點負責建立代理連線,路由規則則負責判斷哪些請求交由代理、哪些請求直接連線、哪些請求立即阻擋。兩者屬於不同層次:更換 VMess 或 VLESS 節點不會自動修正分流規則,更新訂閱通常也不會覆蓋本機自訂路由。

本文速覽

本文適合已能在 v2rayN 中連線至節點,但需要設定中國大陸直連與境外代理的使用者。內容涵蓋由上而下的比對機制、v2rayN 選單操作、domain 與 ip 寫法、GeoSite 與 GeoIP 資料引用、廣告網域阻擋,以及透過日誌定位錯誤比對的方法。

V2Ray 路由規則先理解比對模型

V2Ray 與 Xray 的路由規則會依照設定陣列中的順序逐一檢查。連線符合第一條完整規則後,就會決定出站,後續規則不再參與判斷。因此,範圍小、意圖明確的規則應放在前面,範圍較大的兜底規則則放在最後。廣告阻擋通常先於中國大陸直連,中國大陸直連又先於最終代理兜底。

規則中的 domainipportnetworkprotocol 是比對條件,outboundTag 是比對後的去向。v2rayN 產生的設定中,常見出站標籤為 proxydirectblock,但實際標籤仍應以目前客戶端匯出的設定為準,不能只憑名稱猜測。

10808
本機 SOCKS 預設連接埠範例
10809
本機 HTTP 預設連接埠範例
3 類
代理、直連、阻擋出站
1 次
命中第一條後停止比對

連接埠數值會隨客戶端設定變動,上述 1080810809 只用來說明本機入口與遠端目標連接埠不是同一個概念。路由中的 port: 443 比對的是存取目標的 443 連接埠,不是 v2rayN 的本機監聽連接埠。混淆兩者,會導致瀏覽器流量完全繞過預期規則。

  • 網域請求:優先使用網域規則判斷,例如 domain:example.comfull:example.comgeosite:cn
  • IP 請求:直接存取 IP 時,可使用 geoip:cngeoip:private 或 CIDR 網段進行比對。
  • 網域解析為 IP:是否為了比對 IP 規則而解析網域,取決於 domainStrategy
  • 最終去向:沒有規則命中時,連線會進入路由設定之外定義的預設出站,結果取決於客戶端的產生方式。

在 v2rayN 中建立可回復的路由設定

以下操作以 v2rayN 7.15.x 的繁體中文介面為參考。小版本可能會調整選單排列,但核心檢查路徑仍是參數設定、路由設定與目前路由模式。修改前先記錄原本的模式,並確認至少有一個節點已通過基本連線測試;否則節點故障與路由錯誤在日誌中可能呈現相似的逾時結果。

  1. 確認核心

    開啟「設定」→「參數設定」→「Core 類型」,確認目前協定對應的核心。VLESS 節點通常由 Xray 核心處理,舊有 VMess 設定則應依訂閱的實際欄位載入。

  2. 記錄連接埠

    在「設定」→「參數設定」→「基本設定」查看本機 SOCKS 與 HTTP 監聽連接埠,並記錄區域網路連線開關狀態,避免測試工具連到錯誤的連接埠。

  3. 複製規則

    進入「設定」→「路由設定」,先複製目前可用的規則集再進行編輯。不要直接覆寫唯一方案,保留原規則可在一分鐘內回復。

  4. 調整順序

    依序放置廣告阻擋、私有位址直連、中國大陸網域直連、中國大陸 IP 直連與最終代理規則,並確認每一項使用的出站標籤都存在。

  5. 套用並重新啟動

    儲存後選取新的路由方案,重新啟動核心並再次開啟系統代理。只儲存編輯內容而不切換目前方案,不會改變正在執行的設定。

系統代理只會影響遵循系統代理設定的程式。若程式自行建立直連、固定使用其他代理連接埠,或快取了舊連線,修改 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:cngeoip:cn 的一般分流。

  1. 存取路由器管理位址或區域網路服務,確認 geoip:private 會進入直連。
  2. 存取常用的中國大陸網站,查看日誌中的目標網域與最終出站是否為 direct
  3. 存取需要代理的目標,確認它沒有被過於寬泛的自訂網域規則提前導向直連。
  4. 開啟一個已知含有分類廣告請求的測試頁面,觀察被阻擋的網域,不要只憑頁面留白來判斷。

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:cngeoip: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 連接埠。若連線已進入核心但仍直接逾時,再檢查命中的出站標籤與節點狀態。

  1. 固定測試對象:選擇一個完整網域,不要把首頁中不斷變動的第三方資源當作唯一依據。
  2. 清除 DNS 快取:規則依賴 IP 判斷時,舊的解析記錄可能讓前後測試落在不同網段。
  3. 核對第一個命中:從規則頂端往下尋找第一條能涵蓋目標的條件,不要只檢查自己預期命中的那一條。
  4. 單獨驗證出站:暫時讓目標完整網域進入指定出站,確認代理或直連本身是否可用。
  5. 逐條恢復規則:從最小規則集開始加入分類項目,每次只變更一個條件。

可長期維護的分流基準

穩定的規則集不需要堆疊大量重複網域。保留廣告阻擋、私有位址直連、中國大陸網域直連、中國大陸 IP 直連與最終代理五層,再為確實有問題的網站增加少量精確例外,通常比匯入多個來源不明、條件互相覆蓋的規則清單更容易維護。

GeoSite 與 GeoIP 資料應定期更新,但更新後也要觀察關鍵業務網域是否改變分類。分類資料提供批次判斷,不等於針對目前網路環境的絕對結論。遇到能穩定重現的錯誤分類時,使用 full: 規則建立本機例外,並在註解或規則名稱中記錄新增原因與日期。

  • 規則名稱應寫明用途,例如「廣告阻擋」「區域網路直連」「中國大陸網域直連」「最終代理」。
  • 精確例外放在集合規則之前,寬泛的網路兜底只保留一條並放在最後。
  • 每次修改後,分別測試區域網路、中國大陸網域、境外網域與直接 IP 四類目標。
  • 更新 v2rayN、v2rayNG 或 v2flyNG 後,核對目前核心、路由方案與本機連接埠是否維持原值。
  • 訂閱更新後若節點協定從 VMess 改為 VLESS,先驗證節點連通,再繼續判斷路由結果。

最終判斷標準不是頁面是否「看起來能開啟」,而是日誌中的目標、命中規則與出站標籤能彼此對應。只要規則順序明確、例外範圍足夠小、兜底位置固定,中國大陸直連與境外代理的行為就能重複驗證,也能在客戶端升級或訂閱變更後快速定位偏差。

下載 v2rayN 前往客戶端安裝包頁面