· 路由分流 · 約 10 分鐘

V2Ray 路由規則設定教學:domain、ip 寫法與分流設定

了解 v2rayN 路由設定中的 domain、IP、geosite 與 geoip 規則,掌握繞過中國大陸、全域代理及自訂直連的分流設定方式。

本文重點

適合已匯入訂閱、節點可正常連線,但想調整分流方式的使用者。先確認流量確實進入客戶端,再分辨 domain 與 ip 的比對對象,最後依「自訂例外、通用分類、預設出口」的順序設定規則。本文提供 V2Ray/Xray 格式的路由片段、v2rayN 操作步驟與驗證方式;程式碼中的出口標籤必須與目前設定相符,不能直接當成完整客戶端設定匯入。

設定路由的前提:流量必須先進入核心

路由規則只負責選擇出口,不會自動讓所有應用程式使用代理。瀏覽器遵循系統代理設定時,請求才會送至本機代理連接埠;忽略系統代理的程式通常需要個別設定代理,或使用 TUN 接管。啟用 TUN 也不代表所有流量都走代理:流量進入核心後,仍可依路由規則直連。

v2rayN 是桌面客戶端,實際路由由目前執行的核心處理。本文的 JSON 使用 V2Ray/Xray 路由格式,適用於相應核心設定,並非所有核心都通用。Android 上的 v2rayNG 使用 Xray 核心,v2flyNG 使用 v2fly 核心;兩者的介面入口、內建規則與資源更新方式不盡相同。

10808
本文使用的本機代理連接埠,請依實際監聽值替換
53
傳統 DNS 常用連接埠,不代表所有網域解析流量

domain 與 ip:比對對象及寫法

domain 比對請求中的目標網域,ip 比對目標 IP 或依策略解析出的 IP。網域規則不是完整網址篩選器:不要填入 https://、網頁路徑或查詢參數。造訪同一網域的不同路徑,通常不會因此使用不同出口。

寫法實際意義適用情境
full:example.com只比對 example.com 本身只為單一主機名稱設定例外
domain:example.com比對根網域及其子網域讓同一網域下的服務使用相同出口
example以一般字串比對網域關鍵字比對範圍較廣,容易誤判,請謹慎使用
geosite:cn引用網域資源中的 cn 分類依維護好的網域清單分流
192.168.0.0/16比對指定的 IPv4 網段區域網路位址直連
geoip:cn引用 IP 資源中的 cn 分類依目標 IP 所屬位址清單分流

例如 domain:example.com 可以比對 api.example.com,但不會把 notexample.com 視為其子網域。若要精確控制,優先使用 full: 或 domain:,不要用過短的關鍵字取代網域邊界判斷。

網域例外規則

規則欄位
domain
比對內容
domain:example.com
目標出口
direct
建議位置
放在通用分類之前

適合明確知道網域的服務;範例網域僅用於說明格式。

區域網路 IP 規則

規則欄位
ip
比對內容
geoip:private
目標出口
direct
檢查重點
IPv4 與 IPv6 位址範圍

確認資源檔案包含該分類;也可依實際網路填入明確的 CIDR 網段。

規則順序:比對到第一條就決定出口

規則會依清單由上往下檢查,比對成功後便不會繼續尋找「更精確」的後續規則。範圍很大的規則若放在最前面,後面的自訂例外可能永遠不會執行。同一欄位陣列中的多個值通常是「或」的關係;同一條規則同時填入 domain、ip、port 等不同條件時,則必須符合這些條件的組合。

核心設定未符合任何規則時,通常會使用 outbounds 陣列中的第一個出站。以下範例在末尾加入 TCP/UDP 規則,明確將流量導向代理作為後備,避免誤以為「未符合規則」就一定直連。此片段只有 routing 部分;direct、proxy 必須是目前完整設定中已存在的出站標籤。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["domain:example.com"],
        "outboundTag": "direct"
      },
      {
        "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"
      }
    ]
  }
}

geosite、geoip 與 DNS 策略

geosite 是網域清單,geoip 是 IP 位址清單,兩者都不是即時查詢服務。引用不存在的分類,或資源檔案遺失、格式不相容,都可能導致核心載入失敗。更新訂閱只代表重新取得節點,不保證路由資源也會同步更新。

domainStrategy 決定路由階段如何處理網域解析,並不等於完整的 DNS 伺服器設定。設為 IPIfNonMatch 時,只有網域階段沒有比對成功,才可能解析 IP 後再次比對;如果最後一條萬用規則已經比對成功,就不符合「未比對」的條件。

策略路由行為使用提醒
AsIs路由階段不會主動解析網域的 IP網域請求主要依賴 domain 規則,IP 欄位仍可比對直接連線的 IP
IPIfNonMatch網域未比對成功時,嘗試解析並重新比對末尾的萬用規則會提前比對成功,不能期待此時再進行 IP 後備比對
IPOnDemand比對過程遇到需要 IP 的規則時,嘗試解析規則順序會影響解析觸發時機,也需確認 DNS 是否正常

上一節設定中的 geoip:cn 可處理目標為 IP 的直接連線;但若存在末尾的萬用規則,就無法保證所有未分類網域都會以 IP 後備比對。若希望未比對到的網域也依解析後的 IP 分類,可考慮使用 IPOnDemand,並將需要優先判斷的網域規則放在 IP 規則之前;另一種做法是移除萬用後備規則,並確認第一個出站確實是代理。

三種設定方式:繞過中國大陸、全域代理、自訂直連

「繞過中國大陸」通常是指區域網路與中國大陸境內目標直連,其餘目標則透過代理;「全域代理」則是讓進入核心的流量統一使用代理出口。兩種方式都無法保證應用程式流量已交由核心處理。公司內網、印表機與家用儲存裝置等需求,應另外檢查,避免切換設定後無法存取。

設定方式規則安排驗證重點
繞過中國大陸自訂例外 → 區域網路直連 → 國內網域/IP 直連 → 代理後備國內服務使用 direct,其他測試目標使用 proxy
全域代理依需求保留區域網路例外,其餘 TCP/UDP 指向 proxy是否有更早比對成功的直連規則,以及應用程式是否已進入核心
自訂直連將指定的 full/domain 規則移至最上方,再保留原有分流設定主網域、登入網域與資源網域是否需要分別處理

要讓某個服務網站直連,不一定只新增主網域就足夠。登入、API 與靜態檔案可能使用不同網域。先從記錄確認實際請求,再逐一新增必要網域;不要為了省事就把共用 CDN 的整段位址範圍設為直連,否則可能影響其他無關網站。

  1. 儲存目前設定

    先記下目前的路由名稱並備份規則。確認節點可正常使用,保留一份未修改的設定,方便發生問題時還原。

  2. 開啟路由設定

    在提供此功能的 v2rayN 桌面介面中,依序前往「設定」→「路由設定」。不同介面可能會將入口放在主畫面的「路由」選單,請以目前安裝版本顯示的名稱為準。

  3. 編輯目標規則

    選取要使用的路由設定,開啟規則編輯視窗。新增 domain 項目,例如 domain:example.com,並將出口設為直連;若介面將前綴與內容分成兩欄,請分別選擇類型並填入網域。

  4. 調整規則位置

    將例外規則移至國內分類與後備規則之前。分別新增網域規則與 IP 規則,儲存後在主畫面的「路由」選擇器中啟用該設定。

  5. 重新建立連線並驗證

    等待設定重新載入,必要時重新啟動核心。關閉原有網頁連線後再重新造訪,查看新連線記錄中的目標與出口;不要用已建立的長連線判斷新規則是否生效。

驗證分流:交叉檢查連接埠、記錄與出口

網頁能開啟只能表示某條連線路徑可用,無法證明使用了預期出口。建議分別測試一個應直連的目標、一個應走代理的目標,以及一個區域網路位址。查看記錄時,留意目標網域或 IP、所選出站標籤與錯誤訊息;若記錄層級太低,可暫時調高,測試結束後再還原。

以下命令會強制透過本機 HTTP 代理送出請求,範例假設 HTTP 或混合入站監聽於 127.0.0.1:10808。請先在客戶端確認實際協定與連接埠;若該連接埠只提供 SOCKS 服務,就不能直接照用 HTTP 代理參數。命令僅示範請求方式,不代表目標網站必須採用特定分流策略。

curl --proxy http://127.0.0.1:10808 --connect-timeout 10 --max-time 20 -I https://example.com/

路由規則常見問題

新增 domain 規則後,為什麼還是走代理?

先確認填入的是網域,不含通訊協定與路徑;再將規則移至通用規則之前,並確認已啟用目前的設定。若記錄只顯示目標 IP,請檢查應用程式是否在進入核心前就已完成解析,以及目前入站是否能提供目標網域。

geosite:cn 和 geoip:cn 一定要一起新增嗎?

語法上並非強制,但兩者涵蓋的輸入不同:前者適合已知網域,後者適合目標 IP 或解析後的位址。若要同時涵蓋,請分成兩條規則,並確認 domainStrategy;不能認為新增分類名稱就一定會觸發解析。

更新訂閱後,自訂直連規則會消失嗎?

節點訂閱與客戶端路由設定通常分開管理,但匯入完整設定、還原設定或覆寫路由方案時,可能會修改規則。請先備份自訂設定,並避免直接編輯執行時產生的暫存設定檔。

Android 可以直接複製桌面規則嗎?

可以沿用網域、CIDR 與規則優先順序的設定思路,但不能直接複製整份桌面設定。v2rayNG 與 v2flyNG 的資源檔案、出站標籤及自訂規則入口都需要分別確認;儲存後重新建立連線,再透過記錄驗證實際出口。

下載客戶端選擇適用平台的安裝套件