先在一台裝置上確認 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 才能處理連線。
- 部署在主路由器:終端流量原本就會經過主路由器,接管位置較集中;但核心、防火牆或路由設定有誤,可能影響整個網路。
- 同網段旁路由:例如主路由器為
192.168.10.1,旁路由為192.168.10.2,測試終端為192.168.10.100,子網路遮罩皆為255.255.255.0。將終端的預設閘道改為旁路由,旁路由的上游閘道仍設為主路由器。 - 獨立下游網段:旁路由使用兩個介面或 VLAN,將測試終端放在獨立子網路。網路路徑通常更清楚,但須一併設定轉送、防火牆,以及回程路由或來源位址轉換。
同網段架構還須考量直連流量的回程是否繞過旁路由,以及 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 下產生執行時檔案。直接修改產生的檔案,通常會在下次儲存或重新啟動後被覆寫,因此應先確認設定檔的來源。
-
記錄網路設定
在 OpenWrt LuCI 的「網路」→「介面」中記下 LAN 位址、上游閘道與介面名稱;再從「系統」→「備份/升級」匯出設定備份。暫時不要修改全網 DHCP 派發的設定。
-
確認啟動設定
執行
xray version確認核心可正常執行。使用 systemd 的系統,請查看systemctl cat xray中的ExecStart;OpenWrt 則查看/etc/init.d/xray及其讀取的設定,確認實際使用的路徑。 -
檢查設定檔
若實際設定檔位於這個常見路徑,請執行
xray run -test -config /etc/xray/config.json。先排除語法錯誤、未知欄位與規則檔讀取錯誤,再啟動服務。設定測試通過,不代表遠端節點一定連得上。 -
本機驗證
先讓 SOCKS 入站僅監聽
127.0.0.1:10808。使用curl --proxy socks5h://127.0.0.1:10808 https://example.com/測試連線,並同時查看記錄中選用的出站;不能只憑網頁成功開啟,就判定流量已經透過代理。 -
單一終端接管
確認明確指定的代理與實際節點都正常後,再對一台測試終端啟用透明規則。分別測試 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 規則與預設出站的順序,應先明確列出預期結果,再轉換成設定。
這些連接埠用途不同,不能互相替代。12345 只是方便規劃的範例值,不是系統會自動使用的預設連接埠;防火牆轉送目的地必須與核心監聽的連接埠一致。不要將未設定驗證的 SOCKS 連接埠開放至公開網路;若之後需要讓區域網路存取,也應透過監聽位址與防火牆限制來源。
- 區域網路與管理位址:先確認直連範圍,避免存取路由器管理介面、網路儲存裝置或印表機時,流量被導向遠端出站。
- 網域規則:透明連線可能只帶有目的 IP。部分協定可透過流量嗅探協助辨識網域,但無法保證找出所有網域,也不代表能解密通訊內容。
- 解析策略:
routing.domainStrategy控制路由比對時的網域解析方式,並非全域 DNS 伺服器開關。內建 DNS、出站解析與終端 DNS 是不同的處理環節。 - DNS 服務鏈:終端可能先向路由器的 dnsmasq 查詢,再由它轉送至其他解析服務。只在 Xray 中填入
dns,不會自動將終端的 DNS 查詢送進 Xray。 - IPv6 路徑:若只設定 IPv4 透明規則,終端仍可能透過主路由器的 IPv6 預設路由連上網際網路。應另外確認 AAAA 解析、IPv6 閘道與流量接管範圍。
結論:以同一個網域比對 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 的終端,可能不會遵循相同路徑,應依裝置類別分別確認。
- 基本連線:測試區域網路管理頁面、常用直連網站與應透過代理連線的目標,並確認記錄中顯示的出站方向。
- 協定涵蓋:分別測試 TCP、實際使用的 UDP 應用程式與 IPv6,不要只執行一次瀏覽器測速。
- 效能觀察:在相同目標與相同時段比較直連和代理,記錄 CPU 使用率、可用記憶體與連線數;不要將單次峰值視為長期吞吐量。
- 重新啟動後恢復:重新啟動旁路由後,再次檢查服務、DNS、策略路由與防火牆規則,確認不依賴臨時指令。
- 故障復原:模擬停止 Xray 服務,確認管理終端仍可連線至主路由器,並事先釐清其他終端如何恢復原本的閘道與 DNS 設定。
若尚未確認節點可用,請先在桌面版 v2rayN 或 Android 版 v2rayNG 完成單機測試,以區分節點問題與閘道問題。v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心;不同核心的功能與設定格式須分別確認。單機測試通過後,再將對應的連線參數與路由規劃移植到路由器環境,不要直接複製整個用戶端資料目錄。