Cloudflare Tunnel 打不开?错误 1033 的 12 种排查方法

Cloudflare Tunnel 报错 1033,说明 Cloudflare 找不到健康的 cloudflared 连接器。本文按重启服务、查日志、核对令牌、检查 Docker 与网络的顺序,给出排查与预防办法。

网站、Home Assistant 或自托管服务突然打不开,页面显示 Cloudflare Tunnel Error 1033?先说结论:1033 的意思是 Cloudflare 找不到一个健康的 cloudflared 连接器,也就是跑隧道的那台电脑、VPS、Docker 容器或树莓派没有正常连上。多数情况下不用动网站文件,重启或修正 cloudflared 就能好。

错误 1033 是什么意思

Cloudflare Tunnel 的原理是:您的服务器主动向外连接 Cloudflare,不需要在路由器或防火墙开放 80、443 之类的入站端口。有人访问域名时,Cloudflare 通过这条已建立的连接转发请求。连接器停了或掉线,Cloudflare 就没有通路,于是显示 1033。

它与 502 不一样:1033 是隧道本身不可用;502 通常表示隧道在线,但 cloudflared 访问不到本地应用(比如入口规则指向 localhost:3000,而应用没运行)。

常见原因

  • cloudflared 进程停止,或开机后服务没起来;
  • 服务器、VPS 或树莓派重启过;
  • Docker 容器停止或崩溃;
  • 隧道令牌被替换、删除或复制错;
  • 服务器断网,或出站防火墙限制;
  • 配置里的隧道与实际运行的不是同一个;
  • cloudflared 版本过旧或安装损坏;
  • 内存或磁盘耗尽。

先确认隧道状态

登录 Cloudflare 控制台,进入“Networking → Tunnels”,找到对应隧道。状态为 Healthy 表示正常;Inactive(没有连接器连着)、Down(之前连着现在断了)或 Degraded(部分连接丢失)都说明问题大概率在运行 cloudflared 的机器上。也可以在服务器上运行 cloudflared tunnel list 核对隧道名称或 UUID。

方法 1:重启 cloudflared 服务

系统命令
Ubuntu/Debian/多数 Linuxsudo systemctl restart cloudflared,再用 sudo systemctl status cloudflared 检查是否 active (running)
较老的 Linuxsudo service cloudflared restart
Windows(管理员)sc stop cloudflared 然后 sc start cloudflared,或在“服务”面板右键重启
macOS(Homebrew)brew services restart cloudflared
手动运行重新执行 cloudflared tunnel run 隧道名

重启后等一两分钟再刷新域名,Cloudflare 需要一点时间识别连接器恢复。

方法 2:确认进程真的在运行

Linux 和 macOS 用 ps aux | grep cloudflared;Windows 在任务管理器找 cloudflared.exe。只看到 grep 本身就说明没有在运行,需要重启服务或手动启动。

方法 3:设置开机自动启动

很多 1033 出现在服务器夜里重启之后。systemd 系统运行 sudo systemctl enable cloudflared 并 sudo systemctl start cloudflared,再用 sudo systemctl is-enabled cloudflared 确认输出 enabled。

方法 4:查看日志找真正的原因

用 sudo journalctl -u cloudflared -n 100 --no-pager 看最近 100 行,或 sudo journalctl -u cloudflared -f 实时观察。常见信息含义:

  • Authentication failed:令牌、凭据文件或证书可能无效;
  • Failed to connect to edge:网络、DNS、防火墙或代理问题;
  • No such file or directory:配置或凭据文件路径不对;
  • Permission denied:服务用户读不了配置或凭据文件;
  • Connection terminated:出站连接不稳定或被过滤。

方法 5:核对令牌和配置

新建、删除隧道或迁移服务器后,容易用着旧令牌。到控制台的“Networking → Tunnels”选中隧道,获取最新的安装命令(形如 cloudflared service install 令牌)。不要照搬旧服务器或旧笔记里的令牌。使用命名隧道时,检查 /etc/cloudflared/config.yml 里的隧道 ID 是否与控制台一致,凭据 JSON 路径是否有效、权限是否正确。

方法 6:重装 cloudflared 服务

  1. sudo systemctl stop cloudflared;
  2. 必要时 sudo cloudflared service uninstall;
  3. 从控制台复制新的连接器命令重新安装;
  4. sudo systemctl enable cloudflared 与 sudo systemctl start cloudflared;
  5. 用 status 检查,等待控制台显示 Healthy。

方法 7:更新 cloudflared

用 cloudflared --version 查看版本。通过包管理器安装的用常规方式更新;手动安装的,从 Cloudflare 官方的 cloudflared 安装说明下载最新稳定版。更新后重启服务。长期运行、很久没维护的 VPS 尤其建议检查。

方法 8:检查网络、DNS 和防火墙

cloudflared 不需要入站端口,但必须能出站联网。用 ping -c 4 1.1.1.1 测基本连通,用 ping -c 4 cloudflare.com 测 DNS。云厂商防火墙(AWS、Google Cloud、DigitalOcean、Hetzner、Vultr、Oracle 等)要确认放行出站 HTTPS。不要为了修 1033 随意开放入站端口。

方法 9:Docker 里运行的隧道

  • docker ps 看容器是否在运行,docker ps -a 看已停止的;
  • docker restart cloudflared 重启(容器名不同就替换);
  • docker logs cloudflared --tail 100 看令牌、认证、连接错误或反复重启;
  • Compose 里设置 restart: unless-stopped,改完用 docker compose up -d 重建。

方法 10:确认运行的是正确的隧道

测试时容易建好几条隧道。如果域名路由到隧道 A,服务器却跑着隧道 B,也会 1033。核对域名路由指向哪条隧道,再对照服务器上使用的隧道名、UUID 或令牌;用令牌的话,直接从控制台获取新命令最省事。

方法 11:检查内存和磁盘

用 free -h、df -h 看内存和磁盘,用 dmesg | grep -i killed 看进程是否被系统杀掉。小内存 VPS 同时跑数据库、WordPress、Docker 时尤其要留意,可以清理空间、增加交换空间或升级配置。

方法 12:最后再重启服务器

确认日志和服务状态后,仍异常可以 sudo reboot,重启后检查 cloudflared 是否自动起来;没有的话回到方法 3。

预防清单

  • 开启 cloudflared 开机自启;Docker 加重启策略;
  • 保持 cloudflared 更新,在控制台关注隧道健康状态;
  • 记录隧道名、UUID、配置和凭据文件位置;
  • 确认新隧道正常前,不要删除旧隧道凭据;
  • 重要业务可再加一个备用连接器;
  • 定期检查内存、磁盘和出站网络。

常见问题(FAQ)

1033 说明我的网站服务器挂了吗?

不一定。网站可能运行正常,只是隧道连接器断开了,先查 cloudflared。

要不要开放 80 或 443 端口?

不需要。应恢复出站的 cloudflared 连接,而不是把服务器暴露出去。

重启后多久恢复?

cloudflared 启动成功后通常几秒内重连,控制台和域名完全反映可能需要一两分钟。

总结

先看控制台隧道状态,再重启 cloudflared、查日志、核对令牌、检查 Docker 和出站网络,最后设置开机自启。1033 多半不是 DNS 或网站程序的问题,而是连接器没连上。