コンテンツにスキップ

例の図

CNAME フラットニングを使用すると、Cloudflare は CNAME レコードが指すターゲットホスト名の代わりに IP アドレスを返します。このプロセスは、いくつかの機能をサポートし、CNAME フラットニングの概念ページに記載されているように、より良いパフォーマンスと柔軟性を提供します。

以下の図を考慮して、CNAME フラットニングに関与する可能性のあるステップの概要を把握してください。

例のユースケース

  • domain.test は Cloudflare 上のゾーンで、次の CNAME レコードを持っています:

TypeNameContentTTL
CNAMEdomain.testexternal-origin.test3600
  • external-origin.test は別の DNS プロバイダー上のゾーンで、次の A レコードを持っています:

TypeNameContentTTL
Aexternal-origin.test192.0.2.17200

この場合、domain.test に対するクエリに直接 IP アドレスで応答するプロセスは、次の図で表すことができます:

flowchart BT
accTitle: CNAME フラットニング図
accDescr: Cloudflare にドメインのリクエストがあり、ゾーンに外部 A レコードを指す CNAME レコードがある場合の CNAME フラットニングプロセスの図。
  A((ユーザー)) <--query for <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> がゾーンのアペックスにある <code>CNAME</code> であることを意味します。
  強制 <code>CNAME</code> フラットニングが有効です。"] --- 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 IPs で構成され、その TTL は 300 に設定されます。
  • Cloudflare の CNAME レコードがプロキシされていない場合、フラット化された回答は外部 DNS プロバイダーからの IP アドレスで構成され、その TTL は外部レコードと Cloudflare の CNAME レコードの間の低い値に対応します。