DDoS 対策の最初のステップであり、多くの場合もっとも簡単なのは、DNS レコードを Cloudflare 経由で プロキシ することです。
Cloudflare がない場合、アプリケーションの URL に対する DNS ルックアップは、オリジンサーバー ↗ の IP アドレスを返します。
| URL | 返される IP アドレス |
|---|---|
example.com |
192.0.2.1 |
Cloudflare を使っていても、プロキシしていない DNS レコード の場合、プロキシしていないドメインやサブドメインの DNS ルックアップもオリジンの IP アドレスを返します。
別の言い方をすると、訪問者はオリジンサーバーへ直接接続します。
flowchart LR
accTitle: Cloudflare なしの接続
A[訪問者] <-- 接続 --> B[オリジンサーバー]
Cloudflare を使う場合、つまりドメインまたはサブドメインが プロキシ済み DNS レコード を使っている場合、アプリケーションの URL に対する DNS ルックアップは、元の DNS ターゲットではなく Cloudflare の anycast IP ↗ に解決されます。
| URL | 返される IP アドレス |
|---|---|
example.com |
104.16.77.250 |
プロキシ済みホスト名向けのリクエストは、まず Cloudflare へ向かい、その後オリジンサーバーへ転送されます。
flowchart LR
accTitle: Cloudflare ありの接続
A[訪問者] <-- 接続 --> B[Cloudflare グローバルネットワーク] <-- 接続 --> C[オリジンサーバー]
Cloudflare はドメインへ特定の anycast IP を動的に割り当てます。これらの IP はいつでも変わることがあります。anycast ネットワークの通常の動作であり、上記のプロキシ動作には影響しません。
トラフィックが Cloudflare 経由でプロキシされていると、Cloudflare は DDoS 攻撃 がアプリケーション(およびオリジンサーバー)に届く前に自動で止められます。
プロキシされたトラフィックは、Cloudflare キャッシュ のデフォルト最適化も利用できます。Cloudflare は 特定の種類のリソース を自動でキャッシュします。アプリケーションのパフォーマンスが上がり、リクエスト総数も減ります。
Cloudflare で DNS レコードをプロキシすると、オリジンサーバーの IP アドレスも隠れます。アプリケーションへのリクエストが Cloudflare の anycast IP アドレスに解決されるためです。
これにより、オリジンへ直接接続しにくくなり、結果としてオリジンを狙った DDoS 攻撃も仕掛けにくくなります。
レコードをプロキシする前に、リクエストがブロックされないよう、オリジンで Cloudflare の IP アドレス を許可してください。
次に、Cloudflare の DNS レコード を更新し、Proxy status を Proxied にします。
