在自定义域上配置 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,但可能没有 其他数据。