本文重點

本文適合已匯入節點,並想調整 v2rayN 分流方式的使用者。本文以 Xray 的 routing 設定為例,說明網域集合、IP 集合與出站標籤如何搭配,並提供區域網路直連、中國大陸直連、其餘流量走代理的規則範例,以及自訂網域、全域代理與日誌驗證方法。範例僅涵蓋路由部分,不含節點設定。

一、路由基本概念:流量進入核心後才會套用規則

v2rayN 負責管理設定,Xray 核心則處理送入代理入站的連線。瀏覽器使用系統代理時,相關請求才會送到本機代理連接埠;若程式略過系統代理直接連網,修改 Xray 路由通常不會影響它。桌面版 TUN 是另一種流量接管方式,是否啟用及所需權限,請依目前的平台與客戶端功能確認。

本文使用 Xray 的 JSON 欄位。v2rayN 可管理不同核心,但不同核心的規則格式不能直接混用。Android 上的 v2rayNG 使用 Xray,v2flyNG 使用 V2Fly;即使概念相近,介面位置、產生的設定檔與資料檔版本也不宜直接套用桌面版設定。

  1. 確認目前使用的核心

    開啟「設定」→「參數設定」,確認目前協定所選用的核心;部分版本會將此項標示為「Core 類型」。接著查看啟動日誌中的核心名稱,確認實際執行的是 Xray,不要只依節點協定判斷。

  2. 備份路由設定

    前往「設定」→「路由設定」,先記下目前選用的方案與規則順序。編輯前請備份現有方案;若目前版本提供匯出功能,先匯出再修改,以免覆蓋仍在使用的自訂規則。

  3. 檢查代理入口

    在「設定」→「參數設定」中確認本機監聽連接埠,再檢查瀏覽器或系統代理使用的位址與連接埠是否相同。請勿將遠端節點連接埠填成本機代理連接埠。

  4. 套用設定並查看日誌

    儲存後,在主畫面的路由選項中切換至目標方案,並依目前版本提示套用設定或重新啟動核心。選單位置可能因版本而異,請以產生的設定檔與啟動日誌為準。

二、geosite、geoip 與 outboundTag 的用途

geosite 是網域集合,geoip 是 IP 網段集合。兩者都不是線上查詢服務,而是核心讀取的資料內容。geosite:cn 代表目前資料檔中的 cn 網域集合,不等同於所有以特定後綴結尾的網域;geoip:cn 則會比對目前資料中的中國大陸 IP 網段。

網域規則

欄位
domain
集合寫法
geosite:cn
完整網域
full:example.com
網域及其子網域
domain:example.com

請求必須帶有網域,或透過已啟用的相關機制取得可供比對的網域。

IP 與出站規則

欄位
ip
私有位址集合
geoip:private
地區集合
geoip:cn
目標出站
outboundTag

出站標籤必須與目前完整設定中的 outbounds 標籤一致,不能只靠名稱猜測。

outboundTag 只用來指定既有出站,不會建立出站。本文以 direct 代表直連出站,以 proxy 代表已設定的代理出站。這些標籤不是 Xray 的保留名稱;若產生的設定檔使用其他標籤,必須一併替換。規則指定 proxy,但沒有同名出站,就無法建立有效的代理路徑。

三、基本方案:區域網路與中國大陸直連,其餘走代理

常見順序為「區域網路例外 → 自訂例外 → 中國大陸網域 → 中國大陸 IP → 代理兜底」。以下先提供不含自訂例外的基本片段。這是包含 routing 的局部物件,不含 inbounds、outbounds 與節點驗證參數,無法單獨作為完整客戶端設定啟動。

{
  "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"
      },
      {
        "type": "field",
        "network": "tcp,udp",
        "outboundTag": "proxy"
      }
    ]
  }
}

第一條規則會讓已知的私有目標位址直連,適用於存取路由器、區域網路檔案服務與內網裝置。第二條優先依網域資料判斷。第三條處理直接以 IP 為目標的連線,以及需要依解析結果判斷的網域連線。最後一條明確接管其餘 TCP、UDP 流量,避免依賴完整設定中第一個出站的預設行為。

以網域為主的日常分流,可將 geosite:cn 作為主要依據,再用 geoip:cn 補充分流以 IP 為目標的連線。若內網服務使用企業自訂網域,建議將明確的網域後綴加入直連規則,不要假設私有 IP 規則一定會讓所有內網網域觸發解析。

四、網域解析策略:如何選擇 AsIs 與 IPOnDemand

routing.domainStrategy 決定路由比對何時需要 IP,與 DNS 模組的伺服器清單不同,也不同於直連出站中同名的設定。能否取得正確位址,還取決於 DNS 設定、網路環境,以及請求是否保留網域。只修改一個策略欄位,無法一併解決解析污染、DNS 請求路徑與所有應用程式的流量接管問題。

AsIs:優先比對網域

建議

路由階段不會為網域額外解析 IP。使用明確的網域集合與末尾代理兜底,規則行為較容易理解;IP 規則主要處理原本就以 IP 為目標的連線。建立連線時仍可能需要解析,並非完全停止 DNS 查詢。

適用情境:網域規則完整,希望減少路由階段對解析的依賴。

IPOnDemand:按需解析

網域連線遇到需要比對的 IP 規則時,可以觸發解析,再檢查位址集合。基本片段中的第一條就是私有 IP 規則;切換至此策略後,網域請求可能較早觸發解析。

適用情境:確實需要依解析後的 IP 判斷內網或地區歸屬,且已安排好 DNS 路徑。

IPIfNonMatch:未命中才解析

先嘗試比對,未命中時再以解析結果重試。此策略與明確的通配兜底規則有順序上的關係;若要用它判斷地區 IP,必須重新檢視兜底規則與預設出站。

適用情境:了解完整的出站順序,並能逐項驗證未命中時的行為。

若改用 IPOnDemand,且希望特定網域一律走代理,請將這些網域規則移到範圍較廣的 IP 規則之前。否則,網域解析出的位址若符合直連條件,就可能先命中直連規則。檢查時必須一併考量規則優先順序與 DNS 結果。

五、自訂規則:網域例外、連接埠條件與本機集合

自訂規則建議先從少數明確網域著手。以下兩條分別代表「指定主機走代理」與「整個示範網域及其子網域直連」。示範網域僅用於說明語法,請替換成實際管理的網域;勿將 URL 的 https://、路徑或查詢參數填入網域條件。

[
  {
    "type": "field",
    "domain": ["full:api.example.com"],
    "outboundTag": "proxy"
  },
  {
    "type": "field",
    "domain": ["domain:example.com"],
    "outboundTag": "direct"
  }
]

這兩條規則應放在可能涵蓋它們的廣泛規則之前,並將範圍較精確的 api.example.com 排在前面。若順序相反,子網域會先命中整個網域的直連規則,後面的精確代理規則就不會生效。若同時涉及內網位址,請明確決定優先保障安全存取邊界,還是優先套用網域例外,不要一律照搬相同順序。

53
傳統 DNS 常用的目標連接埠
443
HTTPS 常用的目標連接埠
/16
192.168.0.0 私有網段的前綴長度

連接埠條件指的是目標連接埠。例如,將 "port": "443" 與網域條件放在同一條規則中,代表「符合該網域且目標連接埠為 443」,而不是該網域的所有連線。只設定連接埠 53 的代理規則,也無法涵蓋所有使用其他傳輸方式的 DNS 流量,更不能取代 DNS 模組設定。

自訂集合的兩種維護方式

六、全域代理:保留區域網路直連,或讓所有流量走節點

設定「全域代理」前,應先界定涵蓋範圍。v2rayN 的路由方案只控制已進入核心的流量,不代表系統中的所有處理程序都會自動被接管。未受系統代理涵蓋的程式仍可能自行連網;UDP 是否可用,也取決於入站方式、節點協定與伺服器端能力。

目標保留規則注意事項
中國大陸與境外分流私有位址直連、中國大陸直連,其餘走代理依賴網域與 IP 資料分類
公網流量全域代理私有位址直連,其餘走代理內網網域需另外評估
所有流量走代理僅保留代理兜底規則可能無法存取路由器與內網裝置

若只是要暫時排查某個網站,不必立刻刪除所有分流規則。先新增一條精確的網域代理規則,放在涵蓋該網域的規則之前,再測試網站的主網域與 API 網域。單一網頁可能同時連線至登入、靜態資源與下載網域,只修改網址列中的主機名稱不一定涵蓋整個請求流程。

修改節點協定也無法取代路由排查。VMess、VLESS 描述的是代理連線方式;outboundTag 決定目前連線要交由哪個已設定的出站處理。只要代理節點本身可用,遇到規則比對問題時,應先檢查條件與順序,而不是反覆更換協定欄位。

七、驗證流程:依序檢查流量接管、規則命中與出口

出口位址只能說明某次測試請求的路徑,不能證明所有程式都套用相同規則。驗證時請固定測試目標,每次修改一項設定後都建立新連線;瀏覽器可能繼續沿用既有連線的出站,必要時請關閉相關頁面、結束舊連線或重新啟動測試程式。

  1. 確認流量是否被接管

    開啟目標頁面,同時查看客戶端日誌是否出現對應連線。若沒有記錄,請先檢查系統代理、本機監聽連接埠與程式本身的代理設定,暫時不要調整 geosite。

  2. 確認區域網路連線

    使用實際路由器或檔案服務的 IP 測試,例如已確認存在的 192.168.1.1。這只是常見範例,請以本機網路設定為準,之後再另外測試對應的內網網域。

  3. 確認網域例外規則

    針對新增的精確網域建立新請求,檢查日誌中的目標位址與出站標籤。日誌格式會隨核心設定而異;若未顯示完整規則編號,請勿只憑一行連線成功的記錄,就判定命中了哪條規則。

  4. 確認兜底路徑

    選擇一個不在自訂例外中的公網目標,確認是否使用代理出站。提高日誌層級僅供排查,完成後請還原設定;分享日誌前,請移除訂閱網址與節點驗證資訊。

常見狀況與排查方向

穩定的分流方案應能清楚說明每條規則的用途:哪些位址必須直連、哪些網域明確走代理、哪些條件依賴解析,以及最後由哪個出站兜底。先以少量可驗證的規則建立基準,再擴充資料集合,比一次匯入大量重疊規則更容易維護。