在 OpenWrt 上安装 dae 或 honk
在 OpenWrt 25.12 及以上版本安装 eBPF 透明代理引擎 dae 或 honk。honk 内置 doona 网页界面。用 LuCI 应用在 OpenWrt 中管理服务。本软件源提供 apk 软件包。
支持的版本
| 版本 | 内核 | 状态 |
|---|---|---|
| 25.12 | 6.12 | 支持 OpenWrt 和 ImmortalWrt。 |
| 24.10 | 6.6 | 不支持:opkg 没有软件源标签,本软件源会替换同名软件包。ImmortalWrt 已自带 dae。honk 需要内核 6.12 以上。 |
| 23.05 及更早 | ≤ 5.15 | 不支持:内核版本低于 dae 和 honk 的要求(dae 需要 5.17 以上)。 |
在路由器上以 root 身份查询版本、软件包架构和 target:
. /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
安装
导入签名公钥
wget -O /etc/apk/keys/daeuniverse.pem \
https://openwrt.daeuniverse.org/public-key.pem添加软件源
. /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. /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 优先使用系统软件包。
安装软件包
apk add dae@daeuniverse luci-app-dae@daeuniverse \
luci-i18n-daeuniverse-zh-cn@daeuniverseapk add honk@daeuniverse luci-app-honk@daeuniverse \
luci-i18n-daeuniverse-zh-cn@daeuniverse不使用 LuCI 时,省略 luci- 开头的软件包。
启用服务
dae 和 honk 不能同时运行。通过命令行切换服务前,先停止并禁用当前服务。启用服务前,按网络环境修改 /etc/dae/config.dae。然后在 LuCI 的服务 → dae 中启用服务,或在路由器上执行以下命令:
dae 和 honk 不能同时运行。通过命令行切换服务前,先停止并禁用当前服务。默认的 /etc/honk/config.dae 使用 LAN 接口 br-lan;如果 LAN 设备不同,请先修改。初始配置让所有流量直连。登录 doona 后,添加代理节点或订阅,并配置路由规则。然后在 LuCI 的服务 → honk 中启用服务,或在路由器上执行以下命令:
uci set dae.config.enabled=1
uci commit dae
/etc/init.d/dae enable
/etc/init.d/dae startuci 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 重新加载后恢复连接。重新打开页面可查看正在运行的任务;升级成功后点击关闭会重新加载页面。软件源刷新失败时显示警告,仍会列出可用更新。
apk update
apk upgrade dae luci-app-dae v2ray-geoip v2ray-geositeapk 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)改为跟随本软件源,其他软件包可写在同一条命令中。
