DDoS 防护的第一步——通常也是最容易的一步——是确保你的 DNS 记录已通过 Cloudflare 代理。
未使用 Cloudflare 时,你的应用程序 URL 的 DNS 查询会返回你的源站服务器 ↗的 IP 地址。
| URL | 返回的 IP 地址 |
|---|---|
example.com |
192.0.2.1 |
当使用具有未代理 DNS 记录的 Cloudflare 时,未代理域名或子域名的 DNS 查询也会返回你源站的 IP 地址。
思考这个概念的另一种方式是访客直接连接到你的源站服务器。
flowchart LR
accTitle: Connections without Cloudflare
A[Visitor] <-- Connection --> B[Origin server]
使用 Cloudflare 时——意味着你的域名或子域名使用代理 DNS 记录——你的应用程序 URL 的 DNS 查询将解析为 Cloudflare Anycast IP ↗,而不是其原始 DNS 目标。
| URL | 返回的 IP 地址 |
|---|---|
example.com |
104.16.77.250 |
发往代理主机名的所有请求首先定向到 Cloudflare,然后再转发到你的源站服务器。
flowchart LR
accTitle: Connections with Cloudflare
A[Visitor] <-- Connection --> B[Cloudflare global network] <-- Connection --> C[Origin server]
Cloudflare 动态为你的域名分配特定的 Anycast IP,这些 IP 随时可能改变。这是我们 Anycast 网络运营的预期组成部分,不会影响上述代理行为。
当你的流量通过 Cloudflare 代理时,Cloudflare 可以自动阻止 DDoS 攻击 到达你的应用程序(以及你的源站服务器)。
代理流量也会受益于 Cloudflare 缓存 的默认优化。Cloudflare 自动缓存特定类型的资源,这既加快了应用程序的性能,又减少了总请求数。
在 Cloudflare 中代理 DNS 记录还会隐藏源站服务器的 IP 地址(因为对你应用程序的请求会解析为 Cloudflare Anycast IP 地址)。
这种隐蔽性使他人更难直接连接到你的源站,进而使针对你的源站发起 DDoS 攻击变得更加困难。
在代理记录之前,你应该在源站将 Cloudflare IP 地址列入允许列表,以防止请求被拦截。
然后,更新你的 Cloudflare DNS 记录,将其 Proxy status(代理状态) 设置为 Proxied(已代理)。
