路由器與旁路由部署 Xray:硬體需求、透明代理與流量分流指南

將 Xray 核心直接部署在路由器或旁路由,讓家中裝置不必安裝用戶端。本文整理硬體選擇、透明代理原理、設定檔位置與常見問題。

本文重點

先在一台裝置上確認 Xray 出站正常,再設定旁路由閘道、DNS 與透明流量接管,最後逐步擴大到其他裝置。本文以 OpenWrt 和 Linux 網路堆疊為例,說明硬體需求、核心設定與防火牆規則;適合已有可用節點,並打算將單機代理延伸至區域網路的讀者。文中的 IP 位址與連接埠僅供說明網路拓樸,並非所有韌體的預設值。

一、硬體選擇:先確認架構與可用記憶體

Xray 是負責處理連線、協定與路由的核心,不是路由器韌體,也不內建通用的路由器管理介面。能執行 Linux,不代表就能直接執行任意 Xray 二進位檔:CPU 架構、指令集、系統環境與可寫入的儲存空間都必須相符。下載前先用 uname -m 查看架構,再用 free -m 與 df -h 檢查記憶體和儲存空間餘裕。

以下為部署資源的規劃建議,不代表最低執行門檻或吞吐量保證。並行連線數、規則數量、加密負載與記錄檔大小都會影響資源需求;裝置標示的無線網速也不等於代理轉送效能。

現有主路由器

先確認韌體支援安裝符合裝置架構的套件。若裝置只有 128 MB 記憶體,還要同時負責無線網路、撥號與其他服務,應先確認剩餘資源;載入或更新規則時的資源用量,可能遠高於閒置狀態。

適用情境:終端裝置不多、已有相容韌體,且可接受維護期間全網短暫中斷。

獨立旁路由

推薦

初次部署可從 64 位元雙核心、1 GB 記憶體及至少 1 GB 可寫入空間的裝置開始。使用獨立裝置較容易回復原狀,調整代理服務時也不必連帶重啟主路由器的無線與撥號服務。

適用情境:先讓一台終端試用,再逐步擴大流量接管範圍的家庭網路。

常駐 Linux 主機

已有迷你主機或虛擬機器時,可先獨立執行核心。若使用虛擬機器,還要確認虛擬網卡的橋接方式、主機防火牆與開機順序,不能只檢查虛擬機器內部設定。

適用情境:熟悉 Linux 服務管理,且需要保留記錄並逐層檢查網路路徑的使用者。

結論:優先保留獨立的復原方式

首次部署建議使用旁路由,並保留讓終端直接連上主路由器的設定方式。發生問題時,將測試終端的閘道與 DNS 改回主路由器,比全網斷線後緊急修復防火牆更容易掌控。

二、主路由器與旁路由:先釐清資料傳輸路徑

主路由器通常負責撥號、NAT、DHCP 與預設閘道。旁路由則是區域網路中額外的轉送裝置,不會只因為接上網路線就自動接管全網流量。終端必須將相關流量交給旁路由,或由主路由器透過策略路由轉送過去,Xray 才能處理連線。

同網段架構還須考量直連流量的回程是否繞過旁路由,以及 ICMP 重新導向是否會改變終端的路徑。是否啟用來源位址轉換,取決於實際網路拓樸與連線追蹤需求;不能一概認定「旁路由必須啟用 NAT」。初期只修改一台終端,並使用 ip route 或系統路由檢視工具確認預設閘道。

三、透明代理:流量接管方式不等於代理協定

透明代理指的是接管流量的方式,並非 VLESS 或 VMess 的替代協定。終端不必填寫應用程式代理位址,流量會由閘道重新導向或透過策略路由送入核心。能否接管 TCP、UDP 與 IPv6,取決於 Linux 網路設定、入站設定,以及代理出站與伺服器是否共同支援。

方式接管位置主要限制
明確指定 SOCKS 代理應用程式主動連線至本機代理連接埠方便驗證核心,但不會自動涵蓋家中所有應用程式
REDIRECT透過防火牆將連線重新導向本機入站常用於 TCP;不能直接沿用 TCP 規則接管 UDP
TPROXY搭配透明通訊端與策略路由需核心模組、流量標記與本機路由共同生效
TUN 方案透過虛擬網路介面接收 IP 封包依實際實作與路由設定而異,不能直接套用桌面版的開關名稱

Xray 常見的 Linux 透明接入方式會使用 dokodemo-door 入站,搭配 followRedirect 讀取原始目的地;TPROXY 方案還須設定對應的 streamSettings.sockopt.tproxy。只加入這些 JSON 欄位,不會自動建立防火牆規則或策略路由,也不會啟用系統轉送。

OpenWrt 22.03 及更新版本通常採用 firewall4 與 nftables。網路上以 firewall3 為基礎的舊版 iptables 教學不能直接照搬,務必確認實際韌體、模組與相容層。桌面版 v2rayN 的 TUN 開關也不是能直接複製到路由器 Xray 設定中的單一欄位;相關限制請參閱TUN 設定說明。

四、設定檔與服務:先驗證明確指定的代理

設定檔路徑由啟動指令決定,與檔名無關。/etc/xray/config.json 是常見的慣用路徑;套件或管理介面可能使用其他目錄,也可能在 /var 下產生執行時檔案。直接修改產生的檔案,通常會在下次儲存或重新啟動後被覆寫,因此應先確認設定檔的來源。

  1. 記錄網路設定

    在 OpenWrt LuCI 的「網路」→「介面」中記下 LAN 位址、上游閘道與介面名稱;再從「系統」→「備份/升級」匯出設定備份。暫時不要修改全網 DHCP 派發的設定。

  2. 確認啟動設定

    執行 xray version 確認核心可正常執行。使用 systemd 的系統,請查看 systemctl cat xray 中的 ExecStart;OpenWrt 則查看 /etc/init.d/xray 及其讀取的設定,確認實際使用的路徑。

  3. 檢查設定檔

    若實際設定檔位於這個常見路徑,請執行 xray run -test -config /etc/xray/config.json。先排除語法錯誤、未知欄位與規則檔讀取錯誤,再啟動服務。設定測試通過,不代表遠端節點一定連得上。

  4. 本機驗證

    先讓 SOCKS 入站僅監聽 127.0.0.1:10808。使用 curl --proxy socks5h://127.0.0.1:10808 https://example.com/ 測試連線,並同時查看記錄中選用的出站;不能只憑網頁成功開啟,就判定流量已經透過代理。

  5. 單一終端接管

    確認明確指定的代理與實際節點都正常後,再對一台測試終端啟用透明規則。分別測試 DNS、TCP、UDP 與 IPv6,確認仍可存取管理頁面,最後才擴大來源位址範圍。

以下是用來理解設定檔結構的本機直連基礎範例,不是可連線代理節點的完整設定檔。它沒有遠端伺服器參數,也沒有透明入站;所有透過 SOCKS 接收的連線都會經由 freedom 直接連線。若目前服務已有可用設定,請勿直接覆寫。

{
  "log": {
    "loglevel": "warning"
  },
  "inbounds": [
    {
      "tag": "local-socks",
      "listen": "127.0.0.1",
      "port": 10808,
      "protocol": "socks",
      "settings": {
        "auth": "noauth",
        "udp": true
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

訂閱網址也不是 Xray 的啟動參數。用戶端訂閱可能包含 Base64 編碼的分享連結,或採用特定管理程式的格式;只有符合 Xray 設定結構的 JSON,才能作為設定檔載入。使用訂閱管理工具時,請確認它產生的出站、標籤與規則檔,避免手動編輯的內容又被更新程序覆寫。

五、DNS 與路由分流:兩條路徑都要檢查

要正確分流,必須同時確認「連線目的地」與「網域如何解析」。Xray 的 routing.rules 會由上而下比對,規則中的 outboundTag 必須對應到實際存在的出站標籤;沒有符合的規則時,通常會使用第一個出站。網域規則、IP 規則與預設出站的順序,應先明確列出預期結果,再轉換成設定。

53
一般 DNS 使用 TCP 或 UDP 連接埠
10808
本文本機 SOCKS 測試連接埠
12345
可規劃為透明入站的範例連接埠

這些連接埠用途不同,不能互相替代。12345 只是方便規劃的範例值,不是系統會自動使用的預設連接埠;防火牆轉送目的地必須與核心監聽的連接埠一致。不要將未設定驗證的 SOCKS 連接埠開放至公開網路;若之後需要讓區域網路存取,也應透過監聽位址與防火牆限制來源。

結論:以同一個網域比對 DNS 與出站記錄

先對測試網域執行 nslookup example.com 192.168.10.2,前提是旁路由確實提供 DNS 服務;接著連線至該網域並檢查選用的出站。成功解析只能證明 DNS 路徑可用,出站符合預期才代表流量分流方向正確。

使用 VLESS 節點時,遠端位址、連接埠、使用者識別碼、傳輸方式與安全設定都必須符合伺服器端設定;部署到路由器也不會改變這些要求。VMess、VLESS 是代理協定,TCP、WebSocket 等則是傳輸相關選項,不能只看協定名稱就判斷裝置的吞吐效能。欄位說明請參閱路由設定參考與術語手冊。

六、常見故障:依症狀縮小檢查範圍

排查時請保留一台不經過旁路由的管理終端。先比較使用原本閘道與旁路由閘道時的結果,再查看 DNS、核心記錄與防火牆計數;不要同時修改 MTU、協定、DNS 與路由規則,否則很難判斷是哪項設定造成影響。

閘道改成旁路由後,所有網站都無法開啟?

檢查轉送與上游路徑

先從終端連線至旁路由的管理位址,再於旁路由執行 ip route 檢查預設路由。使用 sysctl net.ipv4.ip_forward 確認是否啟用 IPv4 轉送,並檢查防火牆轉送鏈。預設路由或轉送設定錯誤時,更換節點通常沒有幫助;先將終端閘道改回主路由器,恢復網路連線。

網頁可以開啟,但語音通話和遊戲連線失敗?

沿著 UDP 路徑逐段檢查

檢查流量接管規則是否只涵蓋 TCP,再確認透明入站、代理出站與伺服器是否支援所需的 UDP 轉送。HTTP 請求成功不代表 UDP 正常。若使用 REDIRECT 接管 TCP,不要以為相同規則也處理了 UDP;必須選用相符的接管方案並實際測試。

服務顯示正在執行,為何沒有任何流量接管記錄?

確認監聽狀態與規則命中情形

使用 ss -lnptu 查看實際監聽的連接埠,再以 nft list ruleset 檢查來源網段、介面與連接埠是否一致。若規則設有計數器,請觀察測試連線是否讓計數增加。服務正在執行只代表程序存在,無法證明終端流量有經過該裝置,或策略路由已將封包送到透明入站。

重新啟動後設定失效,或測速時記錄檔越來越大?

檢查設定持久化與記錄檔位置

確認服務已設定為開機啟動,並透過韌體支援的方式保存防火牆與策略路由設定,而不是只在終端機暫時執行指令。排查完成後,將詳細記錄調回適當層級並設定輪替;容量有限的快閃記憶體不適合長期保存大量存取記錄。更新規則失敗時,保留上一份可用資料,不要先清除再下載。

七、上線驗收:從單一終端逐步擴大至全網

讓全屋裝置免安裝用戶端的前提,是相關流量確實經過已設定的閘道,且 DNS、IPv4 與 IPv6 使用一致的策略。使用獨立網路、手動路由或自訂加密 DNS 的終端,可能不會遵循相同路徑,應依裝置類別分別確認。

若尚未確認節點可用,請先在桌面版 v2rayN 或 Android 版 v2rayNG 完成單機測試,以區分節點問題與閘道問題。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心;不同核心的功能與設定格式須分別確認。單機測試通過後,再將對應的連線參數與路由規劃移植到路由器環境,不要直接複製整個用戶端資料目錄。

用戶端平台下載