VPSにドメインを割り当てる際にCloudflareを利用したので、DNSとCloudflareの仕組みについて整理しました。
DNSの設定
まず、ドメインを取得しただけではVPSには接続できないため、DNSでドメインと接続先を紐付けます。
今回はネームサーバーをCloudflareに変更し、Cloudflare側でAレコードを設定しました。
example.com
↓
Aレコード
↓
VPSのIPv4アドレス
ネームサーバーをCloudflareに変更することで、そのドメインのDNSについてCloudflareのネームサーバーが権威DNSとして使われるようになります。
レジストリにはドメインごとのネームサーバー情報が登録されているため、DNSの問い合わせからCloudflareのネームサーバーまで辿ることができます。
そのCloudflareのDNSにAレコードを登録しておくことで、
example.com → VPSのIPv4アドレス
という名前解決が行われます。
Cloudflareのプロキシ
Cloudflareには、DNSレコードをそのまま公開するだけでなく、通信をCloudflare経由にするプロキシ機能があります。
DNSレコードのオレンジクラウドを有効にすると、
ユーザー
↓
Cloudflare
↓
VPS
という経路になります。
プロキシを使わない場合は、
ユーザー
↓
VPS
となるため、CloudflareはDNSの名前解決を行うだけです。
そのため、CloudflareのDDoS対策などを利用する場合は、DNSをCloudflareにするだけでなく、プロキシを有効にしてCloudflareを通信経路に入れる必要があります。
Anycast
CloudflareではAnycastという仕組みも使われています。
これは、世界中の複数の拠点から同じIPアドレスを広告することで、ユーザーからの通信をネットワーク的に近い拠点などへ届ける仕組みです。
┌─ Cloudflare拠点
│
ユーザー ────────┼─ Cloudflare拠点
│
└─ Cloudflare拠点
↓
VPS
そのため、大量の通信が発生した場合でも、Cloudflareの大規模なネットワークで受けることができます。
DDoS攻撃についても、VPSが直接すべての攻撃通信を受けるのではなく、Cloudflare側のネットワークで受けて緩和する形になります。
今回理解したこと
今回の設定を流れで整理すると、
ドメインを取得
↓
ネームサーバーをCloudflareに変更
↓
レジストリの委任情報をもとに
Cloudflareが権威DNSになる
↓
CloudflareにAレコードを登録
↓
ドメイン → VPSのIPアドレスを名前解決
↓
オレンジクラウドを有効化
↓
通信がCloudflareを経由
↓
CloudflareのAnycastネットワークで通信を受ける
↓
DDoSなどの攻撃をCloudflare側で緩和
最初は「CloudflareにドメインとIPを登録すれば安全になる」という程度の理解でしたが、
DNSの委任 → Aレコードによる名前解決 → プロキシによる通信の中継 → Anycastによる分散
という流れで考えると、CloudflareがDNSだけでなくDDoS対策にも関わっている理由がつながりました。