如何为同一个域名拥有 CNAME 记录和 TXT 记录?

如何为同一个域名拥有 CNAME 记录和 TXT 记录?

在自定义域上配置 Google 网站时,Google 提供的说明指定为该域创建两个记录 - TXT 和 CNAME 记录。TXT 记录包含一个代码,Google 用户可以在允许用户将该域注册为网站地址之前验证域所有权。

此外,说明书上还说要保留 TXT 记录以供验证。

据我所知,官方不允许对同一地址同时使用 CNAME 和 TXT 记录,但使用 Cloudflare 进行测试后,我发现可以对同一域同时使用 TXT 和 CNAME 记录。想必其他 DNS 管理服务也是如此,因为 Google Sites 非常受欢迎,而且我认为 Google Site CNAME 条目在世界各地处理得相当频繁。

然而,我最近与网络支持团队合作注册了一个 Google 网站,其中 CNAME 和 TXT 记录似乎不允许共存。当同一域名同时存在 CNAME 和 TXT 记录时,软件会抛出配置错误 (名称服务器守护进程- 或者至少我认为是这个软件因为命令是nsd)。

我的观察是否正确,该nsd软件不支持对同一域同时使用 TXT CNAME 记录的要求?如果是这样,其他 DNS 管理服务(例如 Cloudflare)如何实现这一点?

== 编辑 ==

根据评论中的要求,以下是 Google Sites 验证请求的屏幕截图

在此处输入图片描述

答案1

它在协议级别定义为(RFC 2181, 10.1):

如果使用 DNSSEC,别名(CNAME 记录的标签)可能具有 SIG、NXT 和 KEY RR,但可能没有其他数据。也就是说,对于 DNS 中的任何标签(任何域名),以下情况恰好之一为真:

  • 存在一条 CNAME 记录,可选地附带 SIG、NXT 和 KEY RR,
  • 存在一条或多条记录,但无一是 CNAME 记录,
  • 该名称存在,但没有任何类型的关联 RR,
  • 该名字根本不存在。

如果任何实现做了其他事情,那就违反了协议。

解决此问题的一种方法是将 TXT 记录添加到 CNAME 记录的目标上:

something.example.com. IN CNAME canonical.example.com.
canonical.example.com. IN TXT   "google-site-verification=*****"

答案2

看看 RFC 1034域名 - 概念和设施,第 3.6.2 节

如果节点上存在 CNAME RR,则不应有其他数据
展示;

RFC 1920常见的 DNS 操作和配置错误,第 2.4 节

CNAME 记录不允许与任何其他数据共存。

使用 DNSSEC 时存在例外情况(RFC 2181DNS 规范说明、第 10.1 节和 RFC 4035 DNS 安全扩展的协议修改,第 2.5 节)。

别名(CNAME 记录的标签)可能
如果使用 DNSSEC,则有 SIG、NXT 和 KEY RR,但可能没有
其他数据。

相关内容