· 路由分流 · 約 10 分鐘

V2Ray 路由規則設定教學:以 geosite/geoip 設定中國大陸直連與海外代理分流

說明 domainStrategy 與 geosite:cn、geoip:private 的規則順序,並示範如何在 v2rayN 設定中國大陸直連、海外代理及廣告封鎖。

本文重點

本文適合已能透過節點連線,並準備在 v2rayN 調整流量分流的使用者。先認識網域集合與 IP 集合,再設定路由解析策略、出口標籤及規則順序,最後透過日誌確認中國大陸直連、私有網路連線與廣告封鎖是否生效。文中的 JSON 是核心設定片段,並非可直接匯入的完整節點設定。

一、設定分流前,先確認流量與出口

路由分流是在流量進入核心後才進行。若應用程式未使用系統代理,或連線不受目前代理模式涵蓋,修改規則就不會影響這些流量。請先選擇可用節點,確認瀏覽器使用 v2rayN 提供的本機代理,再開始調整路由。系統代理主要供遵循系統代理設定的應用程式使用,並不代表裝置上的所有連線都會由代理接管。

規則中的 outboundTag 是出口標籤,不是協定名稱。本文以 proxy 指向已設定的節點、direct 指向 freedom 直連出口,並以 block 指向 blackhole 封鎖出口。標籤有大小寫之分,必須與實際設定完全一致。

10808
本機代理連接埠範例,請依實際設定替換
3 個
出口標籤:proxy/direct/block
4 條
基本分流規則;未符合規則的流量交由預設出口處理

二、geosite 與 geoip 的比對對象

geosite:cn 代表網域集合,適合辨識已分類的中國大陸網站;geoip:cn 代表 IP 位址範圍集合,適合處理直接連線至 IP,或需要依解析結果補充分流的連線。兩者都是規則資料,不會即時判斷網站業務所在地、機房位置或連線品質。中國大陸網域可能使用海外基礎設施,海外服務也可能解析至中國大陸 IP。

網域集合規則

欄位
domain
中國大陸集合
geosite:cn
廣告集合
geosite:category-ads-all
資料檔案
geosite.dat

路由判斷時必須取得目標網域,且資料檔案中需包含指定分類。

IP 集合規則

欄位
ip
中國大陸集合
geoip:cn
私有網路集合
geoip:private
資料檔案
geoip.dat

目標為 IP 時可直接比對;目標為網域時,是否解析取決於路由策略。

在同一條規則中同時填入 domain 與 ip,並不代表「符合網域或 IP 任一條件即可」。不同條件欄位通常必須同時符合;同一陣列中的多個項目才是可供比對的選項。為避免混淆,請將中國大陸網域與中國大陸 IP 分成兩條規則。

三、domainStrategy 如何影響中國大陸 IP 補充規則

domainStrategy 設定於 routing 物件內,與 rules 同層。它會控制路由判斷時是否將網域解析為 IP,不會決定應用程式是否使用代理,也不等同於完整的 DNS 設定。名稱相似的出口解析設定屬於不同作用範圍,不能互相取代。

AsIs

依照收到的目標形式進行路由,不會為了比對 IP 規則而主動解析網域。若目標原本就是 IP,仍可比對 IP 規則。

適用情境:主要依賴網域清單,並希望減少路由階段解析的設定。

IPIfNonMatch

建議

網域在第一輪規則判斷中未符合時,才嘗試解析並比對 IP 規則。本文採用此策略,保留網域規則優先、再以中國大陸 IP 補充判斷的邏輯。

適用情境:中國大陸網域直連,並補充辨識中國大陸 IP 的日常分流。

IPOnDemand

路由判斷遇到需要 IP 的規則時,就會嘗試解析網域。IP 規則的位置會更直接影響解析時機與最終出口。

適用情境:明確需要較早進行 IP 判斷,且已規劃好 DNS 與規則順序的設定。

四、依序設定廣告、中國大陸網域、私有網路與中國大陸 IP

規則會由上而下判斷,第一條符合的規則決定出口。將廣告分類放在中國大陸網域之前,可避免部分已列入中國大陸集合的廣告網域先被放行;接著依序處理中國大陸網域、私有網路 IP 與中國大陸 IP,其餘連線則使用代理出口。以下僅列出 routing 片段,必須合併至現有的完整設定中。

{
  "routing": {
    "domainStrategy": "IPIfNonMatch",
    "rules": [
      {
        "type": "field",
        "domain": ["geosite:category-ads-all"],
        "outboundTag": "block"
      },
      {
        "type": "field",
        "domain": ["geosite:cn"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "direct"
      },
      {
        "type": "field",
        "ip": ["geoip:cn"],
        "outboundTag": "direct"
      }
    ]
  }
}

使用上述規則前,必須先有對應的出口。請保留原有節點的驗證、傳輸與安全設定,並將其出口標籤設為 proxy;不必為了套用範例而重新撰寫節點參數。以下兩個物件僅示範直連與封鎖出口的定義,應加入現有的 outbounds 陣列,並放在代理出口之後。

[
  {
    "tag": "direct",
    "protocol": "freedom",
    "settings": {}
  },
  {
    "tag": "block",
    "protocol": "blackhole",
    "settings": {}
  }
]

五、在 v2rayN 設定並檢查產生的設定

v2rayN 的路由編輯介面會產生核心設定;訂閱主要提供節點資訊,兩者用途不同。不同桌面版的選單名稱可能略有差異,以下以有「設定」→「路由設定」選項的介面為例;若介面不同,請以最後產生的 routing 與 outbounds 為檢查依據。

  1. 備份現有規則

    前往「設定」→「路由設定」,先儲存現有規則或匯出目前設定,並記下正在使用的路由方案,避免直接覆蓋原有的自訂例外。

  2. 建立獨立方案

    在「路由設定」中新增或複製路由方案。將網域策略設為 IPIfNonMatch,逐條加入廣告、中國大陸網域、私有網路與中國大陸 IP 規則。不要將完整核心 JSON 貼進單一規則的網域輸入欄位。

  3. 確認出口對應

    逐條確認規則使用的代理、直連與封鎖出口。介面可能顯示中文選項,但產生設定中的 outboundTag 必須對應到實際存在的出口定義;也請確認預設出口是所選節點。

  4. 啟用並重新載入

    儲存後,將新方案設為目前使用的路由,再重新啟動服務或核心。若只儲存方案而未啟用,原本的分流設定仍可能繼續生效。

  5. 確認代理入口

    前往「設定」→「參數設定」,確認本機監聽連接埠。本文以 127.0.0.1:10808 作為測試入口範例;實際連接埠與入站協定請以目前設定為準,再透過系統匣選單確認系統代理狀態。

六、透過日誌區分規則問題與 DNS 問題

測試時一次只變更一個條件。先連線至已確認列入中國大陸集合的網域,再測試一個不在該集合中的網域,最後測試需要連線的私有網路位址。暫時啟用連線日誌;必要時調高錯誤日誌的詳細程度,查看目標位址與最終出口標籤。確認完成後,請恢復平常使用的日誌等級。

驗證方式:先確認規則命中,再排查解析

網域規則驗證
  • 中國大陸集合中的網域應使用 direct 出口。
  • 廣告集合中的測試網域應顯示 block。
  • 若日誌只顯示 IP,請確認應用程式是否已自行解析網域。
  • 關閉舊連線並重新送出請求,避免重用連線影響判斷。
IP 與預設出口驗證
  • 確認私有網路目標由 direct 處理。
  • 查看網域未命中集合時的解析結果。
  • 符合中國大陸 IP 補充規則時,應使用 direct。
  • 其他連線應使用第一個代理出口,而不是意外直連。

日誌顯示的出口比網頁能否開啟更能判斷規則是否生效;連線狀況還會受到 DNS、節點與目標服務影響。

若應用程式先將網域解析為 IP,再把 IP 交給本機代理,geosite 就無法直接取得原始網域。入站嗅探可從部分 HTTP 或 TLS 流量還原可辨識的網域資訊,但不保證適用於所有協定與加密方式。啟用前請先了解目前核心的嗅探設定,不要將它當成 DNS 設定的替代方案。

DNS 設定也需要另外規劃:供路由判斷使用的解析請求,不一定會自動透過代理傳送。若解析結果異常,請先檢查核心使用的 DNS 伺服器及其連線路徑,再判斷是否保留中國大陸 IP 補充規則。分享排錯日誌前,請先移除訂閱網址、驗證資訊與個人瀏覽紀錄。

下載用戶端v2rayN/v2rayNG