更新Cloudflared Docker容器后遇内存分配等错误的解决咨询
报错日志(中文翻译)
2024-05-10T07:11:09Z INF 启动隧道 tunnelID=已编辑 2024-05-10T07:11:09Z INF 版本 2024.4.1 2024-05-10T07:11:09Z INF GOOS: linux, GOVersion: go1.21.5-devel-cf, GoArch: amd64 2024-05-10T07:11:09Z INF 设置: map[no-autoupdate:true token:*****] 2024-05-10T07:11:09Z INF 生成连接器ID: 已编辑 2024-05-10T07:11:09Z INF 初始协议 quic 2024-05-10T07:11:09Z INF ICMP代理将使用172.17.0.3作为IPv4源地址 2024-05-10T07:11:09Z INF ICMP代理将使用::作为IPv6源地址 2024-05-10T07:11:09Z WRN 运行cloudflared进程的用户GID(组ID)不在ping_group_range范围内。你可能需要将该用户添加到该范围内的组,或者通过修改/proc/sys/net/ipv4/ping_group_range来更新范围,使其包含用户已在的组。否则cloudflared将无法ping通此网络 error="组ID 65532不在ping组1到0之间" 2024-05-10T07:11:09Z WRN ICMP代理功能已禁用 error="无法创建ICMPv4代理: 组ID 65532不在ping组1到0之间,也无法创建ICMPv6代理: socket: 权限被拒绝" 2024-05-10T07:11:09Z INF 在127.0.0.1:33081/metrics启动指标服务器 2024/05/10 07:11:09 未能充分增加接收缓冲区大小(当前: 208 kiB,期望: 2048 kiB,实际获得: 416 kiB)。 2024-05-10T07:11:09Z ERR 服务QUIC连接失败 error="接受QUIC流失败: INTERNAL_ERROR (本地): write udp [::]:49307->198.41.200.113:7844: sendmsg: 无法分配内存" connIndex=0 event=0 ip=198.41.200.113 2024-05-10T07:11:09Z ERR 服务隧道错误 error="接受QUIC流失败: INTERNAL_ERROR (本地): write udp [::]:49307->198.41.200.113:7844: sendmsg: 无法分配内存" connIndex=0 event=0 ip=198.41.200.113 2024-05-10T07:11:09Z INF 最多2秒后重试连接 connIndex=0 event=0 ip=198.41.200.113 2024-05-10T07:11:09Z INF 隧道服务器已停止 2024-05-10T07:11:09Z ERR 启动关机流程 error="接受QUIC流失败: INTERNAL_ERROR (本地): write udp [::]:49307->198.41.200.113:7844: sendmsg: 无法分配内存" 2024-05-10T07:11:09Z INF 指标服务器已停止 接受QUIC流失败: INTERNAL_ERROR (本地): write udp [::]:49307->198.41.200.113:7844: sendmsg: 无法分配内存
解决方案
1. 优先解决内存分配失败问题
这是导致隧道启动失败的核心原因:
- 检查宿主机内存状态:执行
free -h查看剩余内存,关闭无关进程释放内存,或升级宿主机内存配置。 - 限制容器内存配额:
- Docker Run命令添加参数:
--memory 256m --memory-reservation 128m - Docker Compose配置添加:
services: cloudflared: # 其他配置 mem_limit: 256m mem_reservation: 128m
- Docker Run命令添加参数:
2. 调整UDP缓冲区大小
针对日志中缓冲区不足的提示,修改宿主机内核参数:
- 临时生效:
sysctl -w net.core.rmem_max=2500000 sysctl -w net.core.wmem_max=2500000 - 永久生效:编辑
/etc/sysctl.conf,添加以下内容后执行sysctl -p加载配置:net.core.rmem_max=2500000 net.core.wmem_max=2500000
3. 修复ICMP代理权限警告(可选)
该警告不影响隧道核心功能,若需启用ICMP代理可按以下操作:
- 修改宿主机ping组范围:
永久生效需将上述配置写入sysctl -w net.ipv4.ping_group_range="0 65535"/etc/sysctl.conf并执行sysctl -p。 - 或给容器添加RAW套接字权限:
- Docker Run命令添加:
--cap-add NET_RAW - Docker Compose配置添加:
services: cloudflared: # 其他配置 cap_add: - NET_RAW
- Docker Run命令添加:
内容的提问来源于stack exchange,提问作者Kamil Stanczykiewicz
相关产品推荐
相关产品推荐

