OpenWrt 旁路由部署 Xray:透明代理設定與網路架構

整理主路由器與旁路由的分工,說明在 OpenWrt 執行 Xray 的流程,涵蓋閘道、DNS 與透明代理的設定取捨。

本文重點

本文適合已用 v2rayN 確認節點可用,並準備讓區域網路裝置透過 OpenWrt 旁路由連線的使用者。先指定一台測試裝置的閘道,再依序確認 Xray 出站、DNS 與透明轉送。讀完後即可釐清主路由器與旁路由的分工、選擇 REDIRECT 或 TPROXY 的依據,並規劃可隨時復原的部署步驟;本文不提供適用所有裝置的一鍵防火牆指令碼。

一、釐清主路由器、旁路由與 Xray 的分工

主路由器繼續負責寬頻連線、家庭網路的預設出口與 IP 位址分配。OpenWrt 旁路由接收指定裝置的流量,再決定要直連或交由 Xray 處理。Xray 是處理代理協定與路由規則的核心;啟動服務並不會自動讓整個區域網路變成透明代理網路。

以單網路埠、同網段的旁路由為例:主路由器是 192.168.50.1,OpenWrt 是 192.168.50.2,測試電腦是 192.168.50.100。以上是本文示範用的位址,部署前請換成自己的網段,並在主路由器的 DHCP 位址池中排除旁路由的固定 IP。

位置範例設定主要職責
主路由器192.168.50.1連接外網、提供原有 DHCP 服務,並保留管理入口。
OpenWrt 旁路由192.168.50.2執行 DNS 服務與 Xray,套用轉送及分流規則。
測試電腦192.168.50.100先單獨變更閘道與 DNS,不要立即影響其他裝置。
旁路由預設出口192.168.50.1確保旁路由本身及其代理伺服器連線都能連上外網。

測試電腦連線至海外服務時,預期路徑為「電腦 → 旁路由 → Xray 出站 → 代理伺服器」。直連流量則由旁路由轉交主路由器。單網路埠的部署中,直連連線的回應封包可能由主路由器直接傳回電腦,形成非對稱路徑;雙網路埠閘道的防火牆設定不能直接套用。

二、先決定接管範圍,再評估是否使用透明代理

先確認要解決的問題。如果只有電腦瀏覽器需要代理,繼續使用 v2rayN 通常比較容易維護;如果只有少數支援 SOCKS 的程式需要透過旁路由連線,可以先讓程式明確連到代理埠。透明代理適合不方便逐一設定代理的裝置,但也需要額外維護防火牆、策略路由與 DNS。

單一裝置透明接管

建議

先只接管一台電腦,並依來源 IP 限制透明代理規則。確認網頁、UDP 應用程式與區域網路存取都正常後,再逐台擴大範圍,將故障影響降到最低。

適用情境:首次部署旁路由、希望維持家庭網路穩定

明確指定代理埠

由程式主動連線至旁路由的 SOCKS 入站,不必先接管預設閘道。這能驗證節點與 Xray 設定,但無法證明透明轉送路徑已經打通。

適用情境:少數支援代理設定的程式、部署前逐層排除問題

全網預設接管

透過 DHCP 發送旁路由閘道,統一處理多台裝置。需事先考量 DHCP 租約更新、IPv6、DNS、服務重新啟動與故障復原,後續維護也會更加集中。

適用情境:已完成單一裝置驗證,且能長期維護網路設定

結論:保留原有閘道,先修改一台裝置

第一輪只將測試電腦的 IPv4 閘道與 DNS 改為 192.168.50.2,不要變更主路由器發送給全網的設定。若旁路由失去連線,只要將這台電腦恢復為自動取得 IP 位址即可復原測試。

三、先確認核心運作,再串接閘道與防火牆

以下選單以常見的 OpenWrt LuCI 介面為例。韌體版本、介面語言與已安裝的套件都可能影響選單名稱;OpenWrt 23.05、24.10 系列常用的 firewall4 採用 nftables,請勿混用只適用於舊版 iptables 的透明代理指令碼。安裝前也請確認處理器架構、可用儲存空間與核心模組來源。

  1. 備份網路設定

    前往「系統」→「備份/升級」,建立並下載設定備份。記下主路由器與旁路由的 IP 位址,並保留可直接連線至主路由器的管理方式;不要冒險透過唯一的遠端連線修改閘道。

  2. 設定固定 IP

    前往「網路」→「介面」→「LAN」→「編輯」,設定旁路由的固定 IP、子網路遮罩,以及指向主路由器的 IPv4 閘道。在「DHCP 伺服器」→「一般設定」勾選「忽略此介面」,避免重複分配 IP 位址;確認無誤後再儲存並套用。

  3. 驗證出站連線

    使用符合系統架構的 Xray,並準備可實際連線的出站設定。先設定只允許區域網路測試裝置存取的 SOCKS 入站,確認 TCP 連線;若要測試 UDP,則用戶端、入站與遠端出站都必須支援。

  4. 設定 DNS 解析

    前往「網路」→「DHCP/DNS」→「一般設定」,檢查 DNS 轉送目標。如果使用本機 127.0.0.1:5353 的解析服務,LuCI 常見的填寫格式為 127.0.0.1#5353;請確認服務已在監聽,而且不會再將請求轉回 dnsmasq。

  5. 連接測試裝置

    在測試電腦的網路設定中修改閘道與 DNS,接著只為這台電腦新增透明接管規則。確認介面轉送權限、核心轉送開關與回程路徑,再分別測試直連和代理目標。

  6. 驗證重新啟動

    確認目前連線正常後,依序重新載入防火牆、重新啟動 Xray,最後重新啟動旁路由。檢查規則是否還原、DNS 是否正常,以及 Xray 尚未啟動時直連流量的處理方式是否符合預期。

訂閱連結不能直接當成 Xray 的執行設定。v2rayN 負責解析訂閱、選擇節點與產生設定;若要直接執行核心,則必須備妥完整的入站、出站、DNS 與路由設定。VMess、VLESS 節點的傳輸方式、TLS、伺服器名稱與相關參數都必須與伺服器端一致,不能只複製伺服器位址和連接埠。

# 以下路徑假設 Xray 已安裝,設定檔實際位於 /etc/xray/config.json
xray version
xray run -test -config /etc/xray/config.json

# 查看系統架構、路由與監聽狀態
ubus call system board
ip -4 route show
netstat -lnptu

四、了解 REDIRECT、TPROXY 與流量標記

透明代理不是一個開關就能完成。防火牆先辨識需要接管的流量,再由 Xray 的透明入站接收,最後透過路由規則決定出站方式。REDIRECT 常用於 TCP 重新導向;TPROXY 可處理 TCP 與 UDP,但須搭配相應的透明入站設定、策略路由及核心支援,不能只改規則名稱就互相替代。

機制適用範圍必須確認
REDIRECT常用於 TCP 透明接管重新導向連接埠、原始目標取得方式、Xray 透明入站設定。
TPROXYTCP 與 UDP 透明接管透明通訊端、封包標記、策略路由、本機路由表。
明確指定 SOCKS 代理應用程式主動設定代理用戶端代理位址、存取控制與 UDP 支援狀況。

例如將透明入站連接埠設為 12345,防火牆就必須將目標流量送到該連接埠;這不是代理伺服器的遠端連接埠。TPROXY 使用的標記與策略路由表也要配套設計,避免覆蓋多線撥接、其他通道或策略路由服務已使用的標記位元。

可用 nft list ruleset 查看目前規則,用 ip rule show 檢視策略路由,再檢查自訂路由表。請勿直接清空整個 nftables 規則集,否則可能連 OpenWrt 的基本防火牆與遠端管理保護也一併移除。

五、將 DNS 視為獨立連線路徑處理

網頁無法開啟時,先分辨是「網域解析失敗」還是「解析成功但連線失敗」。閘道改成旁路由,不代表 DNS 也已經經過旁路由;應用程式內建的加密 DNS、瀏覽器的安全 DNS,以及透過 IPv6 發送的 DNS 伺服器位址,都可能形成另一條路徑。

53
傳統 DNS 使用的 UDP/TCP 服務連接埠
5353
本文設定的本機上游解析連接埠
12345
本文設定的透明入站連接埠

後兩個連接埠僅為設定範例,並非 Xray 的固定預設值。使用前請先檢查現有監聽服務;5353 也常用於多點傳送 DNS,請確認綁定位址與程序不會衝突。提供區域網路使用的 DNS 服務通常監聽 53;內部上游則可只綁定回送位址,避免不必要地對外提供服務。

  1. 確認請求有送達:在電腦上執行 nslookup example.com 192.168.50.2,確認旁路由是否有回應。這項測試只驗證指定的 DNS 伺服器,不代表所有應用程式都會使用它。
  2. 確認上游出口:需要透過代理存取的 DNS 上游,必須設定明確的出站路徑。解析代理伺服器網域所需的初始 DNS 查詢,不能完全依賴尚未建立的代理連線。
  3. 檢查 DNS 解析迴圈:dnsmasq 將請求轉送至本機解析服務後,該服務不能再把同一請求轉回 dnsmasq。發生迴圈時,通常會一直等待直到逾時。
  4. 協調網域與 IP 規則:依網域分流時,必須確認 Xray 如何取得網域資訊。嗅探功能無法涵蓋所有應用程式;如果只取得目標 IP,也不一定能還原原始網域。
  5. 納入 IPv6 一併處理:如果只接管 IPv4,裝置可能透過主路由器公告的 IPv6 預設路由直接連線。請先在測試裝置上限定使用 IPv4 進行驗證,再另外規劃 IPv6 路由與 DNS,不要誤以為是節點故障。

結論:分別記錄 DNS 解析與連線結果

每次只驗證一個環節:先記錄 DNS 是否回傳位址,再檢查請求使用的出站路徑與交握結果。不要同時更換節點、DNS 上游和透明代理規則,否則即使測試成功,也無法判斷是哪項變更生效。

六、依症狀排除問題,並預先規劃復原方式

至少準備一個本機管理位址、一個預期直連的目標,以及一個預期經代理連線的目標。查看 Xray 存取記錄中的入站、目標與出站標籤,並對照系統記錄。排除問題期間可暫時提高記錄詳細程度,找到原因後再調回合適的層級;記錄可能包含存取目標,分享前請先清除 IP 位址、憑證與訂閱資訊。

修改閘道後,連旁路由管理頁面都開不了?

先將電腦的閘道恢復為原本的主路由器,或改回自動取得位址。確認電腦與旁路由位於同一個子網路,再前往 192.168.50.2。檢查固定 IP 是否衝突及管理服務是否正在監聽,先不要重裝 Xray。

SOCKS 測試可用,透明代理卻無法連線?

依序確認測試電腦的預設路由、透明入站連接埠、相關防火牆規則的計數,以及 TPROXY 的標記與策略路由。如果 Xray 沒有收到請求,先檢查流量入口,不要一再修改遠端節點參數。

網頁能開,語音或遊戲卻還是連不上?

先確認是否只設定了 TCP REDIRECT,再檢查 UDP 透明入站、遠端 UDP 支援與防火牆放行狀況。瀏覽器載入成功不代表 UDP 已被接管,也無法據此判斷所有應用程式都走相同路徑。

為什麼重新通電後又無法使用?

檢查 Xray 服務的啟動狀態、DNS 上游就緒時間,以及防火牆重新載入後的規則。使用 logread 查看啟動錯誤,並再次確認網域初始解析。不要依賴只在終端機手動執行一次、重新啟動後便消失的規則。

準備擴大接管範圍時,再考慮修改 DHCP 參數。常見的 IPv4 DHCP 選項中,選項 3 用來指定預設閘道,選項 6 用來指定 DNS;兩者不必指向同一台裝置。變更後,客戶端必須重新取得租約,既有連線也可能繼續使用舊路徑。先確認一台已重新取得租約的裝置正常,再處理其他裝置。

旁路由部署的關鍵不是規則越多越好,而是每個環節都能獨立驗證:用戶端確實將流量交給旁路由、防火牆只接管預期範圍、DNS 沒有形成迴圈、Xray 出站可用,且回程路徑符合設計。完成驗證後,再將已確認可用的桌面用戶端節點參數移入長期設定,後續維護會更清楚。

下載用戶端