旁路由部署應先確認一般轉送正常,再接入核心與透明代理。本文適合能登入 OpenWrt 管理介面並使用 SSH 的讀者,透過一組區域網路 IP 說明閘道、DNS、政策路由與輸出規則如何搭配。讀完即可規劃單一裝置的試運作方式、區分設定錯誤與流量接管問題,並保留斷線時的復原方案。
旁路由架構:分別確認閘道與 DNS
只在 OpenWrt 啟動 V2Ray,區域網路裝置不會自動使用代理。核心負責處理送入入站的連線,作業系統則負責將裝置流量轉送過來。透明代理還需要防火牆規則、政策路由與對應的監聽連接埠。三個環節缺一不可;即使程序正常執行,也可能完全沒有流量經過。
本文以單臂旁路由為例:主路由器是 192.168.10.1,OpenWrt 是 192.168.10.2,測試電腦是 192.168.10.100,子網路遮罩皆為 255.255.255.0。這些 IP 僅供說明,部署前請改用自己的網段,並確認旁路由 IP 不在 DHCP 自動配發範圍內。
| 裝置 | 設定範例 | 用途 |
|---|---|---|
| 主路由器 | 192.168.10.1 | 連接上游網路,初期繼續提供 DHCP。 |
| OpenWrt | 192.168.10.2,上游閘道為 192.168.10.1 | 轉送測試裝置的流量,執行核心與本機 DNS 服務。 |
| 測試電腦 | 閘道與 DNS 暫時都設為 192.168.10.2 | 驗證流量接管路徑,暫不更動其他裝置。 |
| 其他裝置 | 仍由主路由器提供原有閘道與 DNS | 保留正常上網路徑,降低測試影響。 |
閘道決定封包的下一個目的地,DNS 決定網域名稱的解析路徑,兩者不是同一個開關。只改 DNS 通常不會接管一般網頁連線;只改閘道也不代表裝置會使用旁路由的 DNS 策略。瀏覽器的安全 DNS、應用程式內建的解析器,以及 IPv6 預設路由,都可能形成另一條路徑。
選擇核心:依節點設定判斷
在 OpenWrt 上直接執行的是核心程序,不是桌面用戶端介面。v2rayN 管理桌面設定,v2rayNG 與 v2flyNG 管理 Android 設定;這些用戶端的選單不能直接照搬到路由器。伺服器位址、連接埠、識別資訊、傳輸方式、TLS 與服務名稱等參數,都必須轉換成所選核心可讀取的設定。
V2Fly 核心
建議本文以 V2Fly 的 V2Ray 5.x 命令列為主。若已有 VMess 等相容設定,可先沿用對應核心,減少遷移變數;仍須依實際版本核對傳輸欄位。
適用情況:已有相容設定,打算先驗證旁路由連線路徑
Xray 核心
節點明確要求 REALITY 或 XTLS Vision 時,應使用支援這些功能的 Xray 版本。不能只把執行檔改名為 v2ray,就假設設定欄位與命令參數都通用。
適用情況:節點明確依賴 Xray 專用設定
結論:先核對完整節點參數
先記錄協定、傳輸方式、安全層與核心版本,再決定部署哪個核心。只看到「VLESS」或「VMess」名稱,不足以判斷整份節點設定是否相容。
安裝前還要確認處理器架構、儲存空間與 OpenWrt 軟體來源。執行 uname -m 可查看執行架構,但套件也受發行版 ABI 與相依套件限制。請勿混用其他 OpenWrt 分支的軟體來源。訂閱連結也不等於原生核心設定;訂閱內容須由明確支援其格式的工具解析,更新後應先測試,再替換執行中的設定。
- 記錄
v2ray version的輸出,以及cat /etc/openwrt_release顯示的系統資訊,方便日後重現問題。 - 節點憑證只應存放在權限受限的設定檔中,例如將檔案權限設為
600;分享記錄前請移除憑證與訂閱網址。 - 若使用網域或地區規則,請確認對應的資源檔案存在,且檔案路徑與目前核心設定一致。
- 使用 OpenWrt 的 procd 服務機制管理程序,保留啟動記錄與重新啟動策略;只在 SSH 前景執行一次,不代表系統開機時會自動啟動。
部署順序:先確認轉送,再接管單一裝置
不要同時修改全網的 DHCP、DNS 與防火牆。建議先備份設定,再只調整一台測試電腦。以下選單以常見的 LuCI 介面為例,翻譯或版本可能略有差異,請依頁面欄位確認,不要只憑按鈕位置操作。
-
儲存備份
前往「系統」→「備份/升級」→「產生備份」,儲存目前設定。記下電腦原本的閘道與 DNS,並保留直接連線至 OpenWrt 管理位址的方式。
-
設定固定 IP
前往「網路」→「介面」→「LAN」→「編輯」,確認靜態 IP 為範例中的
192.168.10.2/24,上游 IPv4 閘道為192.168.10.1。確認沒有第二個 DHCP 服務,以免兩台裝置競相配發 IP。 -
驗證轉送
暫不啟用透明代理,只將測試電腦的閘道改為旁路由。前往「網路」→「防火牆」,檢查相關區域的轉送政策與所需的來源位址轉換,確認一般直連可以正常運作。
-
測試核心
準備好完整設定後,執行
v2ray test -c /etc/v2ray/config.json。測試通過後先在前景執行並觀察記錄,再交由已設定好的 procd 服務管理。舊版命令可能不同,請先查看v2ray help。 -
限制接管範圍
只匹配測試電腦
192.168.10.100的流量,設定透明入站、政策路由與防火牆。確認直連、代理與 DNS 都符合預期後,再考慮透過 DHCP 配發旁路由閘道。
# 以下是 V2Fly V2Ray 5.x 的檢查與前景執行範例
v2ray version
v2ray test -c /etc/v2ray/config.json
v2ray run -c /etc/v2ray/config.json
# 以下指令在另一個 SSH 工作階段中檢查系統狀態
ip -4 route show
ip -4 rule show
ss -lntup
logread -e v2ray
透明代理:入站、標記與政策路由
透明代理不是將系統代理連接埠對外開放。常見方案中,REDIRECT 主要用於 TCP 重新導向;TPROXY 可處理 TCP 與 UDP,但必須搭配核心模組、透明通訊端支援、封包標記與政策路由。入站設定必須配合防火牆採用的機制。
從 OpenWrt 22.03 起,預設防火牆系統改用 firewall4 與 nftables。舊教學中的 iptables 命令不能直接作為目前設定的依據。請先確認系統實際使用的防火牆,並確認所需的 TPROXY 支援可用;命令執行成功,不代表規則已匹配目標流量。
以上是規劃範例,不是實測數據,也不是所有系統都必須採用的固定設定。TPROXY 規則會將指定連線交給 12345 入站並設定標記;對應的 ip rule 會將帶有標記的封包送至獨立路由表,表中還必須設定本機投遞路由。標記值、遮罩與路由表編號必須一併核對,並避免與既有政策衝突。
| 檢查環節 | 確認項目 | 遺漏時的狀況 |
|---|---|---|
| 流量入口 | 來源位址、LAN 介面,以及 TCP/UDP 匹配範圍 | 核心沒有連線記錄,或誤接管其他裝置的流量。 |
| 排除規則 | 區域網路、管理位址、廣播與多點傳送,以及節點伺服器位址 | 無法連線至管理頁面、區域網路服務異常或代理迴圈。 |
| 透明入站 | 監聽位址、連接埠、讀取原始目標,以及 TPROXY 通訊端選項 | 流量已抵達本機,卻沒有可用程序接收。 |
| 政策路由 | 封包標記、規則優先順序與本機投遞路由 | 封包繼續轉送或遭到丟棄,入站仍沒有請求。 |
| 核心輸出 | 伺服器參數、DNS,以及直連/代理規則順序 | 入站有記錄,但輸出連線失敗。 |
一開始只接管從 LAN 轉入的流量,不要立即接管路由器本機的 OUTPUT 流量。核心連線遠端伺服器時會建立新的本機連線;若這些連線又被送回透明入站,就會形成迴圈。之後若確實需要接管本機流量,應設計獨立的輸出標記或排除核心程序,並處理節點網域解析後的 IP 變化。
- 使用
nft list ruleset查看規則位置與計數器,判斷流量是否確實匹配。 - 使用
ip -4 rule show與ip -4 route show table 100檢查範例中的政策路由路徑。 - 排查時請確認流量卸載是否影響觀察結果;硬體或軟體卸載可能讓後續封包繞過預期的處理路徑。
- 透過 firewall4 支援的持久化方式維護自訂規則。只在終端機暫時新增規則,防火牆重新啟動後可能就會消失。
DNS 與分流:解析路徑必須清楚
建議將 DNS 視為獨立服務規劃。終端向旁路由的 53 連接埠查詢,再由 dnsmasq 等本機解析服務轉送至適當的上游。V2Ray 設定中的 DNS 模組不會自動成為對 LAN 開放的 DNS 服務;還需要另外設定監聽或轉送路徑。
一種容易檢查的設計,是讓本機 DNS 服務監聽 LAN 的 53,再將指定查詢轉交給已在本機 127.0.0.1:1053 執行的解析服務。連接埠僅為範例,務必確認確實有服務在監聽。若下游解析服務又將查詢送回 192.168.10.2:53,就會形成 DNS 轉送迴圈。
- 保留本機名稱解析:區域網路主機名稱與內部網域應交由本機 DNS 處理,不要全部轉送到遠端。
- 確保節點網域可解析:建立代理前就必須先取得伺服器位址,避免唯一的解析路徑依賴尚未建立的代理。
- 具體規則優先:核心路由應先處理區域網路、明確指定直連的網域與指定代理網域,再設定預設輸出。
- 個別驗證 UDP:TCP 網頁瀏覽正常,不代表 UDP 已接管。DNS、即時通訊與使用 QUIC 的連線都應分別檢查。
- 個別規劃 IPv6:若只部署 IPv4 流量接管,IPv6 連線可能走另一條預設路由。測試時可暫時在測試裝置停用 IPv6;正式方案則應補齊對應的路由、DNS 與防火牆政策。
# 在已安裝 nslookup 的測試電腦上執行
nslookup example.com 192.168.10.2
# 在 OpenWrt 上檢查監聽狀態與政策
ss -lnup
ip -6 route show
nft list ruleset
結論:以記錄確認路徑,不要靠測速猜測
分別測試一個明確設定為直連的目標,以及一個明確設定為代理的目標,並比對 DNS 記錄、規則計數器與核心輸出標籤。網頁能開啟只代表連線已完成,不能證明流量經過預期的輸出路徑。
透明接管後的流量可能只帶有目標 IP。若分流依賴網域,就必須說明如何取得網域資訊;核心嗅探只能辨識部分協定中的資訊,並非所有應用程式都能還原網域。DNS 回傳的位址、網域規則與實際連線應保持一致。相關欄位可參閱DNS 設定說明,但桌面用戶端的設定選項不能直接當成 OpenWrt 防火牆規則。
常見故障:沿著流量路徑逐層排查
修改閘道後全部無法連線,該從哪裡查起?
先將測試電腦的閘道還原為主路由器,確認上游連線正常。接著停用透明接管,只驗證旁路由的一般轉送。檢查 LAN 轉送政策、上游預設路由與回程路徑,不要一開始就更換節點。
核心正在執行,為什麼沒有連線記錄?
確認電腦實際使用的閘道是否為 192.168.10.2,再檢查 nftables 規則計數器。若計數增加但入站沒有記錄,請核對 12345 是否正在監聽,以及標記到路由表的對應關係;同時確認瀏覽器沒有繼續使用明確設定的代理。
IP 能連線,網域名稱卻一直逾時?
執行 nslookup example.com 192.168.10.2。檢查 53 連接埠是否正在監聽、是否允許 LAN 流量進入本機 DNS,以及上游解析是否可連線;若使用 1053 轉送,也要確認該連接埠確實有服務。
網頁正常,遊戲與部分應用程式卻無法連線?
確認是否只設定了 TCP 重新導向,以及節點與輸出是否支援所需的 UDP。檢查 IPv6 預設路由與相關規則。不要永久封鎖某種協定來掩蓋接管不完整的問題,應先確認應用程式實際使用的傳輸方式。
防火牆重新啟動後代理失效,該怎麼辦?
比對重新啟動前後的 nft list ruleset 與 ip rule show。自訂規則、政策路由與核心服務都需要持久化設定及啟動順序安排;也要確認沒有其他規則重複新增相同標記。
分享記錄時,只需保留時間、入站標籤、輸出標籤與錯誤類型。逾時可能是伺服器無法連線、解析失敗或回程異常所致;若連接埠遭占用,可透過 ss -lntup 找出監聽程序。不要只截取最後一行「連線失敗」,也不要公開完整訂閱網址或識別資訊。
驗收與復原:擴大至全網之前
旁路由的優點是集中管理,但故障影響範圍也會隨之擴大。單一裝置試運作至少應涵蓋重新啟動、DNS 查詢、區域網路存取、直連與代理輸出、UDP 及 IPv6。在完成這些檢查前,請保留主路由器原有的 DHCP 配發設定,不要急著讓全網更改閘道。
- 驗證重新啟動:重新啟動 OpenWrt 後,確認核心服務、DNS、透明規則與政策路由都已恢復,且沒有重複規則。
- 驗證內網連線:存取主路由器管理頁面、檔案分享與其他本機服務,確認區域網路排除規則沒有誤擋。
- 驗證故障時的行為:停止核心,觀察已接管連線的狀況。若未明確設計故障旁路,代理流量通常會失敗,不應假設它會自動改為直連。
- 驗證復原方式:將測試裝置的閘道與 DNS 改回原設定,再移除自訂接管規則與政策路由。只停止核心而保留重新導向規則,仍可能造成斷網。
- 最後再推廣:透過主路由器的 DHCP 設定配發旁路由閘道與 DNS 後,更新用戶端租約並抽查實際取得的位址。使用靜態設定的裝置則須個別處理。