部署實踐 預計閱讀 14 分鐘

路由器與旁路由部署 V2Ray 核心概覽:架構選擇與注意事項

整理主路由直跑與旁路由閘道兩種架構的差異,介紹核心設定檔欄位、透明代理原理,以及效能瓶頸與韌體相容性評估重點。

將 V2Ray 或 Xray 核心放在路由設備上,通常不是為了多提供一個需要手動設定的 SOCKS 代理,而是讓區域網路裝置經由統一閘道完成流量辨識、路由分流與 DNS 處理。部署是否穩定,主要取決於閘道位置、Linux 網路能力、核心設定、規則資料與硬體效能,而不只是設定檔能否啟動。

本文速覽

本文適合準備在家庭或小型辦公室網路部署閘道代理的讀者。內容涵蓋主路由直跑與旁路由兩種架構、V2Ray 與 Xray 核心選擇、透明代理入口、策略路由、DNS 防回環、效能測試與故障定位。讀完後可先完成架構評估,再決定是否進入實際部署。

先確定閘道位置:主路由直跑還是旁路由

主路由直跑是指同時負責撥號、NAT、DHCP 與防火牆的設備也執行核心。資料路徑最短,無需調整用戶端預設閘道,區域網路中的新裝置也容易自動納入規則。代價是所有網路職責集中在同一台設備上,核心異常、規則錯誤或記憶體不足,都可能影響整個區域網路。

旁路由閘道通常與主路由位於同一網段,由主路由繼續負責外網連線,旁路由則處理指定裝置的轉送與透明代理。這種架構方便獨立重新啟動與回復,也適合先以一台電腦或 Android 裝置試運作,再逐步擴大範圍。請注意,旁路由並非接上網路就會自動接管流量;用戶端預設閘道、DHCP 下發與靜態路由都必須明確設定。

主路由直跑

撥號、NAT、DHCP、分流與核心程序集中執行,資料路徑短,但故障影響範圍最大。

適合:硬體效能充足、網路結構簡單,且可安排維護時段

旁路由閘道

推薦

外網連線與代理閘道分離,可依裝置逐步接管;設定失敗時也能快速切回主路由。

適合:家庭網路試部署、需要低風險回復,以及裝置分組管理

終端裝置獨立執行

由 v2rayN、v2rayNG 或 v2flyNG 在終端裝置處理訂閱與代理,不變更區域網路閘道。

適合:裝置數量少、只處理單一裝置流量,且不需要全網分流

選擇前先畫出實際資料路徑。例如旁路由位址為 192.168.1.2、主路由位址為 192.168.1.1,被接管裝置的預設閘道應指向 192.168.1.2,旁路由的預設路由再指向 192.168.1.1。如果用戶端仍將主路由作為預設閘道,旁路由上的透明代理規則就不會收到這些流量。

結論:第一次部署應優先保留獨立回復路徑

先讓單一測試裝置使用旁路由閘道,確認 DNS、中國大陸直連、代理出口與斷線恢復都正常,再修改 DHCP 以批次下發。如此可將設定錯誤限制在測試裝置,而不是同時中斷整個網路。

如何評估核心、韌體與處理器能力

路由設備標示「支援 V2Ray」,可能只代表能執行某個二進位檔案,不表示韌體已具備透明代理所需的完整能力。至少要確認處理器架構相符、系統能執行目標核心、可用儲存空間足夠、服務管理器能啟動程序,且核心網路模組支援策略路由與透明轉送。

V2Ray 核心適合既有的 VMess、VLESS 與常見傳輸設定;Xray 核心則更常用於 VLESS、透明代理與較新的傳輸能力。兩者設定結構相近,但並非所有欄位都能直接互換。訂閱連結也不能由路由核心直接當作設定檔讀取,通常需要管理層先解析訂閱,再產生符合核心格式的出站設定。

推薦方案:閘道負責分流,終端保留獨立診斷入口

路由閘道
  • 固定核心版本與設定路徑
  • 透明入口監聽 12345 連接埠
  • 依網域與目標 IP 執行分流
  • 由系統服務統一輪替記錄檔
測試終端
  • 桌面裝置使用 v2rayN 7.x 驗證節點
  • Android 裝置使用 v2rayNG 或 v2flyNG 進行對照測試
  • 保留直連閘道以便故障回復
  • 分別記錄 DNS 與代理出口結果

分開驗證節點可用性與閘道轉送能力,能避免將訂閱失效誤判為路由規則故障。

處理器效能不能只看核心數。同樣是四核心設備,可能因時脈、快取、加密指令與散熱設計不同而有明顯差距。記憶體方面,核心本身、規則資料、DNS 快取、記錄檔與韌體背景服務會共同佔用空間;只有 128 MB 記憶體的舊設備載入較大的 GeoSite 資料後,更容易觸發回收或程序結束。

12345
透明代理範例連接埠
1 GB
建議起始記憶體
32 MB
建議預留設定與記錄檔空間
10 分鐘
持續負載測試時間

設定檔的關鍵欄位與透明入口

閘道設定至少包含入站、出站、路由與記錄四個部分。透明代理入站常用 dokodemo-door,並透過 followRedirect 接收防火牆重新導向後的原始目標位址。出站應設定清楚的標籤,例如 proxydirectblock,路由規則再引用這些標籤。

以下為結構示意,省略實際伺服器位址、驗證資訊與完整 DNS 設定。範例監聽 12345,同時接收 TCP 與 UDP,並啟用目標嗅探。實際使用時,出站協定與傳輸欄位必須與節點參數一致。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "transparent-in",
      "port": 12345,
      "protocol": "dokodemo-door",
      "settings": {
        "network": "tcp,udp",
        "followRedirect": true
      },
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "streamSettings": {
        "sockopt": {
          "tproxy": "tproxy"
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "proxy",
      "protocol": "vless",
      "settings": {
        "vnext": []
      }
    },
    {
      "tag": "direct",
      "protocol": "freedom"
    },
    {
      "tag": "block",
      "protocol": "blackhole"
    }
  ],
  "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"
      }
    ]
  }
}

geoip:private 應放在前面,避免區域網路、回環與保留位址進入代理出站。網域規則通常先依嗅探結果或 DNS 結果進行比對,未命中時再依目標 IP 判斷。規則會由上而下執行,範圍過大的規則若放在前面,會遮蔽後續更精確的直連或阻斷規則。

  • inbounds:確定透明入口的監聽位址、連接埠、網路類型與重新導向行為。
  • outbounds:儲存代理、直連與阻斷出口,標籤必須與路由規則完全一致。
  • routing:依網域、IP、連接埠、入站標籤等條件決定流量出口。
  • dns:決定網域要向哪台伺服器查詢,以及查詢流量是否經過代理。
  • log:首次部署建議使用 warning,或暫時切換至 info;穩定後避免長期輸出過量記錄。

結論:先驗證最小設定,再加入訂閱與規則資料

先用一個入站、一個可用出站與一條私有網路直連規則確認核心能啟動,再逐項加入 DNS、GeoIP、GeoSite 與多節點選擇。一次加入所有功能,會讓連接埠、欄位與規則錯誤難以區分。

透明代理、策略路由與 DNS 回環

透明代理並非由核心單獨完成。防火牆負責選取流量並設定標記,策略路由將帶有標記的封包送至本機透明入口,核心讀取原始目標後再選擇出站。TCP 可使用重新導向或 TPROXY;UDP 通常需要 TPROXY 才能保留目標資訊。具體指令取決於韌體採用的防火牆後端。

以下指令只展示 Linux 策略路由與 TPROXY 的核心關係,並非可直接套用於所有韌體的完整腳本。執行前應確認系統包含對應模組,並排除閘道自身、區域網路位址、核心出站連線與管理連接埠,否則容易形成流量回環。

ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

iptables -t mangle -N V2RAY
iptables -t mangle -A V2RAY -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A V2RAY -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A V2RAY -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1

旁路由還需要啟用 IPv4 轉送,可透過 sysctl net.ipv4.ip_forward 檢查;回傳 1 才表示已啟用。若使用 IPv6,則必須另外設計 IPv6 路由與防火牆規則;僅處理 IPv4 時,應確認用戶端不會透過未接管的 IPv6 預設路由繞過旁路由。

  1. 先用 ip route 確認旁路由的預設出口指向主路由。
  2. ip rule 檢查標記 1 是否查詢路由表 100
  3. 使用防火牆計數器確認測試流量確實進入自訂鏈。
  4. 檢查 12345 是否由目標核心監聽,且監聽協定包含 TCP 與 UDP。
  5. 最後查看核心記錄,區分「沒有流量進入」與「出站連線失敗」。

DNS 最常見的問題是查詢路徑與代理路徑彼此套用。例如區域網路裝置將旁路由設為 DNS,旁路由又把查詢送往會被透明規則重新攔截的位址,最後便出現逾時或重複連線。處理方式是為 DNS 出站設定明確標籤,或在防火牆中排除本機 DNS 程序與上游位址。

效能瓶頸要靠持續負載判斷

路由設備的吞吐量由協定、傳輸層、加密運算、連線數量與散熱共同決定。網頁偶爾能開啟並不能證明效能足夠,短時間測速也可能被 CPU 突發頻率掩蓋。更有效的方法是在固定節點與固定網路條件下持續傳輸 10 分鐘,同時記錄吞吐量、CPU、記憶體、溫度與封包遺失。

一組實驗室參考條件為四核心 ARM Cortex-A53 1.5 GHz、1 GB 記憶體、Gigabit 網路連接埠、300 Mbps 外網。直連實測約 286 Mbps;啟用單一 VLESS over TCP with TLS 出站後,持續吞吐量約 126 Mbps,CPU 峰值 91%,設備溫度由 54°C 升至 72°C。此結果只表示這組硬體存在運算瓶頸,不能取代對特定設備的測試。

286 Mbps
樣機直連吞吐量
126 Mbps
代理持續吞吐量
91%
測試 CPU 峰值
72°C
十分鐘結束時的溫度

如果 CPU 單核心長時間接近滿載,而網路連接埠使用率不高,瓶頸多半在協定處理或加密運算;如果 CPU 使用率較低但封包遺失增加,應檢查網卡驅動程式、軟體中斷與佇列;如果執行數分鐘後速度逐步下降,則要檢查溫度與降頻。大量短連線還會提高連線追蹤表與記憶體壓力,結果與單一連線測速不同。

觀察項目 典型現象 優先檢查項目
CPU 單核心持續超過 90%,吞吐量不再增加 協定開銷、加密能力、程序執行緒分布
記憶體 可用記憶體持續下降,核心程序被終止 規則資料、記錄檔大小、連線數量
溫度 前兩分鐘速度正常,之後階梯式下降 散熱、降頻狀態、設備擺放位置
封包遺失 延遲抖動,UDP 應用程式先出現異常 網路連接埠協商、軟體中斷、防火牆佇列

家庭 Gigabit 網路不代表閘道必須跑滿 Gigabit 代理吞吐量,但至少應涵蓋實際外網頻寬,並保留約 20% 的運算餘裕。若 300 Mbps 外網在測試中只能穩定處理 126 Mbps,繼續增加規則並不能解決硬體瓶頸;應縮小接管範圍、改用效能更高的旁路由,或讓高負載終端獨立執行用戶端。

上線前檢查與常見故障處理

部署完成後不要只看核心狀態顯示「執行中」。完整驗證應涵蓋直連網域、代理網域、區域網路位址、DNS 查詢、TCP、UDP 與閘道重新啟動後的恢復情況。也要檢查設定檔權限、系統時間與規則資料位置,因為憑證驗證依賴準確時間,而 GeoIP、GeoSite 檔案缺失會導致對應規則無法按預期載入。

  • 用戶端可以存取主路由與旁路由的管理位址,私有網路流量未進入代理。
  • 中國大陸直連規則與代理規則分別命中預期的出站標籤。
  • 53 連接埠只有預定的 DNS 服務監聽,沒有重複佔用。
  • 透明入口連接埠 12345 未暴露至外網介面。
  • 重新啟動後,核心、策略路由與防火牆規則依正確順序恢復。
  • 停止核心時具備明確的降級策略,不讓所有流量繼續送往失效連接埠。

旁路由已啟動,為什麼裝置流量完全不經過它?

先在裝置上查看預設閘道。若仍是主路由位址,請將測試裝置的閘道改為旁路由位址,再用防火牆計數器確認封包是否進入透明代理鏈。只修改 DNS 位址不會自動改變預設轉送路徑。

網頁可以開啟,但語音或遊戲流量逾時怎麼辦?

檢查透明入口是否同時監聽 TCP 與 UDP,並確認 UDP 規則使用 TPROXY,且標記會進入路由表 100。接著查看出站節點是否支援目前的 UDP 用法,不要只根據 TCP 網頁測試判斷整體連通性。

重新啟動旁路由後,必須手動執行指令才能恢復?

將啟動流程拆成網路就緒、核心啟動、策略路由載入與防火牆載入四個步驟,並讓後續步驟依賴前一步成功。若防火牆早於透明連接埠生效,啟動階段的流量可能會被送往尚未監聽的 12345 連接埠。

訂閱在 v2rayN 中可用,放到路由器上卻啟動失敗?

先在 v2rayN 7.x 的「設定」→「參數設定」中確認實際 Core 類型,再對照路由器上的核心類型與版本。訂閱管理層產生的欄位可能依賴特定核心,不能將用戶端匯出的所有欄位直接視為通用設定。

存取區域網路儲存裝置時速度變慢,應該先修改哪條規則?

geoip:private 或明確的區域網路網段直連規則放在代理規則之前,並確認防火牆在進入 TPROXY 前已排除 192.168.0.0/16 等實際私有網路範圍。修改後觀察規則計數,而不是只清除瀏覽器快取。

最終設定應保留一份可啟動的最小版本,以及一份目前的執行版本。每次只調整一個變數,例如更換核心、更新規則資料或修改 DNS 上游;調整後完成同一套驗證。路由器部署的可靠性來自可觀察、可回復與可重複,而不是一次寫入大量規則後長期不檢查。

下載 v2rayN 進入用戶端安裝套件頁面