HomeProxy 安裝教學:OpenWrt 部署、驗證與回復

HomeProxy 安裝教學:OpenWrt 部署、驗證與回復

Kevin Wu
2026年10月14日· 8 分鐘讀完

完成 HomeProxy 安裝後,OpenWrt 系固件的 LuCI 會多出一個介面,負責產生 sing-box 客戶端設定,並把路由器流量導入其中。請從固件本身的官方軟件源安裝,只讓一部測試客戶端經一個你有權使用的節點上網,並確認停止服務後網絡回復直接連線。本文依據文末所列官方來源整理,未完成完整端到端實測。

關鍵要點

  • HomeProxy 是 LuCI 應用程式,實際負責代理工作的是底層的 sing-box。
  • 項目沒有附標籤的正式發佈版本,安裝時要固定固件和套件版本。
  • 先只代理名單內一部客戶端,因為 DNS 改動會影響所有向路由器查詢 DNS 的裝置。
  • 服務停止後,應清除它加入的路由規則、防火牆鏈和 dnsmasq 設定。

本文涵蓋哪一種 HomeProxy 安裝環境?

項目把 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 客戶端設定步驟。

HomeProxy 會改動路由器上的哪些部分?

選定主節點後啟動服務時,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 和客戶端日誌
DNSGlobal 模式下 dnsmasq 轉發至 127.0.0.1#5333HomeProxy 的 dnsmasq 目錄,然後重新啟動 dnsmasq
路由表 100 內的 ip rule 與本機路由IPv4 和 IPv6 的同一組規則與路由
防火牆inet fw4 內的 homeproxy_* 鏈和集合清空並刪除這些鏈和集合

DNS 這一行決定了測試應如何規劃。在 Global、Bypass mainland China 和 Custom routing 模式下,腳本會令 dnsmasq 停用原有上游,把查詢轉發到本機 sing-box 的 DNS 連接埠。因此受影響的是所有向路由器查詢 DNS 的客戶端,而不只是你列入代理名單的那一部。[5]

步驟 1:核對固件、架構和儲存空間

使用你擁有或有權管理的路由器,準備一部接在已知 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,又無法確認有相符的官方軟件源,就在此停下。混用其他版本的套件可能破壞核心模組依賴,本文亦沒有驗證基線以外的相容性。

步驟 2:備份後完成 HomeProxy 安裝

在 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]

步驟 3:匯入一個獲授權的節點

開啟 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]

步驟 4:為一部客戶端選擇 HomeProxy 路由模式

開啟 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 modeGlobal每部客戶端只有一個清晰預期
Proxy modeRedirect TCP + TProxy UDP套件預設設定,無需額外模組
IPv6 support按你計劃的涵蓋範圍啟用後會加入 IPv6 規則
Proxy filter modeProxy 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 顯示客戶端正在運行。

步驟 5:驗證客戶端出口、DNS 和 IPv6

在測試客戶端逐項分開檢查,然後在名單外的客戶端重複主要檢查。下表為預期現象,實際結果請自行記錄。

檢查方法預期現象失敗時處理
在名單內客戶端開啟 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 是直接連線,請在擴大名單前記錄這項限制。

步驟 6:停止服務並確認回復直接連線

透過 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 的設定備份。不要第一時間就清空整個防火牆或回復原廠設定。

如何安全地升級或解除安裝 HomeProxy?

只在同一固件版本的軟件源內升級,先執行 opkg update,升級後核對已安裝版本。套件把 /etc/config/homeproxy、證書、規則集以及直連和代理清單標記為設定檔,按設計會在升級後保留;但仍應保留自己的備份。[2][6]

解除安裝時,先停止並停用服務,完成上述還原檢查,再移除應用程式。opkg remove --autoremove luci-app-homeproxy 會一併移除只作為其依賴而安裝的套件;確認前請查看它列出的清單,因為 sing-box 可能仍被其他元件使用。[6] 試用期間曾外洩的節點憑證應予撤銷,而不只是刪除本機副本。

總結

  • 項目沒有附標籤的發佈版本,請固定固件、LuCI 套件和 sing-box 的版本。
  • 從固件官方軟件源安裝,遇到依賴衝突就停下。
  • 以 Global 模式只代理名單內一部客戶端,並清楚 DNS 改動會影響路由器所有客戶端。
  • 分別驗證出口、DNS、IPv6 和管理存取,再證明停止服務能回復直接連線。

常見問題

HomeProxy 和 sing-box 是同一樣東西嗎?

不是。HomeProxy 是 LuCI 應用程式,負責寫入 sing-box 設定、路由規則和 dnsmasq 設定;sing-box 則是另一個獨立的代理程式,實際承載流量。

原版 OpenWrt 可以安裝 HomeProxy 嗎?

項目沒有提供附標籤的發佈套件,原版 OpenWrt 的軟件源亦沒有收錄。本文涵蓋的是 ImmortalWrt 24.10.6,它的官方 LuCI 軟件源提供這個套件。

為何沒列入名單的客戶端 DNS 也變了?

在 Global 等模式下,HomeProxy 會把 dnsmasq 指向本機 sing-box 的 DNS 連接埠。所有向路由器查詢 DNS 的裝置都會經過這條路徑,即使它們的流量沒有經代理。

應該先用哪種路由模式?

先用 Global 配合 Proxy listed only,令一部客戶端只有一個清晰預期。等首次測試和回復都成功後,才考慮改用其他模式。

需要使用 Tun 模式嗎?

首次測試不需要。預設的 Redirect TCP + TProxy UDP 模式不依賴額外模組,而且要安裝 ip-full 和 kmod-tun 之後才會出現 Tun 選項。

服務無法啟動應怎樣處理?

先確認 Main node 沒有設為 Disable,再查看 /var/run/homeproxy/homeproxy.log。sing-box 設定檢查失敗會中止啟動,並把原因記錄在這個日誌內。

解除安裝應用程式會自動還原原本的網絡嗎?

真正清除規則和 dnsmasq 改動的是停止服務這一步。請先停止服務,確認路由器上沒有 HomeProxy 規則,再測試客戶端,最後才移除套件。

免責聲明: 本文僅供一般資訊參考,不構成法律、技術或其他專業建議。我們不保證內容的準確性、完整性或時效性。請只在你擁有或獲授權使用的網絡、路由器和代理節點上操作。

來源:

  1. ImmortalWrt — HomeProxy repository (commit 98a6ad9) — https://github.com/immortalwrt/homeproxy/tree/98a6ad9e71484528008ff435694fd107591f3a1d
  2. HomeProxy — package definition (Makefile) — https://github.com/immortalwrt/homeproxy/blob/98a6ad9e71484528008ff435694fd107591f3a1d/Makefile
  3. ImmortalWrt — 24.10.6 LuCI feed (aarch64_cortex-a53) — https://downloads.immortalwrt.org/releases/24.10.6/packages/aarch64_cortex-a53/luci/
  4. ImmortalWrt — 24.10.6 packages feed (aarch64_cortex-a53) — https://downloads.immortalwrt.org/releases/24.10.6/packages/aarch64_cortex-a53/packages/
  5. HomeProxy — service init script — https://github.com/immortalwrt/homeproxy/blob/98a6ad9e71484528008ff435694fd107591f3a1d/root/etc/init.d/homeproxy
  6. OpenWrt — opkg package manager — https://openwrt.org/docs/guide-user/additional-software/opkg
  7. HomeProxy — node settings view — https://github.com/immortalwrt/homeproxy/blob/98a6ad9e71484528008ff435694fd107591f3a1d/htdocs/luci-static/resources/view/homeproxy/node.js
  8. sing-box — Configuration — https://sing-box.sagernet.org/configuration/
  9. HomeProxy — client settings view — https://github.com/immortalwrt/homeproxy/blob/98a6ad9e71484528008ff435694fd107591f3a1d/htdocs/luci-static/resources/view/homeproxy/client.js

Sources checked 2026 年 10 月 14 日。


延伸閱讀:

開啟 3 天免費試用

註冊即可免費體驗全部高級功能。

*只限新用戶;每位用戶只可獲得一次試用。

HomeProxy 安裝教學:OpenWrt 部署、驗證與回復 | AethoVPN