liandu2024:Open-Box v0.1.287 修复规则较多时内核启动写 nftables 缓冲区耗尽导致起不来
在 Open-Box issue #426(升级到 v0.1.283 后内核仍假启动、反复重启无效)下,liandu2024 补充说明:用用户提供的备份在测试路由器上原样复现,删掉 PassWall 之后仍起不来,是另一个问题、与 PassWall 无关。原因:内核启动时要把分流用到的防火墙规则一次性写进系统,该用户配置条数较多,0.1.283 的内核在这一步把系统接收缓冲区塞满,报 `flush nftables: netlink receive: recvmsg: no buffer space available`(第一次诊断包里就有这一行),一启动就退出;开机时系统连着重试 5 次、次次一样,之后就不再拉起,所以重启路由器后内核一直起不来。v0.1.287 已修复:内核会先按规则条数放大缓冲区,面板遇到这类临时错误也会隔一会儿自动重试;用该备份对比,0.1.283 的内核每次启动都在这一步退出,0.1.287 正常运行、节点和策略都能读到。给出的处理办法:在面板「内核」页点「检查更新」升级到 v0.1.287(也可 SSH 运行 `open-box update`),升级后点一次「重启内核」并等一分钟左右,不要连续点。另说明第一次诊断包显示路由器上还装着 OpenClash 和 Nikki;从 0.1.284 起只要检测到别的代理工具在运行,Open-Box 就不会启动内核并提示是哪一个,用不上的建议一并卸载。
作者原文@liandu2024谢谢补充备份。我们用你这份备份在测试路由器上原样复现了:删掉 PassWall 之后还起不来,是另一个问题,和 PassWall 无关。
原因:内核启动时要把分流用到的防火墙规则一次性写进系统,你的配置条数比较多,0.1.283 的内核在这一步把系统的接收缓冲区塞满了,报
flush nftables: netlink receive: recvmsg: no buffer space available(你第一次的诊断包里就有这一行),一启动就退出。开机时系统会连着重试 5 次,次次都一样,之后就不再拉起,所以重启路由器后内核一直起不来。v0.1.287 已修复:内核会先按规则条数放大缓冲区;面板遇到这类临时错误也会隔一会儿自动重试。我们用你的备份对比过:0.1.283 的内核每次启动都在这一步退出,0.1.287 正常运行,节点和策略都能读到。
请这样处理:
- 在面板「内核」页点「检查更新」,升级到 v0.1.287(也可以 SSH 登录后运行
open-box update);- 升级完点一次「重启内核」,等一分钟左右,不要连续点。
另外,你第一次的诊断包显示路由器上还装着 OpenClash 和 Nikki。从 0.1.284 起,只要检测到别的代理工具在运行,Open-Box 就不会启动内核,并会提示是哪一个;用不上的话建议一并卸载。
升级后如果还有问题,请在 0.1.287 上重新导出一份诊断包发上来。