跳转到内容
搜索文档

DNS 解析

最后更新 查看 MarkdownAgent 设置

当您使用部分 zone(CNAME 设置)时,Cloudflare 处理 DNS 记录的方式与主要 zone(完整设置)略有不同,以便在内部解析已代理 HTTP 请求发送到的源站服务器。

同一 zone 内的记录

当您在部分 zone 中创建新的 DNS 记录时,Cloudflare 会自动检查是否有任何 CNAME 记录指向同一 zone 内现有的 A、AAAA 或 CNAME 记录。

例如,如果您的部分 zone 中有以下记录,Cloudflare 会显示警告:

sub1.partialzone.com   CNAME   sub2.partialzone.com
sub2.partialzone.com   A       192.0.2.1

由于 Cloudflare 同时包含 CNAME 及其目标,我们的 DNS 解析会将发往 sub1.partialzone.com 的传入 HTTP 请求发送到源站 192.0.2.1

如果您在权威 DNS 提供商处已有 sub2.partialzone.com 的 DNS 记录,这可能会导致问题。这些记录可能指向 192.0.2.4、其他 IP 地址或其他域名——但由于 Cloudflare 包含初始记录和目标,它永远不会向权威 DNS 提供商查询 sub2.partialzone.com 的记录。

    flowchart TD
      accTitle: DNS resolution flow with CNAME target in same partial zone
      A[Request to <code>sub1.partialzone.com</code>] --> B[<code>CNAME</code> record for <code>sub1.partialzone.com</code> to <code>sub2.partialzone.com</code>]
      subgraph Cloudflare
        B --> C[<code>A</code> record for <code>sub2.partialzone.com</code> to <code>192.0.2.1</code>]
      end
      C --> D[<code>192.0.2.1</code>]
      subgraph Authoritative DNS
      E[<code>A</code> record for <code>sub2.partialzone.com</code> to <code>192.0.2.4</code>]
      end

当您避免这种情况时——即部分 zone 中没有 CNAME 记录的目标——DNS 解析会以不同方式进行。

    flowchart TD
      accTitle: DNS resolution flow with CNAME target not in partial zone
      A[Request to <code>sub1.partialzone.com</code>] --> B[<code>CNAME</code> record for <code>sub1.partialzone.com</code> to <code>sub2.partialzone.com</code>]
      B --> C[<code>A</code> record for <code>sub2.partialzone.com</code> to <code>192.0.2.4</code>]
      C --> D[<code>192.0.2.4</code>]
      subgraph Cloudflare
        B
      end
      subgraph Authoritative DNS
        C
      end

指向同一账户内部分 zone 的记录

您也可以在某个 zone(部分或完整)中创建 CNAME 记录,指向账户内另一个部分 zone 中的记录。

在这种情况下,Cloudflare 始终根据 CNAME 目标 zone 的权威 DNS 提供商处的值解析 CNAME 目标。

    flowchart TD
      accTitle: DNS resolution flow with CNAME target in a zone within the same account
      A[Request to <code>www\.alice.com</code>] --> B[<code>CNAME</code> record for <code>www\.alice.com</code> to <code>www\.partialzone.com</code>]
      B --> C[<code>A</code> record for <code>www\.partialzone.com</code> to <code>192.0.2.4</code>]
      C --> D[<code>192.0.2.4</code>]
      subgraph Cloudflare account
        subgraph Cloudflare zone 1
          B
        end
        subgraph Cloudflare zone 2
        E[<code>A</code> record for <code>www\.partialzone.com</code> to <code>203.0.113.1</code>]
        end
      end
      subgraph Authoritative DNS
      C
      end

权威 DNS 指向 cdn.cloudflare.net

考虑以下场景:

  • 目标 zone(本例中的 Cloudflare zone 2)是部分 zone,且部分 zone 上的 DNS 记录已代理。
  • 权威 DNS 服务器上的 DNS 记录指向 cdn.cloudflare.net

如果存在此类设置,子域名(本例中为 www.partialzone.com)将解析到 Cloudflare 代理 IP,最终导致错误。请考虑改用 custom hostnamesO2O 设置。

    flowchart TD
      accTitle: DNS resolution flow with CNAME target in a zone within the same account and auth DNS pointing to cdn.cloudflare.net
      A[Request to <code>www\.alice.com</code>] --> B[<code>CNAME</code> record for <code>www\.alice.com</code> to <code>www\.partialzone.com</code>]
      B --> C[<code>CNAME</code> record for <code>www\.partialzone.com</code> to <code>www\.partialzone.com.cdn.cloudflare.net</code>]
      C --> D[<code>Cloudflare proxy IP</code>]
      subgraph Cloudflare account
        subgraph Cloudflare zone 1
          B
        end
        subgraph Cloudflare zone 2
        E[Proxied <code>A</code> record for <code>www\.partialzone.com</code> to <code>203.0.113.1</code>]
      end
      end
      subgraph Authoritative DNS
      C
      end

这篇文档对您有帮助吗?