本文適合已能使用桌面或 Android 用戶端,並準備讓區域網路裝置共用代理出口的使用者。先用一台測試裝置確認旁路由閘道,再依序檢查核心、透明入口、DNS 與分流規則。閱讀後即可判斷核心應安裝在主路由或旁路由,並釐清哪些設定屬於 OpenWrt 網路層,哪些屬於 Xray 或 V2Fly 核心。本文提供部署流程與檢查方式,不提供可直接套用於所有裝置的完整防火牆指令碼。
一、主路由與旁路由:先確認流量經過哪裡
透明代理的前提是流量確實經過執行核心的裝置。「同一個區域網路裡有一台 OpenWrt」不代表其他裝置會自動使用它。主路由負責預設閘道時,可以在轉送路徑上接管流量;旁路由若只是接在交換器上,通常需要修改終端裝置的預設閘道,或由主路由透過策略路由將指定流量轉送過去。
旁路由單一裝置試行
建議保留原主路由的撥號、無線網路與 DHCP,只將一台測試電腦的閘道指定為旁路由。故障影響範圍小,要復原時只需還原這台電腦的網路設定。
適合:已有穩定網路,首次部署透明代理
主路由直接執行核心
由 OpenWrt 同時擔任閘道與代理轉送,流量路徑較清楚,但核心故障、防火牆異動或資源不足都可能影響整個區域網路。
適合:熟悉 OpenWrt,能維護共用閘道
由主路由透過策略路由轉送至旁路由
終端裝置繼續使用主路由作為閘道,由主路由依裝置或網段將流量轉送至旁路由。必須規劃往返路徑並排除迴圈,不能只新增一條預設路由。
適合:需要集中控管裝置分組,且熟悉策略路由
單網路埠旁路由接入既有 LAN 時,常會出現「主路由與終端裝置位於同一子網」的情況:去程先到旁路由,回程卻可能由主路由直接傳給終端裝置。是否需要來源位址轉換,應依回程路徑、狀態式防火牆與連線追蹤判斷,不能把啟用 NAT 當成萬用解法。同一介面轉送也可能觸發 ICMP 重新導向,部署時應檢查終端裝置是否因此繞過預期閘道。
二、規劃位址與連接埠:避免兩台 DHCP 伺服器同時發放位址
以下使用一組明確的範例網路:主路由為 192.168.10.1,旁路由為 192.168.10.2,測試電腦為 192.168.10.100,子網路遮罩為 255.255.255.0。這些是本文規劃的位址,並非裝置出廠設定;使用前請確認位址未被占用,並將旁路由位址排除在動態位址池之外。
| 對象 | 範例設定 | 用途 |
|---|---|---|
| 主路由 | 192.168.10.1/24 | 連接上游網路,保留現有 DHCP 服務 |
| 旁路由 LAN | 192.168.10.2/24 | 設定固定管理位址,上游閘道指向主路由 |
| 測試電腦 | 192.168.10.100/24 | 預設閘道與 DNS 暫時設為旁路由位址 |
| 其他終端裝置 | 維持現有自動設定 | 試行期間繼續使用原有網路路徑 |
連接埠必須與實際監聽設定一致。本文以 1053 表示可選用的本機解析服務,以 12345 表示透明代理入站連接埠;安裝核心不會自動建立這兩個監聽服務。dnsmasq 通常透過 53 連接埠提供服務給終端裝置,請勿讓其他程序同時占用相同位址的 53 連接埠。
三、Xray 與 V2Fly:依協定設定選擇核心
V2Ray 是專案與技術生態中常見的稱呼,實際部署時仍須區分具體核心。Xray 與 V2Fly 並非相同核心的不同名稱,也無法保證同一份設定檔能直接通用。若現有連線需要 REALITY 或 XTLS Vision,請確認 Xray 是否支援相應功能;使用 VMess 等連線時,則應依伺服器參數、傳輸方式及所選版本確認相容性。
- 桌面端驗證:先使用 v2rayN 確認連線可用,並記下協定、位址、連接埠、使用者識別碼、TLS、傳輸方式及相關欄位。桌面端可以連線,不代表路由器設定已正確。
- Android 對照:v2rayNG 使用 Xray 核心,v2flyNG 使用 V2Fly 核心。用戶端儲存的訂閱與執行時使用的核心設定檔並非同一種檔案。
- 訂閱的限制:訂閱可能是經編碼的分享連結集合,也可能採用特定用戶端格式。獨立核心通常會讀取自己的設定檔,不會自動將任意訂閱網址轉成可執行的設定。
- 確認平台相容性:依 OpenWrt 套件架構與處理器資訊選擇程式。只看裝置標示的「64 位元」不足以確認二進位檔能否執行,還須考量指令集與建置相容性。
cat /etc/openwrt_release
ubus call system board
uname -m
# 檢查已安裝核心的版本
xray version
v2ray version
安裝時優先使用與目前韌體版本及架構相符的套件來源。OpenWrt 22.03 起,預設防火牆改用 firewall4 與 nftables;舊版以 iptables 為基礎的教學不能直接套用於所有版本。套件管理工具也可能因韌體版本而異,請先確認目前系統使用的工具,切勿混用不同發行版本的套件來源。
結論:先確認連線,再接管流量
修改閘道前,先讓旁路由上的核心透過明確指定的代理入口完成一次連線測試。如此可將「節點或設定失敗」與「透明轉送失敗」分開處理,避免同時排查協定、DNS 與防火牆。
四、OpenWrt 部署步驟:分別設定網路、核心與轉送
以下選單路徑依常見的中文 LuCI 介面撰寫,欄位名稱可能因韌體版本或翻譯而異。操作前請先備份現有設定,並確保仍有一台裝置可直接存取主路由。首次試行時不要修改全網 DHCP 閘道,也不要在遠端連線期間一次替換所有防火牆規則。
-
備份設定
前往「系統」→「備份/升級」→「產生備份」,儲存目前設定。記下主路由位址、DHCP 範圍與旁路由接線方式,並預先準備可直接連線的管理入口。
-
設定固定位址
前往「網路」→「介面」→「LAN」→「編輯」→「一般設定」,設定靜態位址
192.168.10.2、子網路遮罩255.255.255.0、閘道192.168.10.1。確認管理位址可正常連線後,再處理 DHCP。 -
驗證核心
安裝符合架構的 Xray 或 V2Fly,並建立對應格式的設定檔。先檢查語法,再啟動臨時的明確代理入口測試連線;此時不要啟用全域流量接管。
-
設定轉送
依目前使用的防火牆後端建立透明入口、流量標記與必要的策略路由。先將來源限定為
192.168.10.100,並排除旁路由本身、核心出口及管理網段。 -
連接測試裝置
將測試電腦的預設閘道與 DNS 改為
192.168.10.2,並關閉該電腦上的系統代理,分別測試直連位址、代理目標與網域名稱解析,避免桌面用戶端掩蓋路由問題。 -
設定開機自動啟動
確認測試通過後,再設定 procd 服務與防火牆持久化規則。前往「系統」→「啟動項」檢查服務狀態,並重新啟動裝置,確認規則與程序都能恢復。
以下使用約定的設定檔路徑示範檢查指令。只執行已安裝核心對應的一組;檔案路徑必須與服務啟動參數一致。V2Fly 範例採用 v5 指令格式,舊版請先查看內建說明,勿直接照搬參數。
# Xray 設定檔檢查
xray run -test -config /etc/xray/config.json
# V2Fly v5 設定檔檢查
v2ray test -c /etc/v2ray/config.json
# OpenWrt 服務記錄
logread
設定檢查成功只代表檔案可供解析,不代表遠端連線正常。正式執行前還須檢查程序權限、記錄輸出、監聽位址、系統時間與憑證驗證。路由器重新啟動後若時間尚未同步,可能造成 TLS 連線失敗;請將時間同步納入啟動後的檢查項目。
五、透明代理原理:防火牆接管與核心分流是兩個層次
第一層由 OpenWrt 決定哪些封包交給核心,第二層由核心決定收到的連線要經由直連出口或代理出口。只設定核心 routing 規則,卻沒有透明入口,終端裝置的流量不會自行進入核心;只設定防火牆轉送,卻沒有正確的出站設定,也無法完成代理連線。
| 機制 | 主要用途 | 部署注意事項 |
|---|---|---|
| REDIRECT | 將連線重新導向本機連接埠,常用於接管 TCP 流量 | 必須配合核心還原原始目標位址的方式,不能將 TCP 方案直接套用於 UDP |
| TPROXY | 以透明方式將流量送至本機監聽服務,可用於 TCP 與 UDP | 需要透明通訊端支援、標記、策略路由及相應的防火牆規則 |
| 核心路由 | 依網域名稱、目標位址、連接埠等條件選擇出站方式 | 注意規則順序、網域資訊來源及使用的資料檔 |
| 排除核心出口 | 避免核心發起的連線再次遭到接管 | 依程序、標記或目的位址等條件規劃,並兼顧節點網域名稱解析 |
以 Xray 為例,透明入口可使用 dokodemo-door,搭配 followRedirect 與相符的 socket 設定;這些欄位仍須依具體模式組合。TPROXY 通常搭配專用路由表,將帶有指定標記的封包視為本機流量,送往迴圈介面。標記值與路由表編號應依本機規劃,避開現有 VPN、策略路由或其他服務已使用的值。
- 先排除路由器管理位址、區域網路目的地、群播與廣播流量,避免將裝置探索及管理流量全部送往遠端代理。
- 防火牆只接管測試裝置時,請用來源 IP 限定範圍;之後再逐步擴充至明確指定的裝置群組,不要一開始就匹配整個 LAN。
- 核心本身發起的出站連線必須避開透明入口,否則會形成「代理連線再次進入代理」的迴圈。
- 驗證期間請檢查流量卸載設定。某些快速轉送路徑可能讓後續封包略過預期處理,應先排除其影響,再評估是否重新啟用。
六、DNS 與 IPv6:閘道設定正確,流量仍可能繞過分流
終端裝置將 DNS 指向旁路由後,還須確認旁路由將查詢轉送至何處,以及該路徑是否符合分流目標。讓直連網域使用合適的解析出口,並讓代理網域的查詢經由預期通道完成,比將所有解析要求都送至同一出口更容易找出問題。避免讓 dnsmasq 將查詢轉送至核心,而核心解析時又回到 dnsmasq,形成解析迴圈。
- 確認監聽設定。終端裝置連至
192.168.10.2:53;若設定獨立的本機解析服務,可讓 dnsmasq 將查詢轉送至127.0.0.1:1053。後者必須確實支援所需的 DNS 要求,不能用一般代理連接埠取代。 - 檢查轉送設定。前往「網路」→「DHCP/DNS」,檢查 DNS 轉送設定與上游解析來源,確認沒有意外沿用網際網路服務供應商提供的解析器。修改前請記下原設定,以便還原。
- 區分核心 DNS 功能。核心內建 DNS 是否用於路由判斷,與是否提供區域網路可存取的 DNS 入站服務,是兩回事。不能只因設定中有 DNS 欄位,就認定終端解析已由核心接管。
- 檢查加密 DNS。瀏覽器的安全 DNS 或應用程式內建解析功能可能繞過終端設定。測試時先統一解析路徑,再決定如何透過裝置設定或路由策略處理。
- 另外檢查 IPv6。即使 IPv4 閘道已改為旁路由,終端裝置仍可能依照主路由的 IPv6 路由通告,直接連至上游。請為 IPv6 設定相應的轉送與 DNS 策略,或先在測試裝置上暫時停用 IPv6 以隔離問題。
FakeDNS 會回傳合成位址,再由核心還原目標網域名稱。它並非「啟用就能防止 DNS 洩漏」的開關:位址範圍、終端快取、透明入口與路由辨識都必須相互配合。首次部署建議先完成一般 DNS 與 TCP、UDP 轉送驗證,再評估是否需要 FakeDNS,避免混淆位址對應問題與閘道問題。
七、疑難排解與還原:依序檢查位址、解析與轉送
連線失敗時先檢查基本網路,不要立刻更換協定。確認測試電腦能連上旁路由管理位址、旁路由能連到主路由,且核心的明確代理可正常使用;三項都成立後,再集中排查透明接管與 DNS。測試工具可能需要另外安裝;若找不到指令,請先確認套件是否已安裝,不要因此判定網路已損壞。
# 在旁路由檢查位址、路由與策略規則
ip addr show
ip route show
ip rule show
# 使用 firewall4 的系統檢查實際規則
nft list ruleset
# 在具備 nslookup 的測試終端檢查指定 DNS
nslookup example.com 192.168.10.2
| 現象 | 優先檢查項目 | 判斷方向 |
|---|---|---|
| 連管理頁面也失敗 | 位址衝突、網路線、子網路遮罩與裝置路由 | 先修復區域網路連線,與代理協定無關 |
| 明確代理可用,透明模式失敗 | 來源匹配、透明監聽、標記與策略路由 | 優先檢查 OpenWrt 的流量接管路徑 |
| 解析逾時或持續失敗 | 53 連接埠監聽、上游連線能力、解析迴圈 | 分別測試終端裝置至旁路由,以及旁路由至上游 |
| 只有部分應用程式繞過代理 | UDP、IPv6、應用程式內建 DNS 與閘道 | 不能只看瀏覽器頁面就判斷所有裝置的流量 |
| 重新啟動後失效 | procd、自動啟動、規則持久化與時間同步 | 檢查啟動流程,不要重複匯入訂閱 |
結論:保留單一裝置的還原方式
全面部署前,先將測試電腦的閘道與 DNS 還原為原設定,確認原有網路仍可使用。之後逐台加入旁路由策略,並記錄每次變更;只有重新啟動、DNS、UDP 與 IPv6 檢查都通過後,才考慮統一發送閘道設定。
旁路由部署的關鍵,不是讓核心程序顯示「執行中」,而是建立一條清楚、可驗證且可還原的網路路徑。先確認協定連線,再確認流量進入核心,最後確認直連與代理流量分別從正確出口送出。桌面與 Android 用戶端適合用來驗證連線參數;OpenWrt 則還需維護防火牆、閘道、DNS 與服務生命週期。