開啟 3 天免費試用
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。


完成 HomeProxy 安裝後,OpenWrt 系固件的 LuCI 會多出一個介面,負責產生 sing-box 客戶端設定,並把路由器流量導入其中。請從固件本身的官方軟件源安裝,只讓一部測試客戶端經一個你有權使用的節點上網,並確認停止服務後網絡回復直接連線。本文依據文末所列官方來源整理,未完成完整端到端實測。
關鍵要點
- HomeProxy 是 LuCI 應用程式,實際負責代理工作的是底層的 sing-box。
- 項目沒有附標籤的正式發佈版本,安裝時要固定固件和套件版本。
- 先只代理名單內一部客戶端,因為 DNS 改動會影響所有向路由器查詢 DNS 的裝置。
- 服務停止後,應清除它加入的路由規則、防火牆鏈和 dnsmasq 設定。
項目把 HomeProxy 描述為以 sing-box 驅動、面向 ARM64 及 AMD64 裝置的新一代 ImmortalWrt 代理平台。儲存庫內的 README 只是一份簡短待辦清單,並非安裝手冊,而且沒有附標籤的發佈版本。因此本文以提交 98a6ad9 的程式碼為準,只介紹其中確實存在的選項。[1]
套件定義宣告了四個依賴:sing-box、firewall4、kmod-nft-tproxy 和 ucode-mod-digest。它亦列出升級時會當作設定保留的檔案,包括 /etc/config/homeproxy 以及直連和代理域名清單。[2]
本文基線為 ImmortalWrt 24.10.6,這是以 OpenWrt 為基礎的固件:其 LuCI 軟件源提供 luci-app-homeproxy 版本 26.236.50592~9b8ee64,packages 軟件源則提供 sing-box 1.12.25-r1。[3][4] 原版 OpenWrt 沒有官方的 HomeProxy 發佈套件,所以本文不涉及從來歷不明的鏡像站安裝建置檔。
開始之前,先想清楚自己是否真的要在路由器上運行閘道。自建服務的責任範圍指南說明自行維護這條路徑要承擔哪些工作;把路由器交給它之前,也值得先比較自行維護伺服器與使用託管 VPN 服務的分別。如果 HomeProxy 不合適,另一類外掛可參考 OpenClash 安裝與還原流程,一般隧道方案則見 OpenWrt WireGuard 客戶端設定步驟。
選定主節點後啟動服務時,init 腳本會產生 /var/run/homeproxy/sing-box-c.json,並對它執行 sing-box check。檢查失敗便會中止啟動,原因寫入 /var/run/homeproxy/homeproxy.log。[5]
同一個腳本會改動路由器三個層面:寫入一個 dnsmasq 設定目錄並重新啟動 dnsmasq,加入策略路由規則(TProxy 預設使用表 100 和標記 101),並連同 HomeProxy 的鏈重新載入 firewall4。此外,WAN 介面上線時服務亦會重新載入。[5]
| 層面 | 隨服務啟用的內容 | 停止程序會清除的內容 |
|---|---|---|
| 代理程序 | 由產生的 JSON 啟動的 sing-box 客戶端 | 產生的 JSON 和客戶端日誌 |
| DNS | Global 模式下 dnsmasq 轉發至 127.0.0.1#5333 | HomeProxy 的 dnsmasq 目錄,然後重新啟動 dnsmasq |
| 路由 | 表 100 內的 ip rule 與本機路由 | IPv4 和 IPv6 的同一組規則與路由 |
| 防火牆 | inet fw4 內的 homeproxy_* 鏈和集合 | 清空並刪除這些鏈和集合 |
DNS 這一行決定了測試應如何規劃。在 Global、Bypass mainland China 和 Custom routing 模式下,腳本會令 dnsmasq 停用原有上游,把查詢轉發到本機 sing-box 的 DNS 連接埠。因此受影響的是所有向路由器查詢 DNS 的客戶端,而不只是你列入代理名單的那一部。[5]
使用你擁有或有權管理的路由器,準備一部接在已知 LAN 埠的有線客戶端,並確認該型號有文件記載的還原方法。安裝前記錄固件版本、CPU 架構和剩餘空間。
cat /etc/openwrt_release
uname -m
opkg print-architecture
df -h /overlay /tmp
把架構與準備使用的套件索引對照。LuCI 套件與架構無關,但 sing-box 和核心模組按目標平台分別建置,所以同一版本下,AMD64 路由器和 aarch64_cortex-a53 路由器需要不同的二進位檔。[3][4]
如果固件不是 ImmortalWrt 24.10.6,又無法確認有相符的官方軟件源,就在此停下。混用其他版本的套件可能破壞核心模組依賴,本文亦沒有驗證基線以外的相容性。
在 LuCI 開啟 System → Backup / Flash Firmware(即備份與刷寫固件頁面),把設定備份下載到另一部裝置。同時記下目前的 DNS 轉發伺服器和測試客戶端的 LAN 地址。整個過程保持有線管理工作階段不中斷。
在路由器上更新套件清單,再從官方軟件源安裝 LuCI 應用程式。套件清單存放在記憶體中的 /tmp/opkg-lists,重新開機後會消失,所以之後每次安裝前都要再執行 opkg update。[6]
opkg update
opkg list-installed | grep -E 'homeproxy|sing-box'
opkg install luci-app-homeproxy
安裝會自動拉取宣告的依賴。請細閱交易輸出:如果 opkg 報告依賴或核心模組衝突,便停下來按固件文件處理,不要強制安裝。[2][6] 安裝完成後重新整理 LuCI,應用程式會出現在 Services → HomeProxy 下,包含 Client Settings、Node Settings、Server Settings 和 Service Status 四個頁面。[1]
不要為了令安裝成功而升級路由器上全部套件。opkg 文件明確表示極不建議大量升級,因為可能令裝置在軟件層面變磚。[6]
開啟 Services → HomeProxy → Node Settings。在 Nodes 分頁,可以手動加入節點:選擇 Type,填寫 Address 和 Port;亦可透過 Import share links 貼上分享連結,完成 HomeProxy 節點匯入。匯入對話框列明支援 Hysteria、Shadowsocks、Trojan、VMess(v2rayN 格式)和 VLESS 連結。[7]
只使用你自己運行或獲准使用的節點。保持 Allow insecure 關閉:關閉證書驗證只會掩蓋不相符的問題,並沒有解決它。不要把訂閱地址或分享連結貼到公開論壇或截圖,它們本身就等同憑證。
HomeProxy 會按這些欄位產生 sing-box 設定。遇到不確定的協議參數時,請查閱路由器已安裝版本對應的 sing-box 文件中相應的 outbound 說明,不要憑估計填值。[8]
開啟 Client Settings → Routing Settings。把 Main node 設為剛匯入的節點;只要它仍停在 Disable,客戶端服務就不會啟動。[5][9] Main UDP node 保持預設,即沿用主節點。
Routing mode 提供 GFWList、Bypass mainland China(預設)、Only proxy mainland China、Custom routing 和 Global。[9] 第一次做有界限的測試時,Global 的預期最簡單:名單內客戶端的流量應從節點出去。Proxy mode 保持預設的 Redirect TCP + TProxy UDP;只有安裝了 ip-full 和 kmod-tun 才會出現 Tun 選項。[9]
| 設定 | 首次測試取值 | 原因 |
|---|---|---|
| Main node | 剛匯入的節點 | 客戶端服務啟動的前提 |
| Routing mode | Global | 每部客戶端只有一個清晰預期 |
| Proxy mode | Redirect TCP + TProxy UDP | 套件預設設定,無需額外模組 |
| IPv6 support | 按你計劃的涵蓋範圍 | 啟用後會加入 IPv6 規則 |
| Proxy filter mode | Proxy listed only | 只攔截一部客戶端 |
接着開啟 Access Control 分頁,選擇 LAN IP Policy,把 Proxy filter mode 設為 Proxy listed only(只代理名單內裝置)。在 Proxy IPv4 IP-s 加入測試客戶端的地址(測試 IPv6 時再填 Proxy IPv6 IP-s),管理電腦不要加入名單。[9] 儲存並套用後,確認 Service Status 顯示客戶端正在運行。
在測試客戶端逐項分開檢查,然後在名單外的客戶端重複主要檢查。下表為預期現象,實際結果請自行記錄。
| 檢查方法 | 預期現象 | 失敗時處理 |
|---|---|---|
| 在名單內客戶端開啟 IP 檢測頁 | 顯示節點的公共地址 | 查看 homeproxy.log 和節點欄位 |
| 在名單外客戶端開啟同一頁面 | 顯示平日的網絡供應商地址 | 重新檢查 Proxy filter mode 和名單 |
| 在兩部客戶端解析域名 | 回應經路由器傳回 | 停止服務並比對 dnsmasq |
| 在名單內客戶端瀏覽只有 IPv6 的網站 | 與 IPv6 support 的選擇一致 | 收窄範圍或關閉 IPv6 support |
| 從有線客戶端進入 LuCI | 管理仍然正常 | 立即停止服務 |
檢查出口時,可以在每部客戶端比對對外顯示的公共地址。名單內客戶端的地址改變了,只說明它的網頁流量到達了節點;DNS 和 IPv6 仍要分開檢查。
路由器狀態亦要查看。服務運行期間,ip rule show 應見到 HomeProxy 的標記規則,nft list ruleset | grep homeproxy 應見到它的鏈。[5] 啟用 IPv6 support 時,腳本會加入相應的 IPv6 規則;如果客戶端有 IPv6,而測試顯示 IPv6 是直接連線,請在擴大名單前記錄這項限制。
透過 init 腳本停止 HomeProxy;如果試用到此為止,再停用開機自動啟動。這只影響路由器上的 HomeProxy。
/etc/init.d/homeproxy stop
/etc/init.d/homeproxy disable
ip rule show
nft list ruleset | grep homeproxy
停止程序會刪除它的策略路由規則和路由,清空並刪除 homeproxy_* 鏈與集合,移除它的 dnsmasq 目錄並重新啟動 dnsmasq。[5] 因此兩條檢查指令都不應再顯示 HomeProxy 相關項目。測試客戶端的 IP 檢測頁應重新顯示平日的地址,域名解析亦應回到原本的轉發伺服器。
任何時候一旦失去管理存取,先用有線客戶端停止服務,再還原步驟 2 的設定備份。不要第一時間就清空整個防火牆或回復原廠設定。
只在同一固件版本的軟件源內升級,先執行 opkg update,升級後核對已安裝版本。套件把 /etc/config/homeproxy、證書、規則集以及直連和代理清單標記為設定檔,按設計會在升級後保留;但仍應保留自己的備份。[2][6]
解除安裝時,先停止並停用服務,完成上述還原檢查,再移除應用程式。opkg remove --autoremove luci-app-homeproxy 會一併移除只作為其依賴而安裝的套件;確認前請查看它列出的清單,因為 sing-box 可能仍被其他元件使用。[6] 試用期間曾外洩的節點憑證應予撤銷,而不只是刪除本機副本。
不是。HomeProxy 是 LuCI 應用程式,負責寫入 sing-box 設定、路由規則和 dnsmasq 設定;sing-box 則是另一個獨立的代理程式,實際承載流量。
項目沒有提供附標籤的發佈套件,原版 OpenWrt 的軟件源亦沒有收錄。本文涵蓋的是 ImmortalWrt 24.10.6,它的官方 LuCI 軟件源提供這個套件。
在 Global 等模式下,HomeProxy 會把 dnsmasq 指向本機 sing-box 的 DNS 連接埠。所有向路由器查詢 DNS 的裝置都會經過這條路徑,即使它們的流量沒有經代理。
先用 Global 配合 Proxy listed only,令一部客戶端只有一個清晰預期。等首次測試和回復都成功後,才考慮改用其他模式。
首次測試不需要。預設的 Redirect TCP + TProxy UDP 模式不依賴額外模組,而且要安裝 ip-full 和 kmod-tun 之後才會出現 Tun 選項。
先確認 Main node 沒有設為 Disable,再查看 /var/run/homeproxy/homeproxy.log。sing-box 設定檢查失敗會中止啟動,並把原因記錄在這個日誌內。
真正清除規則和 dnsmasq 改動的是停止服務這一步。請先停止服務,確認路由器上沒有 HomeProxy 規則,再測試客戶端,最後才移除套件。
免責聲明: 本文僅供一般資訊參考,不構成法律、技術或其他專業建議。我們不保證內容的準確性、完整性或時效性。請只在你擁有或獲授權使用的網絡、路由器和代理節點上操作。
來源:
Sources checked 2026 年 10 月 14 日。
延伸閱讀:
註冊即可免費體驗全部高級功能。
*只限新用戶;每位用戶只可獲得一次試用。