springzfx / cgproxy

Transparent Proxy with cgroup v2。透明代理,配合v2ray/Qv2ray食用最佳

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

docker breaks cgproxy

YXL76 opened this issue · comments

更新了新版本后开启虚拟机v2ray就会crash

使用的是cgproxy + qv2ray全局代理

commented
  • 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
commented

麻烦贴出稍微详细复现的步骤,非常重要,不然我也很难清楚你说的是怎么回事。
另外你的cgproxy配置是什么,cgproxy.service的日志,还有虚拟机/docker和透明代理又是啥关系。

commented

如果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虚拟机,系统启动后网络断开。
使用PyCharmVS Code的docker插件打开项目,网络断开。

commented

我注意到你的日志里面有很多的 0.0.0.0:0, 你清楚是什么原因产生的吗?

commented

qemu测试没问题,启动的是archiso镜像
Screenshot_20200602_013259

qemu测试没问题,启动的是archiso镜像
Screenshot_20200602_013259

看起来很可能是我的设置有问题。

commented

经测试,docker容器的确会导致问题。可以肯定是上游的bug,具体是xt_table还是容器的暂不清楚。
docker不支持cgroup2就算了,还特么break了混合模式下cgroup2的路径匹配,导致基于cgroup的代理直接失效,从而出现了循环。

经测试,docker容器的确会导致问题。可以肯定是上游的bug,具体是xt_table还是容器的暂不清楚。
docker不支持cgroup2就算了,还特么break了混合模式下cgroup2的路径匹配,导致基于cgroup的代理直接失效,从而出现了循环。

感谢测试

commented

Reported to upstream docker/for-linux#1028

commented

在内核日志中找到原因了:

[  +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!