docker breaks cgproxy
YXL76 opened this issue · comments
更新了新版本后开启虚拟机v2ray就会crash
使用的是cgproxy + qv2ray全局代理
- v2ray crash请咨询v2ray,本项目无关
其他请具体描述,提供相关信息
不使用透明代理时,都能正常工作。
开启透明代理后,使用docker
或虚拟机时,网络就将无法连接。
我并不清楚该问题与哪一方有关。
log:
V2Ray 4.23.2 (V2Fly, a community-driven edition of V2Ray.) Custom (go1.14.3 linux/amd64)
A unified platform for anti-censorship.
2020/06/02 00:21:40 [Info] v2ray.com/core/common/platform/ctlcmd: <v2ctl message>
v2ctl> Read config: /home/yxl/.config/qv2ray/generated/config.gen.json
2020/06/02 00:21:40 [Warning] v2ray.com/core: V2Ray 4.23.2 started
2020/06/02 00:27:43 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:44 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:44 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:45 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:45 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:45 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:45 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:45 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:47 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:47 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:48 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:48 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:49 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:49 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:50 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:50 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:50 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:27:50 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:50 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:51 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:51 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:52 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:52 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:53 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:53 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:54 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:54 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:55 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:55 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:56 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:56 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:57 [Warning] [2107636200] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [dial tcp: operation was canceled] > v2ray.com/core/common/retry: all retry attempts failed
2020/06/02 00:27:57 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:57 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:58 [Warning] [1751568386] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [dial tcp 112.5.37.149:8311: socket: too many open files dial tcp: lookup cn-qzcm-1.ddns.wtf: device or resource busy dial tcp 112.5.37.149:8311: socket: too many open files] > v2ray.com/core/common/retry: all retry attempts failed
2020/06/02 00:27:58 [Warning] [2869087999] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [dial tcp 112.5.37.149:8311: socket: too many open files dial tcp: lookup cn-qzcm-1.ddns.wtf: device or resource busy dial tcp 112.5.37.149:8311: socket: too many open files] > v2ray.com/core/common/retry: all retry attempts failed
2020/06/02 00:27:58 [Warning] [680606387] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [dial tcp 112.5.37.149:8311: socket: too many open files dial tcp: lookup cn-qzcm-1.ddns.wtf: device or resource busy dial tcp 112.5.37.149:8311: socket: too many open files] > v2ray.com/core/common/retry: all retry attempts failed
2020/06/02 00:27:58 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:58 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:59 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:27:59 [Warning] [2349322705] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: connection ends > v2ray.com/core/proxy/vmess/outbound: failed to read header > v2ray.com/core/proxy/vmess/encoding: failed to read response header > EOF
2020/06/02 00:27:59 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:00 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:00 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:00 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:00 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:01 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:01 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:02 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:02 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:03 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:03 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:04 [Warning] [3616791591] v2ray.com/core/app/proxyman/outbound: failed to process outbound traffic > v2ray.com/core/proxy/vmess/outbound: failed to find an available destination > v2ray.com/core/common/retry: [dial tcp: operation was canceled] > v2ray.com/core/common/retry: all retry attempts failed
2020/06/02 00:28:04 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:04 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:04 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:04 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:05 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:05 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:05 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:06 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:06 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:07 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:07 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:28:07 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:28:07 [Warning] v2ray.com/core/proxy/dns: ip query > v2ray.com/core/app/dns: invalid domain name
2020/06/02 00:28:07 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:08 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:08 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:09 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:09 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:09 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:28:09 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:10 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:28:10 [Warning] v2ray.com/core/transport/internet/tcp: failed to accepted raw connections > accept tcp [::]:12345: accept4: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
2020/06/02 00:29:08 [Warning] v2ray.com/core/proxy/dns: failed to dial outbound connection > listen udp 0.0.0.0:0: socket: too many open files
麻烦贴出稍微详细复现的步骤,非常重要,不然我也很难清楚你说的是怎么回事。
另外你的cgproxy配置是什么,cgproxy.service的日志,还有虚拟机/docker和透明代理又是啥关系。
如果readme没仔细看的话,建议先看看
如果readme没仔细看的话,建议先看看
我使用cgproxy有一段时间了,之前并没有出现相关问题,今天更新后才出现该问题。
麻烦贴出稍微详细复现的步骤,非常重要,不然我也很难清楚你说的是怎么回事。
另外你的cgproxy配置是什么,cgproxy.service的日志,还有虚拟机/docker和透明代理又是啥关系。
cgproxy配置:
{
"port": 12345 ,
"program_noproxy": ["v2ray", "qv2ray"],
"program_proxy": [],
"cgroup_noproxy": ["/system.slice/v2ray.service"],
"cgroup_proxy": ["/"],
"enable_gateway": false,
"enable_dns": true,
"enable_udp": true,
"enable_tcp": true,
"enable_ipv4": true,
"enable_ipv6": true
}
日志
Jun 02 00:21:28 yxl-pc cgproxyd[795]: info: dlsym startThread func success
Jun 02 00:21:30 yxl-pc cgproxyd[795]: info: execsnoop thread started
Jun 02 00:21:38 yxl-pc cgproxyd[795]: info: execsnoop; noproxy: 1786 /usr/bin/qv2ray
Jun 02 00:21:39 yxl-pc cgproxyd[795]: info: execsnoop: already in preserverd cgroup, leave alone: 2034 /usr/lib/v2ray/>
Jun 02 00:21:40 yxl-pc cgproxyd[795]: info: execsnoop: already in preserverd cgroup, leave alone: 2051 /usr/lib/v2ray/>
Jun 02 00:21:40 yxl-pc cgproxyd[795]: info: execsnoop: already in preserverd cgroup, leave alone: 2134 /usr/lib/v2ray/>
麻烦贴出稍微详细复现的步骤,非常重要,不然我也很难清楚你说的是怎么回事。
另外你的cgproxy配置是什么,cgproxy.service的日志,还有虚拟机/docker和透明代理又是啥关系。
复现的步骤
使用qemu
虚拟机,系统启动后网络断开。
使用PyCharm
或VS Code
的docker插件打开项目,网络断开。
我注意到你的日志里面有很多的 0.0.0.0:0, 你清楚是什么原因产生的吗?
经测试,docker容器的确会导致问题。可以肯定是上游的bug,具体是xt_table还是容器的暂不清楚。
docker不支持cgroup2就算了,还特么break了混合模式下cgroup2的路径匹配,导致基于cgroup的代理直接失效,从而出现了循环。
经测试,docker容器的确会导致问题。可以肯定是上游的bug,具体是xt_table还是容器的暂不清楚。
docker不支持cgroup2就算了,还特么break了混合模式下cgroup2的路径匹配,导致基于cgroup的代理直接失效,从而出现了循环。
感谢测试
Reported to upstream docker/for-linux#1028
在内核日志中找到原因了:
[ +0.109803] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
没什么特殊要求的话,直接的解决方法就是禁用这两个控制器: net_cls net_prio
编辑 /etc/default/grub
,
添加cgroup_no_v1=net_cls,net_prio 到GRUB_CMDLINE_LINUX_DEFAULT中,
然后更新grub,重启
示例:
GRUB_CMDLINE_LINUX_DEFAULT="text cgroup_no_v1=net_cls,net_prio"
sudo grub-mkconfig -o /boot/grub/grub.cfg
在内核日志中找到原因了:
[ +0.109803] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
没什么特殊要求的话,直接的解决方法就是禁用这两个控制器: net_cls net_prio
编辑
/etc/default/grub
,
添加cgroup_no_v1=net_cls,net_prio 到GRUB_CMDLINE_LINUX_DEFAULT中,
然后更新grub,重启
示例:GRUB_CMDLINE_LINUX_DEFAULT="text cgroup_no_v1=net_cls,net_prio"
sudo grub-mkconfig -o /boot/grub/grub.cfg
可行
我也遇到这问题了,多谢大佬们的测试。
Worked!