旁路由網路架構允許你在主路由之外再部署一台 OpenWrt 旁路由。你可以將特定的家用裝置閘道指向這台旁路由,透過自訂代理規則,將其網際網路流量經由美國專用伺服器轉發。

設定錯誤很容易導致路由迴圈,並暴露未加密的 IPv6 DNS 洩漏。但你仍然可以在保留全網精細代理控制的前提下,修復這些問題。

為了保證穩定性,你需要完成四個關鍵設定步驟。首先,為 OpenWrt 硬體分配一個靜態 IP 位址。其次,關閉旁路由上的 DHCP 服務。然後,啟用 OpenClash 的 Meta TUN 模式,實現全量流量接管並透過美國專用伺服器轉發。最後,設定 NDP 代理,使雙棧路由得以正確運作。採用這種方案後,OpenWrt 旁路由可以高效承載 OpenClash 的執行。

要點速覽

  • 在主路由所在網段內,為 OpenWrt 旁路由分配一個靜態 IP 位址。
  • 關閉旁路由上的本地 DHCP 服務,避免全網 IP 位址衝突。
  • 啟用 OpenClash Meta TUN 模式,將區域網路裝置的全部流量導入自訂代理規則。
  • 設定自訂 DNS 以防止未加密的 DNS 請求洩漏,並避免路由迴圈。
  • 透過設定 NDP 代理或中繼模式,安全處理網路中的 IPv6 雙棧流量。

為旁路由刷寫 OpenWrt 韌體

準備 OpenWrt 韌體安裝

例如 mini-PC 或以樹莓派執行 OpenWrt 的目標裝置,都需要一份乾淨的系統映像。刷寫 OpenWrt 韌體必須確保映像檔案完整無誤,否則會導致常見的啟動失敗。你需要取得官方的 factory 韌體包,或為對應架構專門編譯的客製 OpenWrt 韌體映像。

在開始刷機之前,你必須先校驗映像檔案。毀損的安裝檔案會在首次開機設定時造成無法回復的啟動錯誤。

  1. 從 OpenWrt 官方網站下載與你路由器型號對應的韌體映像。
  2. 在 OpenWrt 官網找到該韌體檔案對應的 MD5 校驗值。
  3. 使用校驗工具,計算你已下載韌體檔案的 MD5 校驗和。
  4. 將你計算得到的校驗值與官方提供的 MD5 校驗值進行比對。
  5. 如果校驗值一致,代表韌體檔案未毀損,可以安全刷寫;如果不一致,請勿使用該檔案刷機。
  6. 在為旁路由刷機前,同樣執行上述校驗流程,以避免因韌體毀損導致安裝失敗。

使用 BalenaEtcher 等工具,將已經驗證過的映像寫入儲存媒介,再據此對系統進行刷機。然後將準備好的儲存媒介插入硬體裝置並開機。

初始化 OpenWrt 旁路由網路

開機後你需要第一時間重新設定本地網路參數。OpenWrt 旁路由必須在主路由網段中使用靜態 IP 位址。你可以透過 SSH 編輯 /etc/config/network 來修改預設網路設定,並將預設閘道位址指向主路由的 IP。

同時,你需要關閉本機的位址分配功能,以避免全網出現 DHCP 衝突。在 /etc/config/dhcp 中編輯相關服務設定。為 LAN 介面顯式設定 option dhcpv4 'disabled'option dhcpv6 'disabled'option ra 'disabled'

uci set dhcp.lan.dhcpv4='disabled'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra='disabled'
uci commit dhcp
/etc/init.d/dnsmasq restart

完成這一步後,基礎環境就已準備就緒。現在你的 OpenWrt 韌體可以安全地運作在主網路內部,而不會產生路由錯誤。刷機階段順利結束,接下來即可進入代理設定環節。

在旁路由上設定 OpenClash

OpenClash TUN 模式設定

你可以在這台旁路由上部署 OpenClash,從而完全掌控網路流量。在安裝 openclash 之前,需要先準備好所有系統軟體相依套件。登入 Web 管理介面,開啟軟體管理頁面,移除系統自帶的 dnsmasq 軟體包,並安裝 dnsmasq-full。這個套件為自訂 DNS 分流規則提供了關鍵支援。隨後在 Shell 終端中執行以下指令,一次性安裝 openclash 所需要的相依套件,避免缺少函式庫:

opkg update && opkg install bash dnsmasq-full curl ca-bundle ip-full ruby ruby-yaml kmod-tun kmod-inet-diag unzip kmod-nft-tproxy luci-compat luci luci-base

將下載好的軟體包上傳到 openwrt 執行環境中。上傳過程中,你可能會在瀏覽器中短暫看到 XHR 錯誤提示,這只是介面顯示問題,可以忽略並重新整理頁面。在「服務」選單中開啟 openclash 外掛面板,在首次設定時選擇 Meta 核心。Meta 核心可在第三層攔截整個區域網路的流量。

  1. 在「配置檔案管理」中新增你的訂閱連結。
  2. 選擇 Clash 核心類型並儲存訂閱配置檔案。
  3. 開啟主開關以啟動核心下載流程。
  4. 在系統執行日誌中監控核心下載進度。
  5. 如果下載長時間無進展,將下載來源切換為 CDN 鏡像位址。

OpenClash Meta 核心會在系統上建立一個獨立的 TUN 虛擬網路介面。TUN 模式在第三層直接攔截所有進入系統的網路封包,無需複雜的應用層代理設定或逐一客戶端設定。該模式可以為所有接入的家庭終端穩定轉送流量。

自訂 DNS 與劫持防護

合理的 DNS 設定可以防止未加密的網域查詢洩漏給你的網際網路服務提供者。OpenClash 提供兩種主要 DNS 工作模式來處理客戶端請求,你需要根據實際情境選擇合適的模式,以既能防止本地域名被劫持,又不影響內部服務存取。

模式DNS 請求處理方式對 DNS 劫持防護的影響
Fake-IP 增強模式將所有 DNS 請求轉發到設定的 DNS 伺服器。可能導致所有 DNS 查詢(包含 DDNS 解析)都被轉發或劫持。可透過關閉「本地 DNS 劫持」選項來避免。
Redir-Host將 DNS 請求傳送到設定的 DNS 伺服器,但會對部分特定網域(如 DDNS 服務網域)直接回傳解析結果。避免這些特定請求被轉發,從而防止對這些網域的錯誤 DNS 劫持。

你需要在 OpenClash 的 DNS 設定頁面中仔細調整各項選項。啟用自訂 DNS 伺服器開關,以覆蓋系統預設解析器。將 OpenWrt 本機的管理 IP 位址加入本地 DNS 伺服器清單中,這一設定可以阻止旁路由與主路由之間出現無限遞迴的 DNS 查詢迴圈。

如果你的家庭網路中啟用了動態 DNS 服務,請在 Fake-IP 模式下關閉本地 DNS 劫持選項。這樣既可以保持本地域名解析正常,又能可靠地代理外網請求。儲存設定後,檢查系統的即時執行日誌,確認 OpenClash 已經接管客戶端流量,並徹底阻斷未加密的 DNS 洩漏。

為 OpenWrt 啟用 IPv6 雙棧設定

設定 NDP 代理與前綴委派

在開啟雙棧前,你必須根據上游網路的實際情況選擇合適的方案。不同電信業者的前綴分配方式不同:有些會提供完整的前綴委派(PD),而另一些只會為主閘道分配單一 /64 前綴。你需要在 /etc/config/dhcp 中針對具體的上游條件調整選項設定。

當主路由能夠獲得前綴委派並負責全網位址分配時,建議使用 DHCP 中繼模式。此時,位於旁路由之後的裝置也會從下發的前綴中取得正式 IPv6 位址。你需要將上聯介面設為主介面,並將相關服務全部設定為中繼。

如果電信業者僅提供一個 /64 子網而沒有前綴委派,則應切換為 NDP 代理模式。NDP 代理在本地介面間轉發位址探索封包,使連接到旁路由的裝置可以共享這一子網,同時保持直通網際網路的存取能力。

UCI 選項取值效果
dhcp.lan.rarelayLAN 介面的 RA 封包被中繼
dhcp.lan.dhcpv6relayLAN 介面的 DHCPv6 請求被中繼
dhcp.lan.ndprelayLAN 啟用 NDP 代理
dhcp.wan.rarelayWAN 介面的 RA 封包被中繼
dhcp.wan.dhcpv6relayWAN 介面的 DHCPv6 請求被中繼
dhcp.wan.ndprelayWAN 啟用 NDP 代理

/etc/config/dhcp 中寫入這些設定以啟用中繼功能。儲存檔案後,重新啟動 dnsmasq 服務使設定生效。

在 OpenClash 中轉送 IPv6 流量

在完成網路介面設定後,你還需要讓 openclash 支援雙棧流量。現代客戶端軟體預設都會請求 IPv4/IPv6 雙棧連線,如果在核心中關閉雙棧支援,很容易出現未加密直連或繞過代理的情況。

在瀏覽器中開啟 OpenClash 面板,找到全域設定中的 IPv6 開關並將其開啟,此舉會通知 Meta 核心同時接管 IPv4 與 IPv6 流量。

在 openclash 中啟用 IPv6,可以防止客戶端在連線失敗時回退到未加密的直接連線。

接著進入自訂 DNS 功能表,檢查目前生效的設定。開啟自訂 IPv6 DNS 選項,並填入安全的 DNS 伺服器位址。這樣 Meta 核心就會透過加密代理通道解析雙棧網域名稱。

你還需要檢查 openclash 中的 TUN 模式設定。選擇原生 IPv6 TUN 模式,以建立專門用於雙棧轉送的虛擬介面。該設定可以在第三層攔截進入系統的封包,並直接套用你的規則集。

最後,檢查 openclash 中的規則定義,確保雙棧請求會被路由到包含可用外部節點的代理群組。儲存目前設定並重新啟動核心程序,整個設定流程便告完成。此時,你的 OpenWrt 閘道可以正確過濾網路請求,並在所有連線上保護隱私。

客戶端測試與網路最佳化

為客戶端分配旁路由閘道

完成基礎設定後,需要將目標裝置指向 OpenWrt 旁路由,從而讓其流量透過旁路由轉送。為裝置手動設定網路參數是控制流量走向最可靠的方式。

要讓客戶端裝置透過 OpenWrt 旁路由上網,可以為每台裝置手動設定靜態 IP,並將預設閘道設為 OpenWrt 的 IP。這樣可以防止客戶端隨意修改 ARP 項目,並強制其將流量送往旁路由。有論壇使用者提到,即便客戶端仍然從主路由取得 IP,只要手動將閘道改成 GL-MTxxxx 的 IP,所有流量便會透過這台 GL 裝置中轉。

你也可以在主路由或本地網路的其他節點進行相應調整,讓裝置 IP 分配更加自動化。無論採用哪種方案,都建議重新檢查整體網路設定,以乾淨地管理本地選項:

  • 手動閘道設定:在系統設定檔中透過 option gateway 和 option dns 指向指定裝置位址,可以強制區域網路流量走向你的目標硬體。
  • 閘道 IP 作為 DNS:讓客戶端使用主閘道位址作為 DNS 伺服器,可以確保 DNS 請求依照代理規則正確轉送。

驗證代理效果與 IPv6 洩漏防護

在完成所有設定後,你需要對客戶端連線進行測試。在接入旁路由的目標裝置上開啟瀏覽器,造訪線上 IP 檢測網站,頁面應顯示目前代理節點的出口 IP。在 openclash 控制台中檢視即時連線列表,可以確認 OpenClash 已在第三層正確接管本地流量。

隨後,你還需要對位址洩漏進行檢測。造訪專門的 IPv6 測試網站,驗證 IPv6 連線的安全性。測試結果應顯示你的真實位置已被代理規則隱藏。得當的 openclash 核心設定會阻止任何未加密 DNS 請求直接傳送到外部伺服器。此時,你的家庭網路已透過 openclash 安全轉送資料,並在所有活動介面上維持隱私防護。

至此,你已經在 OpenWrt 旁路由環境中成功整合了 OpenClash 與 IPv6 雙棧路由。建議定期檢查各個終端的網路設定,確保裝置流量持續經過代理規則,而不會繞過旁路由直接連線外網。OpenClash 會對每一次 DNS 請求進行安全處理。

當上游鏈路故障導致前綴委派失效時,可以執行以下指令回復正常連線:

  1. 使用 ifdown wan6 && ifup wan6 重新啟動介面。
  2. 使用 ubus call network.interface.wan6 renew 觸發前綴續約。
  3. 建立 /etc/hotplug.d/iface/99-fix-pd-renew,在連通性檢測失敗時向 odhcp6c 傳送 SIGUSR1 訊號。

這些自訂網路設定可以提升主網路的安全性與可靠性。

常見問題 FAQ

為什麼完成網路設定後無法存取 OpenWrt Web 管理介面?

通常是因為你將 OpenWrt 設定到了主路由網段之外。可以在電腦網卡上手動設定一個位於目標網段內的靜態 IP 位址,恢復連線後即可重新存取管理面板。

為什麼 OpenClash 無法在閘道裝置上正常啟動?

缺少系統相依套件或核心下載失敗都可能導致啟動錯誤。在啟動 openclash 之前,你必須安裝 dnsmasq-full。同時檢查外網連線狀況,必要時將核心下載連結切換為鏡像來源。

如何排查 IPv6 DNS 洩漏等常見問題?

在代理面板中啟用原生 IPv6 TUN 模式,並設定自訂 IPv6 DNS 伺服器,確保雙棧網域查詢透過加密通道進行解析,從而防止客戶端將未加密的網域請求直接傳送給電信業者。

為什麼應該在網路中部署一台 OpenWrt 旁路由?

OpenWrt 旁路由可以承載大量加密與分流規則,而不會明顯增加主路由負載。你可以將特定家用裝置納入精細化代理控制路徑,同時維持其他一般連線的穩定速度。