跳至正文

OpenWrt 部署

fn-knock 的 OpenWrt 套件包含 LuCI 設定頁面、管理後台、身分驗證頁面、Rust 後端與 Go 閘道。安裝後可從 服務 → 敲門 Knock 管理服務;管理後台預設使用 7991,閘道入口預設使用 7999

請先分辨韌體使用的軟體套件格式與架構。格式錯誤時,Package Manager 無法安裝;架構錯誤時,即使 CPU 看似相近也無法執行。

選擇正確的軟體套件

套件格式取決於韌體

韌體的 Package Manager套件格式常見 OpenWrt 版本安裝指令
opkg.ipk24.10 以下版本opkg install /tmp/<檔名>.ipk
apk.apk25.12 以上版本apk add --allow-untrusted /tmp/<檔名>.apk

OpenWrt 25.12 以上版本通常使用 apk24.10 以下版本通常使用 opkg;衍生韌體或升級中的裝置仍應以實際的 Package Manager 為準。請勿根據系統版本或副檔名猜測,應先在路由器上確認:

bash
ubus call system board
if command -v opkg >/dev/null 2>&1; then
  opkg print-architecture
else
  apk --print-arch
fi

依韌體架構直接下載

請以上方指令輸出的 Target Architecture 為準,再從下表直接下載對應格式的套件。這些連結與官網使用相同的穩定下載入口,已指定套件格式與架構,不需要手動修改網址。

Target Architecture常見裝置APK(OpenWrt 25.12 以上)IPK(OpenWrt 24.10 以下)
x86_64Intel / AMD 64 位元軟路由與虛擬機器下載 APK下載 IPK
aarch64_cortex-a53IPQ60xx、Cortex-A53、ImmortalWrt qualcommax/ipq60xx下載 APK下載 IPK
aarch64_genericGeneric ARM64 路由器與開發板下載 APK下載 IPK
arm_cortex-a7_neon-vfpv4使用對應 Target 的 32 位元 ARMv7 裝置下載 APK下載 IPK
arm_cortex-a5_vfpv4Cortex-A5 / VFPv4 路由器下載 APK下載 IPK

正式套件檔名的最後一段是 OpenWrt Target Architecture,例如:

text
fn-knock_<version>-<release>_x86_64.ipk
fn-knock_<version>-r<release>_aarch64_cortex-a53.apk

請以 opkg print-architectureapk --print-arch 輸出的 Target 名稱為準,尤其不要混用 aarch64_genericaarch64_cortex-a53。目前沒有對應套件的 MIPS、ARMv6 或其他 Target,無法強制安裝。

請下載 fn-knock 主套件,不要將應用商店 Metadata 套件誤當成執行套件。

安裝

將符合架構的套件上傳至路由器的 /tmp 後,依韌體類型執行其中一行指令:

bash
# opkg 韌體
opkg install /tmp/fn-knock_*.ipk

# apk 韌體
apk add --allow-untrusted /tmp/fn-knock_*.apk

上述萬用字元指令假設 /tmp 中只有一個待安裝的 fn-knock 主套件;若保留了多個版本,請改用完整檔名。

apk --allow-untrusted 只適用於從可信任的正式發布頁面取得,且已核對來源或 Checksum 的本機安裝套件;此選項會略過套件儲存庫的簽章驗證,不能用於來源不明的檔案。離線安裝前,也需要確認韌體的套件來源能提供所需相依套件。

安裝 Script 會啟用並啟動服務,同時重新整理 LuCI 選單 Cache。也可以透過 LuCI 的軟體套件上傳入口安裝本機套件;使用 CLI 較容易確認實際採用的格式與架構。

首次進入與連接埠

開啟 服務 → 敲門 Knock,確認服務狀態為「執行中」,再按一下「開啟管理後台」。預設位址為:

text
http://<OpenWrt 區域網路位址>:7991/

首次進入時需要設定管理面板密碼。這組密碼只保護 OpenWrt 上的管理入口,與使用者存取業務服務時使用的 TOTP、帳號密碼或 Passkey 不同。

連接埠監聽範圍用途
7991可設定,預設為管理入口管理後台
7999閘道監聽連接埠對外存取映射服務的入口
17998127.0.0.1Rust 管理後端內部 API
7997127.0.0.1身分驗證服務
7996127.0.0.1閘道內部 gRPC

可在 LuCI 頁面修改這些連接埠、資料目錄與閘道設定目錄。提交設定後,procd 會重新載入服務。連接埠數值不得重複。

請勿在 WAN 上轉送或放行 7991。需要公網存取時,請先明確選定模式、憑證與存取原則,再為閘道連接埠 7999 建立必要的防火牆規則或上游轉送。套件本身不會取代 OpenWrt 的 WAN 防火牆原則。

檢查服務與記錄:

bash
/etc/init.d/fn-knock status
logread -e fn-knock

能開啟管理後台,只能證明本機服務已啟動。設定映射後,請使用行動網路等真正的外部連線驗證 7999 與網域名稱,不要將 LAN 測試結果當成公網身分驗證結果。

資料與升級

執行設定與資料預設位於:

text
/etc/config/fn-knock
/etc/fn-knock/gateway
/var/lib/fn-knock

其中,閘道目錄會儲存 SQLite 資料庫;執行資料目錄可能儲存 Secret、Tunnel 資源與更新狀態。升級前請將這三處納入備份;其中含有敏感資訊,不應上傳至公開位置。

同時請從維護頁面匯出 .knock 應用程式備份。目錄備份用於保留 SQLite 與平台執行資料,.knock 則用於移轉可還原的設定;內容範圍、版本限制與還原驗收方式請參閱備份、還原與資料清理

OpenWrt 不支援從管理後台安裝 FPK 更新。請從上方直接下載表取得相同格式、相同韌體架構的新套件後,再執行:

bash
# opkg 韌體:安裝新版本,或明確重新安裝相同版本
opkg install --force-reinstall /tmp/fn-knock_*.ipk

# apk 韌體
apk add --allow-untrusted /tmp/fn-knock_*.apk

/etc/init.d/fn-knock status

如果 /tmp 中保留了多個版本,請使用完整檔名取代萬用字元,避免一次將多個套件傳給 Package Manager。

升級不會主動清除上述執行目錄。如果 Package Manager 詢問如何處理已修改的 /etc/config/fn-knock,請保留現有設定,除非本次升級明確要求還原預設設定。

若忘記 OpenWrt 管理面板密碼,請透過 SSH 執行:

bash
fn-knock-reset-panel-password

接著返回 LuCI 的管理後台入口,依提示設定新密碼。

OpenWrt 版本的功能限制

功能OpenWrt 軟體套件中的狀態
應用程式內 FPK 更新不支援;使用 opkgapk 安裝符合條件的新套件
直連模式、主機防火牆管理支援;服務需要以 root 執行,並應先保留 LuCI 或本機主控台作為救援路徑
智慧連線支援;仰賴已安裝並執行的 dnsmasq,且主設定需要 Include /etc/dnsmasq.d/;頁面的 apt-get 自動安裝不適用於 OpenWrt
SSH 安全性不支援;請使用 OpenWrt 本身的 SSH 記錄、防火牆或安全性外掛套件
Web Terminal不支援
自動 HTTPS目前的 OpenWrt 軟體套件不支援

智慧連線會寫入 /etc/dnsmasq.d/fn-knock-smart-connect.conf,再透過 service dnsmasq restart 重新啟動服務。首次啟用前,應從 SSH 確認 dnsmasq 已就緒,並保留 LuCI 或主控台救援入口;如果頁面提示安裝 dnsmasq,請使用目前韌體的 opkgapk 自行安裝,不要依賴頁面上的安裝按鈕。

fn-knock 無法取代 OpenWrt 韌體更新、路由器備份與防火牆最小曝露原則。

繼續閱讀:

QQ 群組:1081609274