添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
失落的金鱼  ·  C# ...·  5 月前    · 
彷徨的青蛙  ·  if statement for ...·  6 月前    · 
帅呆的西装  ·  prevent - CSDN文库·  8 月前    · 
刚毅的皮带  ·  1934043 – missing ...·  9 月前    · 

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement . We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

插件日志:
2022-01-05 15:43:06 第六步:删除 OpenClash 残留文件...
2022-01-05 15:43:02 第五步: 重启 Dnsmasq 程序...
2022-01-05 15:43:02 第四步: 关闭 Clash 主程序...
2022-01-05 15:43:02 第三步: 关闭 OpenClash 守护程序...
2022-01-05 15:43:02 第二步: 删除 OpenClash 防火墙规则...
2022-01-05 15:43:01 第一步: 备份当前策略组状态...
2022-01-05 15:43:01 OpenClash 开始关闭...
2022-01-05 15:42:59 错误: 无法获取General部分的转发端口设置, OpenClash 使用原始配置文件启动失败
2022-01-05 15:42:58 错误: OpenClash 启动失败,尝试使用原始配置文件启动...
2022-01-05 15:42:58 第六步: 等待主程序下载外部文件...
2022-01-05 15:42:55 第五步: 检查内核启动状态...
Unable to set capabilities [--caps=cap_sys_resource,cap_dac_override,cap_net_raw,cap_net_bind_service,cap_net_admin+eip]
2022-01-05 15:42:55 提示: 未检测到特殊配置,调用 Dev 内核启动...
2022-01-05 15:42:55 第四步: 启动主程序...
2022-01-05 15:42:48 第三步: 修改配置文件...
2022-01-05 15:42:47 第二步: 组件运行前检查...
2022-01-05 15:42:47 第一步: 获取配置...
2022-01-05 15:42:47 OpenClash 开始启动...
2022-01-05 15:42:47 第六步:删除 OpenClash 残留文件...
2022-01-05 15:42:44 第五步: 重启 Dnsmasq 程序...
2022-01-05 15:42:44 第四步: 关闭 Clash 主程序...
2022-01-05 15:42:44 第三步: 关闭 OpenClash 守护程序...
2022-01-05 15:42:43 第二步: 删除 OpenClash 防火墙规则...
2022-01-05 15:42:43 第一步: 备份当前策略组状态...
2022-01-05 15:42:43 OpenClash 开始关闭...
2022-01-05 15:42:40 配置文件【XXXX】更新成功!
2022-01-05 15:42:40 配置文件【XXXX】有更新,开始替换...
2022-01-05 15:42:40 配置文件下载成功,检查是否有更新...
2022-01-05 15:42:38 开始更新配置文件【XXXX】...
2022-01-05 15:39:37 警告:OpenClash 目前处于未启用状态,请从插件页面启动本插件,脚本退出...

内核日志:
空白的,没有内核日志……

无法获取General部分的转发端口设置, OpenClash 使用原始配置文件启动失败
原因估计应该是core/clash核心不能启动。
我自己搜到的原因猜测是libcap导致的。
libcap libcap-bin我都试过。版本2.51-1 2.51-2也都试过。
固件是最新编译的,编译了几次。
请问该怎么解决呢?

Unable to set capabilities [--caps=cap_sys_resource,cap_dac_override,cap_net_raw,cap_net_bind_service,cap_net_admin+eip]

这个错误我查到的是libcap原因导致的……
然后libcap 2.51-1版及2.51-2版也都试过了。
还是不能启动……

实在不行,换个固件试下 例如kiddin9的x86固件 ,搜下github有的
置顶的问题看过了,提到了libcap。
libcap 及libcap-bin我也替换过了。2.51-1及2.51-2版本也试过了。
按照你说的,我重刷了kiddin9固件。
错误跟之前的一样。
还是无法启动的。

看到的是 https://www.right.com.cn/forum/thread-4053183-22-1.html 326楼的方法。
解决方法是:
1,PVE下用CT方式安装openwrt,会引用/usr/share/lxc/config/openwrt.common.conf这个配置。
2,这个配置中有一行
lxc.cap.drop = sys_resource
这行内容影响sys_resource权限,会导致openclash启动失败,需要注释掉。
3,重启ct,openclash运行就正常了。

找到原因了: 看到的是 https://www.right.com.cn/forum/thread-4053183-22-1.html 326楼的方法。 解决方法是: 1,PVE下用CT方式安装openwrt,会引用/usr/share/lxc/config/openwrt.common.conf这个配置。 2,这个配置中有一行 lxc.cap.drop = sys_resource 这行内容影响sys_resource权限,会导致openclash启动失败,需要注释掉。 3,重启ct,openclash运行就正常了。

docker 跑的也这样 还没这文件 改咋改啊

找到原因了: 看到的是 https://www.right.com.cn/forum/thread-4053183-22-1.html 326楼的方法。 解决方法是: 1,PVE下用CT方式安装openwrt,会引用/usr/share/lxc/config/openwrt.common.conf这个配置。 2,这个配置中有一行 lxc.cap.drop = sys_resource 这行内容影响sys_resource权限,会导致openclash启动失败,需要注释掉。 3,重启ct,openclash运行就正常了。

docker 跑的也这样 还没这文件 改咋改啊

docker run 的时候添加如下参数:

--cap-add NET_ADMIN
--cap-add SYS_PTRACE
--cap-add SYS_RESOURC
并增加tun
--device=/dev/net/tun
即可在docker里面正常启动openclash,并且可以正常工作

可以参考下面的启动命令

docker run --restart always \
--name openwrt-12.03.2022 \
--device=/dev/net/tun \
--network macvlan0 \
--ip '192.168.1.xxx \
--mac-address 'xx:xx:xx:xx:xx:xx' \
--cap-add NET_ADMIN \
--cap-add SYS_PTRACE \
--cap-add SYS_RESOURCE \
--sysctl net.ipv6.conf.all.disable_ipv6=0 \
--sysctl net.ipv6.conf.default.disable_ipv6=0 \
--sysctl net.ipv6.conf.all.accept_ra=2 \
--sysctl net.ipv6.conf.default.accept_ra=2 \
openwrt-12.03.2022 \
/sbin/init

看到的是 https://www.right.com.cn/forum/thread-4053183-22-1.html 326楼的方法。
解决方法是:
1,PVE下用CT方式安装openwrt,会引用/usr/share/lxc/config/openwrt.common.conf这个配置。
2,这个配置中有一行
lxc.cap.drop = sys_resource
这行内容影响sys_resource权限,会导致openclash启动失败,需要注释掉。
3,重启ct,openclash运行就正常了。

我把这一行注释掉之后还是会出现这个错误,是需要重新部署容器?

看到的是 https://www.right.com.cn/forum/thread-4053183-22-1.html 326楼的方法。
解决方法是:
1,PVE下用CT方式安装openwrt,会引用/usr/share/lxc/config/openwrt.common.conf这个配置。
2,这个配置中有一行
lxc.cap.drop = sys_resource
这行内容影响sys_resource权限,会导致openclash启动失败,需要注释掉。
3,重启ct,openclash运行就正常了。

我把这一行注释掉之后还是会出现这个错误,是需要重新部署容器?

最后问了chatgpt解决了问题。以下是chatgpt的回答

在 LXC 容器中部署 OpenWrt 并在容器中启动 OpenClash 时遇到问题可能是由于容器环境的限制导致的。错误信息 "Unable to set capabilities" 表示在容器中设置特权时遇到了问题。

容器技术在运行时会隔离和限制容器内的进程,以增加安全性并避免对主机系统造成影响。然而,这也可能导致容器内的某些操作和配置受到限制,包括设置特权。

解决此问题的一种方法是通过调整 LXC 容器的配置,以允许容器内的特权设置。以下是可能的步骤:

设置 LXC 容器配置:
在宿主机上找到 LXC 容器的配置文件,通常在 /etc/pve/lxc 目录下,文件名为容器的 ID 加上 .conf 后缀(例如 100.conf)。使用文本编辑器打开这个文件。

添加特权配置:
在配置文件中,尝试添加以下配置来允许容器内的特权设置:

lxc.apparmor.profile: unconfined
lxc.cap.drop:
lxc.cap.keep:
lxc.mount.auto: cgroup:mixed proc:mixed sys:mixed
请注意,这是一种尝试性的方法,具体的配置可能需要根据你的容器环境进行调整。

重启容器:
保存配置文件并重启容器,看看是否允许在容器内设置特权。

了解安全性影响:
允许容器内的特权设置可能会降低容器的安全性。在修改容器配置之前,请确保了解这些影响并进行适当的风险评估。

如果在容器配置中设置特权仍然无法解决问题,你可能需要更深入地研究容器环境和相关限制,或者考虑在虚拟机中部署 OpenWrt 来避免容器环境的限制。