Cloudflare Tunnel  docker 连接  存在的几个问题及解决方案

Cloudflare Tunnel docker 连接 存在的几个问题及解决方案

1. ICMP 代理权限警告

  • WRN The user running cloudflared process has a GID (group ID) that is not within ping_group_range...
  • 原因:容器内用户的组 ID 不在系统允许的 ping 权限范围内,导致 ICMP 代理功能被禁用。
  • 解决:这是警告而非错误,不影响隧道核心功能,可忽略。若想修复,需调整宿主机的 ping 权限范围:
  • # 在宿主机执行,临时生效
    sudo sysctl -w net.ipv4.ping_group_range="0 65535"

    # 永久生效(需重启)
    echo "net.ipv4.ping_group_range=0 65535" | sudo tee -a /etc/sysctl.conf

    # 重新加载配置
    sudo sysctl -p

2. 缺少 origin certificate

  • ERR Cannot determine default origin certificate path. No file cert.pem in [...]
  • 原因:Cloudflare Tunnel 需要 origin certificate 进行身份验证,但未找到该文件。
  • 解决:方法:手动指定一个空的证书路径(无需实际文件),通过环境变量规避检查:
    在docker中添加环境变量:
  • TUNNEL_ORIGIN_CERT=/dev/null         用空路径规避证书检查

2.1.在非 Docker 环境(直接在主机上运行 cloudflared)中,解决缺少 origin certificate

  • 进入你的域名管理页面 → SSL/TLS → 源服务器(Origin Server)
  • 点击 创建证书(Create Certificate)
    • 保持默认设置(自动生成私钥和证书)
    • 证书有效期可选择最长 15 年
  • 点击 确认 后,会显示证书内容:
    • 复制 源证书(Origin Certificate)内容,保存为 cert.pem
    • 复制 私钥(Private Key)内容,保存为 key.pem(可选,部分场景需要)
  • 放置证书到默认路径
    cloudflared 会自动在以下路径查找证书,任选其一放置:


    • ~/.cloudflared/cert.pem(推荐,用户目录下)
    • /etc/cloudflared/cert.pem(系统级路径,可能需要 root 权限)
    • # 创建目录(若不存在) mkdir -p ~/.cloudflared

    手动指定证书路径

  • 如果不想使用默认路径,可在启动命令中通过 --origincert 参数指定证书位置:
  • cloudflared tunnel run --origincert /path/to/your/cert.pem --token <你的隧道令牌>

3. QUIC 连接超时

  • ERR failed to dial a quic connection error="failed to dial to edge with quic: timeout: no recent network activity"
  • 原因:隧道无法通过 QUIC 协议(UDP 443 端口)连接到 Cloudflare 边缘节点,可能是网络限制导致。
  • 解决
  • 将命令改为 --protocol http2http2 是基于 TCP 的协议):即docker启动命令改为
  • tunnel --no-autoupdate run --protocol http2 --token <你的隧道令牌>
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容