网络安全

网站遭受 DDoS 攻击时,CDN 能否解决问题?

CDN 能解决 DDoS 里最容易致命的那几件事——源站暴露、流量集中、重复请求;但有四件事它解决不了。这里把界线讲清楚。

直接回答: CDN 能解决 DDoS 里最容易致命的那几件事:源站 IP 暴露、集中的大流量、重复请求;但另外四件它解决不了——跑在裸 IP 上的非 HTTP 业务、由合法请求组成的七层洪水、请求真的到达之后你自己的后端容量,以及任何绕过边缘的旁路。要让 CDN 侧的防护成立,三个前提必须同时满足:DNS 指向 CDN 且处于代理状态、源站只接受 CDN 的 IP 段、不存在 DNS 历史或备份链路把源站暴露出去。

诚实的回答:最容易致命的那部分能解决,另外四件不能

在 DDoS 语境里,CDN 其实不是「缓存」,而是前面挂了一张 anycast 网络的反向代理。这个组合正好解决了最常让站点挂掉的三件事:

  1. 源站暴露。在代理之后,文档的立论成立:服务无需暴露源站 IP,攻击者只能打到反向代理本身。找不到源站的攻击,就无法耗尽源站。
  2. 流量集中。anycast 网络在多个地点宣告同样的地址,洪水被摊到整个边缘,而不是集中砸向某一个数据中心的一条链路。
  3. 重复请求。可缓存的响应在边缘返回,完全不消耗源站容量。对「大量相同请求」这种洪水,这就是「变慢」和「毫无感觉」的区别。

再加上全套餐不计量 3/4/7 层防护,「CDN 有没有用」的答案显然是肯定的。更有价值的问题是:它在哪里失效。

CDN 解决不了的四件事

缺口 为什么 CDN 修不了 真正有用的东西
跑在 TCP/UDP 上的非 HTTP 业务 反向代理终止的是 HTTP(S),无法解析或转发任意协议 端口用 Spectrum,整段前缀用 Magic Transit(Enterprise)
看起来合法的七层洪水 合法请求会被正常响应,而不是被过滤——问题不在容量,在分类 WAF 自定义规则、限流、缓存、Turnstile
源站 IP 已泄露 攻击者直接绕过主机名打到地址上 更换源站 IP,并只接受 Cloudflare 公布的网段
下游或第三方依赖 你的支付服务商、短信网关、上游 API 可以独立于你被打 合同与架构层面的冗余;第二家供应商

第三行值得特别强调,因为它会悄悄抵消第一行。隐藏源站只在地址真的不为人知、且无法直达时成立;一个泄露的 A 记录、一个被遗忘的子域名、一条旧的邮件服务器记录,就能绕过前面所有控制。

让其余措施成立的三个前提

1. DNS 完全托管,且相关记录都处于代理状态。 防护只对穿越该网络的流量生效。主机名若仍是仅 DNS 解析,就什么都得不到——这是「买了防护却看不到效果」最常见的原因。

2. 源站对公网不响应任何请求。 只放行 Cloudflare 公布的 IP 段。不做到这一步,代理只是绕路,而不是闸门。

3. 昂贵响应真的可缓存。 Cache Rules 支持按路径、查询串、请求头、Cookie 匹配,但它只能缓存你的应用允许缓存的东西。每次请求都返回个性化 HTML,等于主动放弃了手里最强的一层。

界线在哪里

同一次攻击,两种结果——取决于它打在代理是否拥有的那一层 CDN 层能吸收 流量型网络洪水(L3/4) 对可缓存页面的重复请求 连接与 TLS 握手量 直打源站地址的攻击 需要别的手段 非 HTTP 的 TCP/UDP 服务 看起来合法的七层洪水 源站 IP 泄露或源站直开公网 第三方依赖被打挂 L3/4/7 防护全套餐不计量——容量并不是随套餐变化的那个变量 随套餐变化的是你能看见与调节多少,以及能否使用 Spectrum 与 Magic Transit 前提,按顺序 1 · DNS 完全托管、记录处于代理状态 · 2 · 源站只放行 Cloudflare 网段 3 · 让昂贵响应可缓存 · 否则最强的一层你用不上
图 1:右列不是 CDN 的失败,而是从来不在 CDN 职责范围内的那些事。

Cloudflare 能力 vs 团队职责

事项 Cloudflare 提供的 你的团队必须做的
隐藏源站 反向代理;攻击者只看得到代理 更换已泄露 IP;源站只放行 Cloudflare 网段
摊薄攻击 全球 anycast 网络 无——这是平台职责
吸收重复请求 按路径、查询串、请求头、Cookie 匹配的 Cache Rules 让响应变得可缓存
L3/4/7 缓解 全套餐不计量防护 确认流量真的经过边缘
七层洪水 HTTP DDoS 规则集、WAF 自定义规则、限流 调优,并在应用层实现配额
非 HTTP 业务 Spectrum(付费套餐)、Magic Transit(Enterprise) 签约前确认协议与网段要求

边界与不适用情况

  • 挡在静态资源前的 CDN 只保护那些资源。如果应用的动态路径绕过了 CDN,攻击会自己找到它们。
  • 个性化响应没有缓存可用。每个响应都独一无二时,最强的一层不可用,只能用 WAF 规则与限流来补偿。
  • 限流不是精确计数器。计数器按数据中心累计,缓解有几秒延迟;绝对上限要放在应用层。
  • Under Attack Mode 是最后手段。它会插入约五秒插页并扭曲统计;用它换几分钟,然后回退。
  • 多 CDN 架构必须明确回答不走这个边缘的那部分流量怎么办。「大部分走了」不是答案。

FAQ

那 CDN 单独够用吗? 对大多数网站来说接近够用——前提是那三条前提都成立。例外是架构性的:非 HTTP 服务、无法缓存的个性化响应、以及仍在公网响应的源站。

套餐越贵吸收的攻击量越大吗? 不是这个问题隐含的那样。全套餐都是不计量 L3/4/7 防护。高档位改变的是可见性与可控性——更多且支持自定义表达式的 DDoS override、Log 动作、更丰富的自适应规则与高级告警——以及解锁 Spectrum 与 Magic Transit。

如果攻击者已经知道我们源站 IP 呢? 那 CDN 就被绕过了。更换地址,在源站防火墙上只放行 Cloudflare 网段,并检查历史 DNS 记录、子域名与邮件记录里是否仍指向它。

攻击期间网站会保持快吗? 缓存内容通常是;动态内容取决于情况。洪水期间可见的风险很少是裸带宽——而是源站容量,以及它背后那些昂贵的端点。

相关阅读

← 返回文章列表

Cloudflare 官方合作伙伴

正在为海外业务做架构决策?

企业版选型、架构咨询、风险评估——把你的场景告诉我们,我们给出可落地的方案和路径。

作为 Cloudflare 合作伙伴,我们可以为你提供:

预约咨询