新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

セカンダリDNSとオレンジ色の雲

2020-08-20

4分で読了
この投稿はEnglishおよび简体中文でも表示されます。

セカンダリDNSとは?

セカンダリDNSサーバーとは、もともとプライマリ権威DNSサーバーのバックアップとして機能するものを意味していました。プライマリサーバーのレコードに変更が加わると、ゾーン転送が行われ、セカンダリDNSサーバーがプライマリサーバーと同期されます。セカンダリサーバーはその時、プライマリサーバーであるかのようにレコードを処理できますが、変更ができるのはプライマリサーバーだけで、セカンダリサーバーではありません。これが、必要に応じて分散される異なるサーバー間で冗長性が作り出されます。

セカンダリDNSを活用する共通の方法がいくつもありますが、その中に次のような方法があります。

  1. 受動的なバックアップとしてのセカンダリDNS - セカンダリDNSサーバーがプライマリサーバーがダウンするまで、アイドリング状態でいます。フェイルオーバーが発生した時点で、セカンダリがレコードの処理を始められます。

  2. 能動的なバックアップとしてのセカンダリDNS - セカンダリDNSサーバーはプライマリサーバーと連携してレコードを処理します。

  3. 隠れプライマリを持つセカンダリDNS - セカンダリサーバーにのみ対象とするregistrarポイントでネームサーバーが記録し、基本的にセカンダリをプライマリネームサーバーとして扱います。

セカンダリDNSのオーバーライドとは?

セカンダリDNSオーバーライドは、隠れプライマリモデルを持つセカンダリDNS上で構築されます。これは、お客様の指示通りにレコードを処理するだけでなく、お客様がCloudflareのネットワークを介して、あらゆるA/AAAA/CNAMEレコードをプロキシできるように許可することで実現します。これは、現在CloudflareがプライマリDNSプロバイダーとして機能する方法と似ています。

次の例を考えてみてください。

example.com Cloudflare IP - 192.0.2.0

example.com origin IP - 203.0.113.0

Cloudflareのセキュリティとパフォーマンスサービスをうまく活用するために、配信元IPがインターネットから隠れた状態のままであることを確認する必要があります。

図1:隠れプライマリネームサーバーがないセカンダリDNS

図1は、隠れプライマリネームサーバーがなく、リゾルバーがクエリをどちらか選択できることを示しています。これで、2つの問題が起こります。

  1. RFC 1034RFC 2182に違反します。これは、Cloudflareサーバーがプライマリネームサーバーとは異なる応答をするためです。

  2. 配信元IPが、インターネットに公開されてしまいます。

図2:隠れプライマリネームサーバーがあるセカンダリDNS

図2は、リゾルバーが常にCloudflareセカンダリDNSサーバーにクエリを出していることを示しています。

セカンダリDNSオーバーライドの仕組み

セカンダリDNSオーバーライドUIは、プライマリUIと類似していますが、レコードの編集ができないという違いが1つだけあります。

図3:セカンダリDNSオーバーライドダッシュボード

図3では、レコードがすべてプライマリDNSサーバーから転送されています。test-grey(テスト-グレー)とtest-mx(テスト-mx)が、通常のDNSレコードとして扱われる一方で、test-orang(テスト-オレンジ)とtest-aaaa-orange(テスト-aaaa-オレンジ)がオーバーライドされてCloudflareネットワークを経由してプロキシされます。

水面下では、ネームに基づいて転送されたレコードとペアになるオーバーライドレコードを保管します。セカンダリオーバーライドについては、レコードをオーバーライドする時の種類についてそれほど気にしていません。その理由は2つあります。

  1. RFC1912によると、他のレコードと同じネームのCNAMEレコードを持つことはできません。(これは適用できないDNSSECレコードがあります。RFC2181を参照してください)

  2. AレコードもAAAAレコードもアドレスタイプのレコードで、同じネームですべてプロキシされるか、すべてプロキシされないかのどちらかである必要があります。

つまり、「example.com」というネームがついたAレコードとAAAAレコードがいくつかある場合、そのうち1つがプロキシされる場合、すべてのレコードがプロキシされるということです。UIは、「オレンジ色の雲」ボタンを使って追加のオーバーライドレコードを保管するという考えを抽象化するのに役立ちます。これは、クリックされた時、そのネームが持つすべてのA/AAAAレコードまたはCNAMEレコードに適用されるオーバーライドレコードを作成します。

ApexのCNAME

通常、Zone ApexにCNAMEを置くことは許可されません。例:

example.com CNAME other-domain.com

前述の通り、RFC1912に従わず、少なくとも1つ、別のSOAレコードとNSレコードが同じネームを持っているということを意味するため、これは許可されません。CloudflareはCNAME Flatteningを使用することで解決できます。CNAME FlatteningはプライマリDNSプロダクト内で一般的に用いられるテクニックです。権威サーバーにクエリが来たときに、CNAMEレコードの代わりにアドレスレコードを返すことができます。

セカンダリDNSオーバーライドUIを介したレコードの編集防止に関する前述の説明とは反対に、ApexのCNAMEはこの規則の例外です。ユーザーは、通常のセカンダリ DNSレコードに加えて、ApexでCNAMEを作成することができますが、RFC1912で定義された同じ規則も適用されます。つまり、ユーザーの決定内容に応じて、ApexレコードのCNAMEは通常のDNSレコードまたはプロキシされたレコードとして扱うことができるということです。ApexレコードのCNAMEのプロキシステータスに関わらず、プライマリDNSサーバーから転送されたその他のA/AAAレコードにオーバーライドします。

Apexレコードでセカンダリ、オーバーライド、CNAMEのマージ

レコード編集時間に、Apexレコードでセカンダリ、オーバーライド、CNAMEのマージをすべて行います。つまり、DNSリクエストがエッジの権威サーバーに送信された時、超高速時間でレコードを戻すことができます。このワークフローは、図4で示されています。

図4:レコードのマージ処理

ゾーンビルダー内でのステップは以下の通りです。

  1. ApexにCNAMEがあるかどうかを確認し、ある場合はApexにある他のA/AAAセカンダリレコードをすべてオーバーライドします。

  2. 各セカンダリレコードについて、一致するオーバーライドレコードがあるかどうかを確認し、ある場合はオーバーライドレコードのプロキシステータスをそのネームを持つセカンダリレコードすべてに適用します。

  3. 他のセカンダリレコードをそのままに

利用開始

セカンダリDNSオーバーライドは、ゾーンのすべてをプライマリプロバイダーとしてのCloudflareDNSに転送せずに、Cloudflareネットワークを活用したいユーザーにとって最適なオプションです。Cloudflare側における情報の不正な編集を心配することなく、プライマリ側でセキュリティとアクセス制御を管理できます。

セカンダリDNSオーバーライドは、現在Enterprise Planで利用できます。ご利用をお考えの場合は、アカウントチームにお知らせください。セカンダリDNSオーバーライドに関する追加の資料は、当社のサポート記事をご参照ください。

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
DNS製品ニュースProxying

Xでフォロー

Cloudflare|@cloudflare

関連ブログ投稿

2024年10月24日 13:00

Durable Objects aren't just durable, they're fast: a 10x speedup for Cloudflare Queues

Learn how we built Cloudflare Queues using our own Developer Platform and how it evolved to a geographically-distributed, horizontally-scalable architecture built on Durable Objects. Our new architecture supports over 10x more throughput and over 3x lower latency compared to the previous version....