![当 A 记录存在时,是否将 CNAME 记录添加到 DNS?](https://linux22.com/image/764062/%E5%BD%93%20A%20%E8%AE%B0%E5%BD%95%E5%AD%98%E5%9C%A8%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E5%B0%86%20CNAME%20%E8%AE%B0%E5%BD%95%E6%B7%BB%E5%8A%A0%E5%88%B0%20DNS%EF%BC%9F.png)
我们正在为客户管理 DNS 区域,他们正在对...进行一些更改,不管是什么,都无所谓。为我们的客户进行更改的顾问公司向我们发送了一个请求,要求我们在客户的 DNS 区域添加一堆 CNAME 记录(以及 SPF 更改,我认为这些是针对 DKIM 的),所有这些 CNAME 记录别名都是一些不在我们的 DNS 中的外部域。我们称之为 hostx.externaldomain.com。
但是对于要添加的三个 CNAME 记录,我们的 DNS 中已经有一个现有记录:
- host1.example.com A(IP 地址)
- host2.example.com NS(负载均衡器)
- host3.example.com NS(负载均衡器)
因此,第一个是该 IP 地址背后的实际网页,另外两个则委托给我们的负载均衡器,而负载均衡器又有它们的 A 记录等。我们的 DNS 拒绝添加这三个 CNAME 记录,因为相同名称存在现有的 A 和 NS 记录,我猜这是意料之中的。
但是,现在似乎每个人都不清楚如何继续。如果我只删除 host1 A 记录并添加 CNAME 记录(指向不在我们的 DNS 中的外部主机名的别名),那么https://host1.example.com网站就此停止回答吗?
从基本层面上讲,我理解如果别名也在我们的 DNS 中,CNAME 和 A 将如何工作,例如:
- example.com A(IP 地址)
- www.example.comA(与上面相同的 IP 地址)
我可以删除 www A 记录并将其替换为:
- www.example.comCNAME 示例.com
这意味着www.example.com将会使用与 example.com 相同的 IP 地址(带有 A 记录)。
那么,这是否意味着,无论谁管理 CNAME 别名指向的外部主机名 (hostx.externaldomain.com) 的 DNS,都应首先向其 DNS 添加一个 A 记录 (hostx.externaldomain.com A (IP 地址)),其中 IP 地址与我们的 host1 IP 地址指向的相同,然后我才能删除我们的 A 记录并将其替换为 CNAME 记录?
然后我再次不确定它将如何工作,因为 hostx.externaldomain.com 已经设置了一些 IP 地址(刚刚用 ping 检查过),我不知道他们如何通过设置指向 host1 IP 地址的 A 记录来改变这一点...而且,我们应该设置的所有其他 CNAME 记录都使用相同的别名。
答案1
CNAME
记录必须仅独立存在。您不能具有如下区域数据:
name A xx.xx.xx.xx
name CNAME othername
一些特殊记录可能与 共存CNAME
,以证明其真实性。DNSSEC 规范要求使用RRSIG
和NSEC
进行身份验证,它们可以与 共存CNAME
,请参阅RFC 4034 第 3 节和RFC 4034 第 4 节. 有较旧的规格,RFC 2181,第 10.1 节,RFC 2535 第 2.3.5 节SIG
,对于、NXT
和记录来说,含义相同KEY
。
所有最终应用程序数据必须附加到作为目标的 RR CNAME
;参见RFC1034 第 3.6.2 节(原始 DNS 规范)。
some.name.tld CNAME rec.othername.tld
rec.othername.tld A xx.xx.xx.xx
rec.othername.tld TXT text-rr-data
还要注意,CNAME
标签不仅继承了A
(地址),还继承了目标标签的许多其他特性,特别是TXT
。
这个(较旧的)RFC 还包含上述限制的更严格版本,该版本已为 DNSSEC 解除:
如果节点上存在 CNAME RR,则不应存在其他数据;这确保了规范名称和其别名的数据不会有所不同。
如果没有 DNSSEC,这个更严格的限制仍然有效。