本文重點

本文適合已能使用桌面或 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 服務
旁路由 LAN192.168.10.2/24設定固定管理位址,上游閘道指向主路由
測試電腦192.168.10.100/24預設閘道與 DNS 暫時設為旁路由位址
其他終端裝置維持現有自動設定試行期間繼續使用原有網路路徑
53
終端裝置連至旁路由 DNS 的連接埠
1053
範例:內部 DNS 服務連接埠
12345
範例:透明代理入站連接埠

連接埠必須與實際監聽設定一致。本文以 1053 表示可選用的本機解析服務,以 12345 表示透明代理入站連接埠;安裝核心不會自動建立這兩個監聽服務。dnsmasq 通常透過 53 連接埠提供服務給終端裝置,請勿讓其他程序同時占用相同位址的 53 連接埠。

三、Xray 與 V2Fly:依協定設定選擇核心

V2Ray 是專案與技術生態中常見的稱呼,實際部署時仍須區分具體核心。Xray 與 V2Fly 並非相同核心的不同名稱,也無法保證同一份設定檔能直接通用。若現有連線需要 REALITY 或 XTLS Vision,請確認 Xray 是否支援相應功能;使用 VMess 等連線時,則應依伺服器參數、傳輸方式及所選版本確認相容性。

cat /etc/openwrt_release
ubus call system board
uname -m

# 檢查已安裝核心的版本
xray version
v2ray version

安裝時優先使用與目前韌體版本及架構相符的套件來源。OpenWrt 22.03 起,預設防火牆改用 firewall4 與 nftables;舊版以 iptables 為基礎的教學不能直接套用於所有版本。套件管理工具也可能因韌體版本而異,請先確認目前系統使用的工具,切勿混用不同發行版本的套件來源。

結論:先確認連線,再接管流量

修改閘道前,先讓旁路由上的核心透過明確指定的代理入口完成一次連線測試。如此可將「節點或設定失敗」與「透明轉送失敗」分開處理,避免同時排查協定、DNS 與防火牆。

四、OpenWrt 部署步驟:分別設定網路、核心與轉送

以下選單路徑依常見的中文 LuCI 介面撰寫,欄位名稱可能因韌體版本或翻譯而異。操作前請先備份現有設定,並確保仍有一台裝置可直接存取主路由。首次試行時不要修改全網 DHCP 閘道,也不要在遠端連線期間一次替換所有防火牆規則。

  1. 備份設定

    前往「系統」→「備份/升級」→「產生備份」,儲存目前設定。記下主路由位址、DHCP 範圍與旁路由接線方式,並預先準備可直接連線的管理入口。

  2. 設定固定位址

    前往「網路」→「介面」→「LAN」→「編輯」→「一般設定」,設定靜態位址 192.168.10.2、子網路遮罩 255.255.255.0、閘道 192.168.10.1。確認管理位址可正常連線後,再處理 DHCP。

  3. 驗證核心

    安裝符合架構的 Xray 或 V2Fly,並建立對應格式的設定檔。先檢查語法,再啟動臨時的明確代理入口測試連線;此時不要啟用全域流量接管。

  4. 設定轉送

    依目前使用的防火牆後端建立透明入口、流量標記與必要的策略路由。先將來源限定為 192.168.10.100,並排除旁路由本身、核心出口及管理網段。

  5. 連接測試裝置

    將測試電腦的預設閘道與 DNS 改為 192.168.10.2,並關閉該電腦上的系統代理,分別測試直連位址、代理目標與網域名稱解析,避免桌面用戶端掩蓋路由問題。

  6. 設定開機自動啟動

    確認測試通過後,再設定 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、策略路由或其他服務已使用的值。

六、DNS 與 IPv6:閘道設定正確,流量仍可能繞過分流

終端裝置將 DNS 指向旁路由後,還須確認旁路由將查詢轉送至何處,以及該路徑是否符合分流目標。讓直連網域使用合適的解析出口,並讓代理網域的查詢經由預期通道完成,比將所有解析要求都送至同一出口更容易找出問題。避免讓 dnsmasq 將查詢轉送至核心,而核心解析時又回到 dnsmasq,形成解析迴圈。

  1. 確認監聽設定。終端裝置連至 192.168.10.2:53;若設定獨立的本機解析服務,可讓 dnsmasq 將查詢轉送至 127.0.0.1:1053。後者必須確實支援所需的 DNS 要求,不能用一般代理連接埠取代。
  2. 檢查轉送設定。前往「網路」→「DHCP/DNS」,檢查 DNS 轉送設定與上游解析來源,確認沒有意外沿用網際網路服務供應商提供的解析器。修改前請記下原設定,以便還原。
  3. 區分核心 DNS 功能。核心內建 DNS 是否用於路由判斷,與是否提供區域網路可存取的 DNS 入站服務,是兩回事。不能只因設定中有 DNS 欄位,就認定終端解析已由核心接管。
  4. 檢查加密 DNS。瀏覽器的安全 DNS 或應用程式內建解析功能可能繞過終端設定。測試時先統一解析路徑,再決定如何透過裝置設定或路由策略處理。
  5. 另外檢查 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 與服務生命週期。