Cloudflare 回源报错 522 连接超时怎么排查防火墙设置

文章导读
Cloudflare 522 错误核心原因是 Cloudflare 无法与源站建立 TCP 连接,最常见的原因是源站防火墙或云厂商安全组拦截了 Cloudflare 的回源 IP。排查时请优先确认源站服务存活,并在防火墙中放行 Cloudflare IP 段。
📋 目录
  1. A 故障原理简述
  2. B 实操步骤与配置命令
  3. C 验证方法
  4. D 常见风险与坑
  5. E 参考来源
A A

Cloudflare 522 错误核心原因是 Cloudflare 无法与源站建立 TCP 连接,最常见的原因是源站防火墙或云厂商安全组拦截了 Cloudflare 的回源 IP。排查时请优先确认源站服务存活,并在防火墙中放行 Cloudflare IP 段。

核心结论:522 错误通常意味着 Cloudflare 无法与源站建立 TCP 连接,防火墙拦截是常见原因之一,需优先放行 Cloudflare 回源 IP。

  • 确认状态:源站服务器是否存活,端口是否监听。
  • 执行操作:在源站防火墙及安全组中放行 Cloudflare IP 段。
  • 验证结果:通过 curl 测试直连与代理连接,观察错误是否消失。

故障原理简述

Cloudflare 作为反向代理,请求流程是“用户 -> Cloudflare -> 源站”。522 错误表示 Cloudflare 向源站发起握手时,在规定时间内(通常 15 秒)没有收到响应。

防火墙设置不当会导致 Cloudflare 的请求包被源站直接丢弃,TCP 握手无法完成。这不同于 525(SSL 握手失败)或 521(Web 服务器拒绝连接),522 更偏向网络层面的不通。

实操步骤与配置命令

1. 检查源站服务状态
先排除源站自身宕机。在服务器内部执行:

systemctl status nginx  # 或 apache/httpd
netstat -tulpn | grep :80

确认服务正在运行且监听 80/443 端口。

2. 获取 Cloudflare IP 段
不要手动复制列表,建议使用命令动态获取,同时关注 IPv4 和 IPv6:

Cloudflare 回源报错 522 连接超时怎么排查防火墙设置
curl -s https://www.cloudflare.com/ips-v4
curl -s https://www.cloudflare.com/ips-v6

若需自动化更新,可将上述命令写入定时任务脚本。

3. 配置服务器防火墙(关键)
操作防火墙前请确保有控制台访问权限,务必先保留 SSH 端口规则以防锁死服务器。以下为主流防火墙放行示例(请替换为实际获取的 IP 段):

iptables 示例:

iptables -I INPUT -p tcp -m iprange `--src-range` 192.0.2.0-192.0.2.255 `--dport` 80 -j ACCEPT
iptables -I INPUT -p tcp -m iprange `--src-range` 192.0.2.0-192.0.2.255 `--dport` 443 -j ACCEPT

ufw 示例:

ufw allow from 192.0.2.0/24 to any port 80,443

firewalld 示例:

firewall-cmd `--permanent` `--add-rich-rule`='rule family="ipv4" source address="192.0.2.0/24" port port="80" protocol="tcp" accept'
firewall-cmd `--reload`

4. 检查云厂商安全组
实例级别的防火墙之外还有“安全组”(如 AWS、阿里云、腾讯云)。需在云控制台放行 80/443 入站规则。

Cloudflare 回源报错 522 连接超时怎么排查防火墙设置

注意:若将安全组来源设为 0.0.0.0/0,必须确保 Cloudflare 代理模式(橙色云)已开启,否则源站 IP 将直接暴露。若未开启代理,建议仅放行 Cloudflare IP 段。

验证方法

配置完成后,按以下顺序验证:

1. 检查规则生效:查看防火墙规则是否已添加。

iptables -L INPUT -n `--line-numbers`
ufw status verbose

2. 测试外部连通性:使用源站 IP 直接请求(需 bypass Cloudflare 或在本机 hosts 绑定源站 IP 测试):

curl -I http://你的源站 IP

3. 观察业务状态:访问网站,观察 Cloudflare 错误页面是否消失。在 Cloudflare 后台查看“分析”->“事件”,确认 522 错误计数不再增长。

Cloudflare 回源报错 522 连接超时怎么排查防火墙设置

4. 查看源站日志:确认是否有来自 Cloudflare IP 段的请求记录。

tail -f /var/log/nginx/access.log

常见风险与坑

1. SSH 锁死风险:修改防火墙规则前,务必确认 SSH 端口(默认 22)处于放行状态,建议先执行 iptables -I INPUT -p tcp `--dport` 22 -j ACCEPT

2. IPv6 遗漏:若源站开启 IPv6,需同时放行 Cloudflare 的 IPv6 段(ips-v6),否则部分用户仍会超时。配置命令需指定 family="ipv6" 或使用 ip6tables

3. IP 段变更:Cloudflare 会不定期增加 IP 段,硬编码 IP 列表可能导致未来失效,建议订阅官方更新或使用自动化脚本。

4. Hosting 商防火墙:部分虚拟主机或托管商有独立防火墙层,需联系服务商确认是否拦截了 CF 请求。

5. DDoS 保护模式:开启“under attack”模式时,Cloudflare 可能使用不同的 IP 段,需确保全部放行。

参考来源

  • Cloudflare Support, Troubleshooting Cloudflare 5XX Errors, https://developers.cloudflare.com/support/troubleshooting/cloudflare-errors/troubleshooting-cloudflare-5xx-errors/
  • Cloudflare, Cloudflare IP Ranges, https://www.cloudflare.com/ips/