跳转到内容
搜索文档

示例图

最后更新 查看 MarkdownAgent 设置

通过 CNAME 扁平化,Cloudflare 返回 IP 地址而不是 CNAME 记录指向的目标主机名。 此过程支持一些功能并提供更好的性能和灵活性,如 CNAME 扁平化概念页中所述。

请考虑下面的图,以概览 CNAME 扁平化可能涉及的步骤。

示例用例

  • domain.test 是 Cloudflare 上的 zone,具有以下 CNAME 记录:
Type Name Content TTL
CNAME domain.test external-origin.test 3600
  • external-origin.test 是不同 DNS 提供商上的 zone,具有以下 A 记录:
Type Name Content TTL
A external-origin.test 192.0.2.1 7200

在这种情况下,直接用 IP 地址响应 domain.test 查询的过程可以用以下图表示:

flowchart BT
accTitle: CNAME flattening diagram
accDescr: Diagram of CNAME flattening process when there is a request for a domain in Cloudflare and the zone has a CNAME record at apex that points to an external A record.
  A((User)) <--query for <code>domain.test</code>--> B[Resolver] --> C
  C["Question:
  <code>domain.test IN A</code>"]
 subgraph Y[Cloudflare DNS]
 direction RL
  D{{Look up record}} --> G["Answer:
  <code>domain.test 3600 CNAME external-origin.test</code>

  This means that <code>domain.test</code> is a <code>CNAME</code> at the zone apex.
  Forced <code>CNAME</code> flattening is enabled."] --- H{{Resolve <code>external-origin.test</code>}}
  K{{Append answer with overwritten query name}} --> L["Answer:
  <code>domain.test 7200 IN A 192.0.2.1</code>"] --- M{Proxy status}
  M --Proxied--> O["Answer:
  <code>domain.test 300 IN A {$Cloudflare IP 1}</code>
  <code>domain.test 300 IN A {$Cloudflare IP 2}</code>"]
  M --DNS only--> N["Answer:
  <code>domain.test 3600 IN A 192.0.2.1</code>"]
 end

 subgraph Z [External DNS provider]
  J["Answer:
  <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 组成,其生存时间(TTL)设置为 300
  • 如果 Cloudflare 中的 CNAME 记录未被代理,扁平化答案由外部 DNS 提供商的 IP 地址组成,其 TTL 对应于外部记录和 Cloudflare CNAME 记录之间的较低值。

这篇文档对您有帮助吗?