You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
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 来避免容器环境的限制。