V2Ray 分流設定教學:中國大陸網站直連、海外流量走代理

以 v2rayN 自訂路由為例,說明 domain、ip、outboundTag 欄位,以及直連、代理、封鎖規則的排序與常見寫法。

本文重點

適合已匯入節點並能連線,但想調整中國大陸直連與海外代理範圍的使用者。先釐清流量接管與核心路由的差異,再於 v2rayN 建立獨立路由方案。本文提供 V2Ray/Xray 格式的 JSON 片段、規則順序與驗證方式;範例並非完整用戶端設定,套用前請確認實際的出站標籤。

1. 系統代理與路由分流的差異

系統代理決定應用程式是否將連線交給 v2rayN 的本機入口;路由分流則決定核心收到連線後,要選擇直連、代理或封鎖。兩者位於不同層級。只啟用系統代理,不代表所有應用程式都會使用它;終端機、使用自有網路堆疊的程式,或設定代理例外的瀏覽器,都可能繞過這個入口。

應用程式請求 本機入口 規則比對 選擇出站 目標服務

本文以系統代理接管瀏覽器作為驗證環境,不同時調整 TUN。VMess、VLESS 等協定是代理出站的連線方式,並不決定中國大陸網域是否直連。訂閱提供節點資訊,也不能取代目前選用的本機路由方案。

10808
本文測試本機入口連接埠,請確認實際設定
3 種
直連、代理、封鎖出站用途
1 條
第一條符合的規則決定本次路由

10808 是下方指令使用的範例連接埠,不代表所有安裝環境的預設值。請先在「設定」→「參數設定」確認本機監聽連接埠與入口類型;只有該連接埠確實接受 HTTP 代理請求,才能直接使用文中的 HTTP 代理測試指令。

2. 在 v2rayN 建立獨立路由方案

先備份現有路由,再新增測試方案。v2rayN 介面會因版本及桌面介面類型而異,以下採用常見的中文選單名稱;請勿將路由規則 JSON 貼到訂閱網址欄位,也不要直接覆寫正在使用的暫存產生檔。

  1. 開啟「設定」→「路由設定」,記下目前啟用的方案,並使用介面提供的匯出功能保存副本。若目前版本沒有匯出選項,請先複製現有規則內容備份。
  2. 在路由設定中新增或複製一個方案,命名為「中國大陸直連測試」。透過規則清單的新增、編輯與排序功能建立規則,不要修改原有方案。
  3. 確認 geoip.dat 與 geosite.dat 可正常使用。若記錄檔顯示載入失敗或找不到標籤,請先處理規則檔案,再測試路由。
  4. 儲存後,在主視窗的路由選擇項目切換至新方案,並確認核心已成功重新啟動或重新載入設定。只編輯方案但未選取,不會影響目前連線。
  5. 發生異常時,切回原方案並重新建立測試連線。疑難排解時,請勿同時更換節點、DNS 與流量接管方式。

3. domain、ip 與 outboundTag 的比對方式

規則會依清單順序逐一檢查,第一條符合的規則決定出站。同一欄位中的多個候選條件通常是「或」的關係;同一條規則中不同條件欄位之間則是「且」的關係。例如同時填入 domain 和 port,必須網域與連接埠都符合才會命中。不要把網域與 IP 填在同一條規則中,以免誤以為符合其中一項就會命中。

目標比對欄位

domain
網域條件陣列,例如 domain:example.com
ip
IP、CIDR 或 geoip 分類陣列
port
目標連接埠,例如 443 或 80,443
network
網路類型,例如 tcp,udp

跨欄位組合會縮小比對範圍;請先用單一條件驗證,再逐步增加限制。

路由控制欄位

type
本文規則統一使用 field
outboundTag
指向已存在出站的 tag
domainStrategy
位於 routing 底下,控制路由階段的網域解析
rules
依優先順序排列的規則陣列

標籤是設定中的識別名稱,不是協定名稱;大小寫與拼字必須和出站一致。

寫法比對範圍注意事項
full:example.com只比對此完整網域不包含 www.example.com
domain:example.com此網域及其子網域適合用來管理個別網站例外
geosite:cn規則檔中的 cn 網域集合不等於所有中文網站
geoip:cn規則檔中的中國 IP 網段集合取決於目標 IP 或路由解析結果
geoip:private資料檔定義的私有與保留位址集合適用於區域網路等位址,實際範圍取決於資料來源
192.168.1.0/24指定 IPv4 子網路範圍比整個私有位址集合更精確

在這類規則中,不帶前綴的普通網域字串可能會以子字串方式比對,容易擴大命中範圍。若要精確控制網站範圍,建議明確使用 full: 或 domain:。此外,geosite:cn 與 geoip:cn 是兩種不同的資料分類,不能互相取代。

4. 直連、代理與封鎖規則範例

以下規則順序為:封鎖指定網域、私有位址直連、指定網域走代理、中國大陸網域直連、中國大陸 IP 直連,最後讓其他 TCP/UDP 流量走代理。範例中的 ads.example.com 和 remote.example.com 僅用來說明寫法,不代表實際廣告清單或可用的測試服務。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["domain:ads.example.com"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "domain": ["domain:remote.example.com"],
        "outboundTag": "proxy"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

這是一段 routing 片段,不包含入口、DNS 與出站定義。完整設定中必須已存在 direct、proxy、block 三個標籤。在 V2Ray/Xray 設定中,直連通常對應 freedom 出站,封鎖通常對應 blackhole 出站;代理標籤則指向所選節點的實際出站。不要為了湊齊範例而新增不完整的節點物件。

結論:依網域與 IP 分類分流,指定服務應另設規則

境外網站若使用中國大陸的 CDN 位址,仍可能命中 geoip:cn 而走直連。若要讓特定服務固定走代理,應新增明確的網域規則,並放在中國大陸分類之前,而非依賴「海外網站」這類自然語言標籤。

5. domainStrategy 與 DNS 的實際影響

網域規則要生效,核心必須先取得目標網域。若應用程式只提供 IP,geosite 無法憑空還原網站名稱。嗅探可能在部分連線中補充網域資訊,但不是所有協定與連線都能提供可辨識的網域,不應將它視為絕對保證。

策略路由行為疑難排解重點
AsIs不額外解析網域以供路由比對網域目標通常無法透過 geoip 規則分類
IPIfNonMatch網域階段未命中後,再解析並比對 IP 條件若已命中範圍寬廣的兜底規則,通常不會觸發這次解析
IPOnDemand比對過程遇到需要 IP 的規則時,嘗試進行解析較早的 IP 規則可能在網域例外之前決定出站

上一節保留了明確的代理兜底,因此使用 IPIfNonMatch 時,尚未解析且未命中中國大陸網域集合的網域,可能直接命中最後的代理規則,不會再透過 geoip:cn 補充判斷。範例中的中國大陸 IP 規則,主要涵蓋以 IP 形式交給核心的目標。若需求是依 IP 地理位置判斷尚未分類的網域,就必須重新設計兜底與解析策略,不能只切換一個選項。

6. 使用新連線與記錄檔驗證分流

網頁能開啟,只能證明某條連線路徑可用,無法證明流量經過預期的出站。重複使用的連線也可能沿用修改前的路徑。每次儲存並套用方案後,請關閉舊的測試連線再重新發出請求;必要時可暫時將記錄層級調整為 info,完成後再恢復原設定。

  1. 在 v2rayN 的記錄區確認核心已成功啟動。先排除規則檔案遺失、JSON 語法錯誤及出站標籤不存在等問題。
  2. 確認瀏覽器確實使用本機入口,並暫時停用會覆寫系統代理設定的擴充功能。請勿同時用瀏覽器快取頁面和其他流量接管方式來判斷規則。
  3. 分別測試中國大陸網域、未分類網域及可存取的區域網路位址。記下目標、時間與預期出站,再於相同時段的記錄檔中查找路由結果。
  4. 若目前版本的一般記錄檔不會顯示規則細節,可短暫啟用更詳細的記錄。避免長時間保留包含完整連線目標的記錄檔,分享前請先移除敏感資訊。
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://www.baidu.com/
curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

在 Windows PowerShell 中,若 curl 被對應為其他指令,請改用 curl.exe。這兩條指令僅用來透過指定入口建立新請求;HTTP 狀態碼、逾時或回應標頭本身,都無法證明出站選擇。部分服務不接受 HEAD 請求,也不能因此直接判定路由有誤。

7. 自訂路由常見問題

中國大陸網站仍走代理,該先檢查哪裡?

先在主視窗確認已選取剛編輯的路由方案,再檢查 geosite:cn 是否載入成功。針對記錄檔中實際出現的網域,新增一條 domain: 直連規則,並放在兜底之前。網站首頁、登入頁與圖片服務可能使用不同網域,請逐一驗證。

新增代理網域規則後,為什麼還是直連?

將指定網域規則移到範圍較廣的中國大陸分類之前,並確認請求有帶上網域資訊。若使用按需解析,較早的私有 IP 規則也可能先命中。請重新建立連線並查看出站標籤,不要只重新整理仍在沿用舊連線的分頁。

訂閱更新後,自訂分流規則會被覆寫嗎?

一般的節點訂閱更新與本機路由方案通常分開管理。更新後仍應檢查目前選用的路由;匯入完整設定或還原備份則可能變更路由內容。保留獨立方案與匯出副本,能更快確認變更發生在哪個層級。

同一段 JSON 可以直接貼到 Android 用戶端嗎?

核心設定片段不能當成通用的介面匯入格式。v2rayNG 使用 Xray,v2flyNG 使用 v2fly,相關欄位有共通基礎,但介面規則的編輯方式與核心版本各有差異。請先使用用戶端提供的路由編輯功能建立等效規則,再確認資料檔、標籤與實際生效結果。

穩定的分流設定不靠堆疊規則。保留少量明確的例外,讓中國大陸分類與最後的兜底規則各自發揮作用;每次只調整一處,並記錄可重現的測試目標。遇到「中國大陸網站未直連」或「指定服務未走代理」時,就能沿著入口、目標類型、規則順序與出站這四個環節逐步定位。

下載 v2rayN桌面與 Android 用戶端