V2Ray 路由規則設定實戰:使用 geosite 與 geoip 進行境內外分流

以常見分流需求示範路由規則設定:境內網域與 IP 直連、其餘流量走代理、攔截廣告網域,說明規則比對順序與出站標籤的對應關係,並提供驗證分流是否生效的方法。

本文速覽

本文適合已能正常連線至節點、準備調整路由策略的使用者。最終設定會依照「攔截廣告、區域網路直連、境內網域直連、境內 IP 直連、其餘流量走代理」的順序處理流量,並透過核心記錄、指定代理埠與網域解析結果逐項驗證。

先確認分流目標與比對流程

分流重點

路由分流不負責建立 VLESS、VMess 等代理連線,只會在請求進入核心後決定應使用哪個出站。節點位址、連接埠、傳輸層與驗證參數仍屬於代理出站設定;路由規則只會引用已存在的出站標籤。混淆這兩個層次,是「節點能連線但規則未生效」最常見的原因之一。

分流重點

本例採用三個出站標籤:proxy 對應目前的代理節點,direct 對應 freedom 直連出站,block 對應 blackhole 攔截出站。標籤區分大小寫,規則中的 outboundTag 必須與出站中的 tag 完全一致。

應用程式發出請求本機入口接收網域規則比對IP 規則比對選擇出站

分流重點

V2Ray 與 Xray 會依照陣列順序檢查路由規則。請求命中第一條符合條件的規則後,就會停止繼續比對,因此規則不是「越多越優先」,而是「越前面越優先」。廣告網域應放在境內網域之前,否則同時屬於兩個集合的網域可能會先被直連規則處理。

攔截廣告

比對來源
geosite:category-ads-all
出站標籤
block
建議位置
第 1 條

先攔截,再判斷地域,避免廣告網域被境內規則提前直連。

區域網路直連

比對來源
geoip:private
出站標籤
direct
典型位址
192.168.0.0/16

保留路由器、檔案服務與其他內網設備的本機存取路徑。

境內資源直連

網域集合
geosite:cn
IP 集合
geoip:cn
出站標籤
direct

將網域與 IP 分成兩條規則,方便從記錄判斷實際命中的階段。

其餘流量走代理

比對網路
tcp,udp
出站標籤
proxy
建議位置
最後一條

兜底規則必須放在最後,若提前放置,會攔截後續所有 TCP 與 UDP 規則。

geosite 與 geoip 分別比對什麼

分流重點

geosite 是網域集合。請求保留網域資訊時,核心可以直接判斷網域是否屬於 geosite:cngeosite:category-ads-all。集合中的項目可能是完整網域、子網域規則或關鍵字規則,實際涵蓋範圍取決於用戶端隨附的資料檔版本。

分流重點

geoip 是 IP 網段集合。應用程式直接連線至 IP、網域規則未命中後執行解析,或流量入口已只能看到目標 IP 時,核心才有機會使用 geoip:cn 判斷地域。它無法根據網站名稱推測歸屬,只會比對目標位址是否落在資料檔記錄的網段內。

比對方式 輸入物件 範例 適合處理
geosite 網域 geosite:cn 依網站類別或地域維護的網域集合
geoip IPv4 或 IPv6 位址 geoip:cn 直連 IP 請求與解析後的位址判斷
domain 明確的網域規則 domain:example.com 少量需要固定覆寫的網站
ip 明確的網段 192.168.0.0/16 內網、專用服務或自有網段

結論:優先保留網域,再用 IP 補充判斷

只寫 geoip:cn 會讓網域請求依賴解析結果,不僅增加一次判斷成本,也可能受到解析位置影響;先用 geosite:cn 處理明確網域,再讓 geoip:cn 接手其餘境內位址,規則會更容易說明與排查。

完整路由設定與規則順序

分流重點

以下 JSON 展示路由與三個出站的最小組合,可作為進階設定的結構參考。實際使用時仍需保留原設定中的入口、DNS、記錄以及代理伺服器參數,不應直接用這段內容覆蓋整份用戶端設定。

分流重點

domainStrategy 設為 IPIfNonMatch:核心會先檢查網域規則;網域未命中時,再解析目標網域並嘗試套用 IP 規則。如此既能使用 geosite,也能讓 geoip 作為第二層判斷。

{
  "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"
      }
    ]
  },
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": []
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    },
    {
      "tag": "block",
      "protocol": "blackhole",
      "settings": {}
    }
  ]
}

分流重點

範例中的空 vnext 只表示代理節點參數應由現有訂閱設定提供,不能直接作為可連線節點使用。在 v2rayN 中,匯入訂閱會產生完整的代理出站;手動維護路由時,應引用用戶端產生的代理標籤,而不是刪除伺服器資訊後照抄空陣列。

  1. 先放置需要明確攔截或覆寫的規則,例如廣告網域與自訂網域。
  2. 接著放置 geoip:private,確保 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 等私有位址保持直連。
  3. 隨後依序放置 geosite:cngeoip:cn,分別處理境內網域與境內位址。
  4. 最後使用 network: tcp,udp 將流量送往 proxy,作為未命中請求的兜底規則。

在 v2rayN 中套用設定

分流重點

以下以 v2rayN 7.10.x 的介面配置為例,先在「設定」→「參數設定」中確認本機監聽連接埠與記錄層級。常見設定會使用 SOCKS 連接埠 10808、HTTP 連接埠 10809,但升級或移轉後的實際連接埠可能不同,驗證指令必須使用目前介面顯示的數值。

分流重點

路由入口通常位於「設定」→「路由設定」。建立規則集後,依序加入廣告網域、私有 IP、境內網域、境內 IP 與最終代理規則,再將該規則集設為目前使用的規則。不同 7.x 小版本的按鈕位置可能調整,但規則名稱、順序與出站標籤的核對方式不變。

分流重點

訂閱更新可能會重新產生節點,但通常不會代替使用者修正自訂路由。更新訂閱後,應確認目前啟用的規則集沒有切回預設方案,並檢查所選節點仍對應可用的代理出站。修改完成後需要重新啟動核心;只儲存規則而未重新載入核心,不會改變目前正在執行的路由狀態。

驗證境內外分流是否真正生效

分流重點

「網頁能開啟」只能證明連線基本可用,不能證明流量使用了預期的出站。驗證時應同時觀察請求目標、核心記錄中的規則命中結果與最終出站標籤。建議先將記錄層級暫時調整為 info,檢查完成後再恢復原設定,避免長期累積大量記錄。

分流重點

第一輪使用瀏覽器測試:分別造訪一個明確屬於境內網域集合的網站、一個需要代理的網站,以及路由器管理位址。預期結果是境內網站命中 direct、其餘網站命中 proxy,路由器位址則透過 geoip:private 直連。

分流重點

第二輪避開瀏覽器擴充功能與快取,直接指定 v2rayN 的 HTTP 代理連接埠發出請求。若目前 HTTP 連接埠為 10809,可以在 Windows、macOS 或 Linux 的終端機執行下列指令;測試位址應替換為自己能查看存取記錄的 HTTP 服務。

curl --proxy http://127.0.0.1:10809 https://your-test-endpoint.example/
curl --proxy http://127.0.0.1:10809 -I https://your-test-endpoint.example/
nslookup your-test-endpoint.example

分流重點

檢查時不要只比較回傳 IP。部分網站使用分散式節點,同一網域可能依解析位置回傳不同位址。更可靠的依據是 v2rayN 核心記錄中顯示的目標網域、目標連接埠,以及對應的 directproxyblock 出站。

境內網站仍然走代理怎麼辦?

分流重點

先確認 geosite:cn 位於最終代理規則之前,再檢查記錄中是否保留了目標網域。若入口只提供目標 IP,則繼續確認 domainStrategygeoip:cn 是否已成功載入。

區域網路位址突然無法開啟怎麼辦?

分流重點

檢查 geoip:private 是否指向 direct,並確認它排在 network: tcp,udp 兜底規則之前。存取 192.168.1.1 時,記錄中不應顯示 proxy

廣告規則導致頁面元件缺失怎麼辦?

分流重點

先暫時停用 category-ads-all 後重新測試。確認是誤攔截後,為必要網域增加一條位置更前、指向 direct 的規則,不要把整個廣告規則移到境內直連之後。

規則已儲存但記錄沒有變化怎麼辦?

分流重點

確認啟用的是剛編輯的規則集,然後重新啟動核心。若 v2rayN 同時啟用了預先定義的路由方案,請檢查目前方案是否覆蓋了自訂規則。

UDP 請求沒有依規則分流怎麼辦?

分流重點

確認兜底規則的 network 同時包含 tcp,udp,並檢查目前代理節點的傳輸設定是否支援目標 UDP 流量。命中路由不代表對應出站一定能承載該請求。

常見偏差與維護策略

分流重點

分流結果會隨著網域歸屬、服務部署與規則資料更新而變化。某個境內服務可能使用境外位址,某個境外品牌也可能在境內部署節點,因此 geosite 與 geoip 提供的是規則資料層級的分類,不是對業務歸屬的即時判斷。對於工作系統、自有服務等明確目標,明確指定網域的規則通常比地域集合更穩定。

分流重點

自訂覆寫規則應少而明確。需要強制直連時,將具體網域規則放在廣告與地域規則之前,並指向 direct;需要強制代理時,同樣放在地域直連之前,並指向 proxy。每增加一條覆寫規則,都應記錄用途,避免幾個月後只剩下無法說明的例外清單。

結論:分流故障先查順序,再查標籤,最後查資料

多數問題可以沿著三個步驟定位:確認請求是否被前置規則提前攔截,確認命中的 outboundTag 是否存在,確認 geosite 與 geoip 集合是否成功載入。只有三項都正常後,才需要繼續檢查 DNS 與節點傳輸層。

取得 V2Ray 用戶端 依 Windows、macOS、Android、Linux 選擇