Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

図の例

最終更新 Markdown で表示Agent セットアップ

CNAME flattening では、Cloudflare は CNAME レコードが指すターゲットホスト名ではなく、IP アドレスを返します。 この処理はいくつかの機能を支え、CNAME flattening の概要 で述べているとおり、パフォーマンスと柔軟性を高めます。

次の図で、CNAME flattening に含まれる手順の概要を確認できます。

利用例

  • domain.test は Cloudflare 上のゾーンで、次の CNAME レコードがあります。
タイプ 名前 コンテンツ TTL
CNAME domain.test external-origin.test 3600
  • external-origin.test は別の DNS プロバイダー上のゾーンで、次の A レコードがあります。
タイプ 名前 コンテンツ TTL
A external-origin.test 192.0.2.1 7200

この場合、domain.test へのクエリに IP アドレスを直接返す処理は、次の図で表せます。

flowchart BT
accTitle: CNAME flattening の図
accDescr: Cloudflare 上のドメインへのリクエストがあり、ゾーン apex の CNAME レコードが外部の A レコードを指す場合の CNAME flattening 処理の図。
  A((ユーザー)) <--<code>domain.test</code> へのクエリ--> B[リゾルバー] --> C
  C["質問:
  <code>domain.test IN A</code>"]
 subgraph Y[Cloudflare DNS]
 direction RL
  D{{レコードを検索}} --> G["回答:
  <code>domain.test 3600 CNAME external-origin.test</code>

  これは <code>domain.test</code> がゾーン apex の <code>CNAME</code> であることを意味します。
  強制的な <code>CNAME</code> flattening が有効です。"] --- H{{<code>external-origin.test</code> を解決}}
  K{{クエリ名を上書きして回答を追加}} --> L["回答:
  <code>domain.test 7200 IN A 192.0.2.1</code>"] --- M{プロキシステータス}
  M --プロキシ済み--> O["回答:
  <code>domain.test 300 IN A {$Cloudflare IP 1}</code>
  <code>domain.test 300 IN A {$Cloudflare IP 2}</code>"]
  M --DNS のみ--> N["回答:
  <code>domain.test 3600 IN A 192.0.2.1</code>"]
 end

 subgraph Z [外部 DNS プロバイダー]
  J["回答:
  <code>external-origin.test 7200 IN A 192.0.2.1</code>"]
 end

 C --> D
 H --- J --- K
 O --> B
 N --> B

考慮点

  • CNAME レコードが Cloudflare でプロキシされている場合、回答は複数の Cloudflare IP で構成され、Time to Live(TTL)は 300 になります。
  • Cloudflare 上の CNAME レコードがプロキシされていない場合、flatten した回答は外部 DNS プロバイダーの IP アドレスになり、TTL は外部レコードと Cloudflare の CNAME レコードのうち小さい方になります。

役に立ちましたか?