Cloudflare Tunnel 修复报告 - 2026-02-08

问题描述

访问 mbe-dev.hi-maker.commbe.hi-maker.com 时出现 Error 1033: Cloudflare Tunnel error

错误信息:

  • Cloudflare 无法解析请求
  • Tunnel 连接失败

问题诊断

1. 容器状态检查

docker ps -a --filter "name=cloudflared"

结果:

  • mbe-cloudflared: 运行中(但连接失败)
  • mbe-tunnel-dev: 运行正常

2. 日志分析

docker logs mbe-cloudflared --tail 30

发现的关键错误:

ERR Failed to dial a quic connection error="failed to dial to edge with quic: timeout: no recent network activity"
ERR Connection terminated error="there are no free edge addresses left to resolve to"

问题原因:

  • Tunnel 容器无法建立到 Cloudflare Edge 的连接
  • QUIC 协议连接超时
  • 可能是网络临时问题或连接状态异常

解决方案

快速修复(已执行)

步骤 1:重启 Tunnel 容器

cd d:\Mises\mbe-monorepo
docker restart mbe-cloudflared

步骤 2:等待连接建立

Start-Sleep -Seconds 10
docker logs mbe-cloudflared --tail 20

验证结果

重启后的日志显示:

INF Registered tunnel connection connIndex=0 connection=e602da61-2646-48ad-b291-612ccd3e640b event=0 ip=198.18.0.107 location=sjc07 protocol=quic
INF Registered tunnel connection connIndex=1 connection=dec290ce-4941-4212-853d-8c3fee0bdcb4 event=0 ip=198.18.0.17 location=sjc06 protocol=quic
INF Updated to new configuration config="{\"ingress\":[{\"hostname\":\"mbe-dev.hi-maker.com\",...}]}"

测试访问:

Invoke-WebRequest -Uri "https://mbe-dev.hi-maker.com/api/health" -UseBasicParsing

结果:✅ 200 OK

{"status":"healthy","service":"mises-behavior-engine"}

当前状态

✅ 已修复

  • mbe-dev.hi-maker.com - 正常访问
  • Tunnel 连接已建立(2 个连接)
  • 配置已更新并生效

📋 Tunnel 配置

当前 mbe-cloudflared 容器配置的路由:

  • mbe-dev.hi-maker.comhttp://mbe-api:8000
  • dev-app.hi-maker.comhttp://mbe-pwa-dev:80
  • admin.hi-maker.comhttp://mbe-admin-ui-dev:3000
  • aigc-dev.hi-maker.comhttp://mbe-aigc-committee-dev:3002

预防措施

1. 监控 Tunnel 状态

定期检查 Tunnel 连接状态:

# 检查容器状态
docker ps --filter "name=cloudflared"

# 查看日志
docker logs mbe-cloudflared --tail 20

# 检查连接
docker logs mbe-cloudflared | Select-String "Registered tunnel connection"

2. 自动重启策略

当前配置已启用 restart: unless-stopped,容器会自动重启。

3. 使用修复脚本

如果再次出现问题,可以使用修复脚本:

cd d:\Mises\mbe-monorepo
.\scripts\fix-cloudflare-tunnel.ps1

常见问题排查

如果 Tunnel 再次断开连接

  1. 检查网络连接

    Test-NetConnection -ComputerName "one.dash.cloudflare.com" -Port 443
    
  2. 重启容器

    docker restart mbe-cloudflared
    
  3. 检查 Token 是否有效

  4. 查看详细日志

    docker logs mbe-cloudflared --tail 50
    

如果重启无效

  1. 完全重建容器

    docker stop mbe-cloudflared
    docker rm mbe-cloudflared
    docker compose -f docker-compose.cloudflare.yml up -d
    
  2. 检查防火墙设置

    • 确保允许出站连接到 Cloudflare(端口 443, 7844)
    • 检查是否有代理设置影响连接
  3. 验证 Token

    • 在 Cloudflare Dashboard 重新生成 Token
    • 更新 .env 文件中的 CLOUDFLARE_TUNNEL_TOKEN
    • 重启容器

相关文档

总结

问题已解决 - 通过重启 mbe-cloudflared 容器,Tunnel 连接已恢复正常。

修复时间: 2026-02-08 13:56 UTC
修复方法: 重启容器
状态: 正常运行