网站遭受 DDoS 攻击时,CDN 能否解决问题?
CDN 能解决 DDoS 里最容易致命的那几件事——源站暴露、流量集中、重复请求;但有四件事它解决不了。这里把界线讲清楚。
直接回答: CDN 能解决 DDoS 里最容易致命的那几件事:源站 IP 暴露、集中的大流量、重复请求;但另外四件它解决不了——跑在裸 IP 上的非 HTTP 业务、由合法请求组成的七层洪水、请求真的到达之后你自己的后端容量,以及任何绕过边缘的旁路。要让 CDN 侧的防护成立,三个前提必须同时满足:DNS 指向 CDN 且处于代理状态、源站只接受 CDN 的 IP 段、不存在 DNS 历史或备份链路把源站暴露出去。
诚实的回答:最容易致命的那部分能解决,另外四件不能
在 DDoS 语境里,CDN 其实不是「缓存」,而是前面挂了一张 anycast 网络的反向代理。这个组合正好解决了最常让站点挂掉的三件事:
- 源站暴露。在代理之后,文档的立论成立:服务无需暴露源站 IP,攻击者只能打到反向代理本身。找不到源站的攻击,就无法耗尽源站。
- 流量集中。anycast 网络在多个地点宣告同样的地址,洪水被摊到整个边缘,而不是集中砸向某一个数据中心的一条链路。
- 重复请求。可缓存的响应在边缘返回,完全不消耗源站容量。对「大量相同请求」这种洪水,这就是「变慢」和「毫无感觉」的区别。
再加上全套餐不计量 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,等于主动放弃了手里最强的一层。
界线在哪里
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 官方文档页面,本文涉及的功能可用性、配额与限制以此为准;功能会随产品更新变化,以控制台实际可见项为准。
- developers.cloudflare.com/ddos-protection/about/
- developers.cloudflare.com/fundamentals/concepts/how-cloudflare-works/
- developers.cloudflare.com/ddos-protection/managed-rulesets/http/
- developers.cloudflare.com/spectrum/about/ddos-for-spectrum/
- developers.cloudflare.com/magic-transit/
- developers.cloudflare.com/waf/rate-limiting-rules/
- developers.cloudflare.com/cache/how-to/cache-rules/