跳至正文

在 OpenWrt 上安裝 dae 或 honk ​

在 OpenWrt 25.12 以上版本安裝 eBPF 透明代理引擎 dae 或 honk。honk 內建 doona 網頁介面。用 LuCI 應用程式在 OpenWrt 中管理服務。本套件來源提供 apk 套件。

支援的版本 ​

版本核心狀態
25.126.12支援 OpenWrt 和 ImmortalWrt。
24.106.6不支援:opkg 沒有套件來源標籤,本套件來源會取代同名套件。ImmortalWrt 已內建 dae。honk 需要核心 6.12 以上。
23.05 及更早≤ 5.15不支援:核心版本低於 dae 和 honk 的要求(dae 需要 5.17 以上)。

在路由器上以 root 身分查詢版本、套件架構和 target:

sh
. /etc/openwrt_release
echo $DISTRIB_RELEASE $DISTRIB_ARCH $DISTRIB_TARGET

可用的套件架構如下。ImmortalWrt 只需架構相符。本套件來源不提供 32 位元 ARM 或 MIPS 的套件,也不支援這些架構:

OpenWrt target 與 BTF ​

官方 OpenWrt 核心不含 BTF,也就是 dae 和 honk 所需的核心型別資訊。對於官方 OpenWrt,本套件來源僅支援下表列出的 target 和版本,並需要安裝 vmlinux-btf。核心內建 BTF 時(ImmortalWrt),改用空套件 vmlinux-btf-builtin。

版本:25.12.6

Target
armsr/armv8
bcm27xx/bcm2710
bcm27xx/bcm2711
bcm27xx/bcm2712
bcm4908/generic
imx/cortexa53
layerscape/armv8_64b
mediatek/filogic
mediatek/mt7622
microchipsw/lan969x
mvebu/cortexa53
mvebu/cortexa72
qualcommax/ipq50xx
qualcommax/ipq60xx
qualcommax/ipq807x
rockchip/armv8
sunxi/cortexa53
x86/64

安裝 ​

匯入簽章公鑰 ​

sh
wget -O /etc/apk/keys/daeuniverse.pem \
    https://openwrt.daeuniverse.org/public-key.pem

加入套件來源 ​

sh
. /etc/openwrt_release
FEED=https://openwrt.daeuniverse.org/$(echo "$DISTRIB_RELEASE" | cut -d. -f1-2)
cat > /etc/apk/repositories.d/daeuniverse.list <<EOF
@daeuniverse $FEED/packages/$DISTRIB_ARCH/packages.adb
@daeuniverse $FEED/kmods/$DISTRIB_RELEASE/$DISTRIB_TARGET/packages.adb
EOF
apk update
sh
. /etc/openwrt_release
FEED=https://openwrt.daeuniverse.org/$(echo "$DISTRIB_RELEASE" | cut -d. -f1-2)
cat > /etc/apk/repositories.d/daeuniverse.list <<EOF
@daeuniverse $FEED/packages/$DISTRIB_ARCH/packages.adb
EOF
apk update

@daeuniverse 標籤指定從本套件來源安裝套件。不帶標籤時,apk 優先使用系統套件。

安裝套件 ​

sh
apk add dae@daeuniverse luci-app-dae@daeuniverse \
    luci-i18n-daeuniverse-zh-tw@daeuniverse
sh
apk add honk@daeuniverse luci-app-honk@daeuniverse \
    luci-i18n-daeuniverse-zh-tw@daeuniverse

不使用 LuCI 時,省略 luci- 開頭的套件。

啟用服務 ​

dae 和 honk 不能同時執行。透過命令列切換服務前,先停止並停用目前的服務。啟用服務前,依網路環境修改 /etc/dae/config.dae。然後在 LuCI 的服務 → dae 中啟用服務,或在路由器上執行以下指令:

dae 和 honk 不能同時執行。透過命令列切換服務前,先停止並停用目前的服務。預設的 /etc/honk/config.dae 使用 LAN 介面 br-lan;如果 LAN 裝置不同,請先修改。初始設定讓所有流量直接連線。登入 doona 後,新增代理節點或訂閱,並設定路由規則。然後在 LuCI 的服務 → honk 中啟用服務,或在路由器上執行以下指令:

sh
uci set dae.config.enabled=1
uci commit dae
/etc/init.d/dae enable
/etc/init.d/dae start
sh
uci set honk.config.enabled=1
uci commit honk
/etc/init.d/honk enable
/etc/init.d/honk start

設定語法見 dae 文件。

設定語法見 honk 文件。要開啟 doona,在區域網路內的電腦上前往 http://<路由器 LAN IP>:9527/,例如 http://192.168.1.1:9527/。請使用 IP 位址,honk 會拒絕 openwrt.lan 等主機名稱。首次開啟時建立管理員帳號,再登入編輯設定。與 LuCI 相同,此頁面在區域網路內使用明文 HTTP;OpenWrt 預設防火牆不會在 WAN 側開放此連接埠。介面操作見 doona 文件。介面問題請向 doona 回報,引擎問題請向 honk 回報。

升級 ​

在路由器上執行以下指令,指令中只寫已安裝的套件。也可在 LuCI 的服務 → dae 中點選檢查更新後再點選升級,或使用系統 → 軟體中的更新分頁。服務頁面可選擇套件,即時顯示背景升級輸出,並在 rpcd 重新載入後恢復連線。重新開啟頁面可查看正在執行的工作;升級成功後點選關閉會重新載入頁面。套件來源重新整理失敗時顯示警告,仍會列出可用更新。

在路由器上執行以下指令,指令中只寫已安裝的套件。也可在 LuCI 的服務 → honk 中點選檢查更新後再點選升級,或使用系統 → 軟體中的更新分頁。服務頁面可選擇套件,即時顯示背景升級輸出,並在 rpcd 重新載入後恢復連線。重新開啟頁面可查看正在執行的工作;升級成功後點選關閉會重新載入頁面。套件來源重新整理失敗時顯示警告,仍會列出可用更新。

sh
apk update
apk upgrade dae luci-app-dae v2ray-geoip v2ray-geosite
sh
apk update
apk upgrade honk luci-app-honk v2ray-geoip v2ray-geosite

升級會保留設定檔;套件預設設定有變更時,新版本會以 .apk-new 檔案儲存在已修改的設定檔旁。用下載的套件安裝後,如果 apk 回報 breaks: world[…],或對話框提示所選套件未升級並顯示 apk add …@daeuniverse 命令,請參閱本機套件鎖定說明。

常見錯誤 ​

UNTRUSTED signature ​

路由器需要本套件來源的公鑰才能驗證套件。完成匯入簽章公鑰這一步,再執行 apk update。

This kernel has no BTF of its own ​

OpenWrt 路由器缺少 kmods 套件來源,所以 apk 安裝了 vmlinux-btf-builtin,而不是 vmlinux-btf。依加入套件來源步驟加入 OpenWrt 的兩行套件來源,再執行 apk update && apk upgrade vmlinux-btf-builtin。如果上表沒有路由器的 target,本套件來源就沒有對應的 vmlinux-btf,dae 和 honk 無法在這台路由器上運作。

breaks: vmlinux-btf ​

所選 vmlinux-btf 套件與已安裝的核心不相符。使用官方 OpenWrt 正式版時,檢查 kmods 位址是否與 DISTRIB_RELEASE 和 DISTRIB_TARGET 一致。如果 /sys/kernel/btf/vmlinux 存在,刪除 /etc/apk/repositories.d/daeuniverse.list 中含 kmods 的那一行,執行 apk update 後重新安裝。未內建 BTF 的自行編譯或快照版核心需要為該核心產生的 BTF;刪除套件來源不能補齊 BTF。

breaks: world[honk><Q1…] ​

honk(或 dae)是用下載的 .apk 檔案安裝的,會鎖定為該檔案;本套件來源出現其他版本後,任何 apk add 都會失敗,即使安裝的是無關工具。執行 apk add honk@daeuniverse(或 dae@daeuniverse)改為跟隨本套件來源,其他套件可寫在同一行命令中。


來源:openwrt-packages 套件來源頁面。