Google Cloud DNS 中的 CNAME

CNAME in Google Cloud DNS

我一直在尝试将 www.mydomain.net 别名添加到 mydomain.net。我已经有 Google 自动添加的 MX 记录和 NS 和 SOA 记录。

我收到 cnameResourceRecordSetConflict 错误:

Error code "cnameResourceRecordSetConflict" : The resource record set 'entity.change.additions[0]' is invalid because the DNS name 'mydomain.net.' may have either one CNAME resource record set or resource record sets of other types, but not both.

我明白错误给我的建议,但是我怎么能有其他记录呢?我的域需要 MX 和 CNAME。

您遇到的问题是 rules of DNS 的问题,它禁止在存在另一条记录的情况下使用 CNAME 记录。

If a CNAME RR is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different. This rule also insures that a cached CNAME can be used without checking with an authoritative server for other RR types.

您正在尝试为 @ 记录创建 CNAME。 @ 记录是来源,例如 example.com。源头已经至少有两条记录,SOA(授权开始 - 基本上是关于域的信息)记录和 NS(名称服务器)

因此,您无法为来源创建 CNAME 记录。

因此您只能为来源创建一个 A 记录(为了完成一个标准的 A 记录查询——当然您仍然可以创建 MX 等)。但是,有些 DNS 提供商具有特殊类型的记录 ANAME,如果您需要在来源处使用 CNAME 记录,则需要切换到其中之一。

我目前在配置我的 GCP 云 DNS 域时遇到了同样的问题。

该错误非常笼统,而且不是很清楚。但是,我在 kubernetes-sigs/external-dns 的 GitHub 上发现了标题为 "Google-CloudDNS 的问题:启用 txt 注册表时无法写入 CNAME 记录。" 这使得其他记录可能导致问题变得有点清楚。

Google 的 DNS error message documentation 提到 SOANS 会与 CNAME:

冲突

cnameResourceRecordSetConflict

The resource record set entity.change.additions[XX] is invalid because the DNS name example.com might have either one CNAME resource record set or resource record sets of other types, but not both.

This error occurs when you create two types of resource record sets, such as both an A record and a CNAME record for the same DNS name. A common cause of this error is trying to create a CNAME record at the zone apex. This is not possible because it would conflict with the required SOA and NS records of the same name.

Recommended action: Pick one or the other.

但是,感觉不对,因为创建 Cloud DNS 服务时 SOANS 记录都会自动添加。

回顾我的 Cloud DNS,我发现我添加了两条 TXT 记录用于验证 属性 和 Google,一旦我删除了 TXT 记录,我能够添加 CNAME 记录。

希望对未来的开发者有所帮助。