DNS中是否允许它有一个指向另一个CNAME记录的CNAME记录?

我们之所以需要这样做,是因为我们有一个主机名,我们希望该主机名可以查询到我们网站的IP地址服务器计算机。我们还拥有另一台Web服务器计算机备用服务器,以防第一台计算机死亡。在这种情况下,我们很快需要将主机名指向备用Web服务器计算机的IP地址。

不幸的是,该主机名位于DNS域中,由于手动操作,任何更改都将花费很长时间操作取决于其他系统管理员。但是,我们还有另一个DNS域,我们可以在其中快速进行更改。从CNAME到CNAME的链似乎是一种可能的解决方案。但是可以吗? Web浏览器会理解吗?

#1 楼

从RFC 1034-域名-概念和功能:指向其他名称的RR中的域名应始终指向主名称,而不是别名。这样可以避免在访问信息时出现额外的间接访问。例如,上面主机的
的名称为RR的地址应为:

52.0.0.10.IN-ADDR.ARPA  IN      PTR     C.ISI.EDU


而不是指向USC-ISIC.ARPA。当然,根据健壮性原则,当使用CNAME
链或循环呈现时,域软件不应失败。应该遵循CNAME链,并将CNAME循环标记为错误。


所以是的,这是允许的,并且正确编写的软件可以正常处理它。但是,CNAME链并没有被认为是好的做法,并且会给基础架构带来负担。

评论


+1作为RFC参考

– Alnitak
2011年9月9日在9:56

尽管我一直这样做,但是上面的引用是没有上下文的。该段正上方的内容为:。RR中指向另一个名称的域名应始终指向主要名称,而不是别名。这避免了访问信息时的额外间接访问。

– Molomby
2014年4月30日下午5:28

由Microsoft Azure网络人员提到,CNAME链接对于对其进行AnyCast负载平衡很重要。

– Paul Lan
17/12/25在14:49

#2 楼

当然可以。

但是通常不建议这样做,因为明显的原因是它使用了更多的DNS资源。例如,

foo   IN      CNAME  someserver.somehost.com.
bar   IN      CNAME  foo


查询“ bar”将导致查询CNAME foo,然后查询someserver.somehost.com.,从而导致一个额外的查询。

对于要添加的链中的每个元素,都会有另一个查询

不鼓励这样做的另一个原因是,通过创建这样的链,您以某种方式创建CNAME循环的机会将会增加;这些应该由当前的DNS服务器自动检测到,但是仍然会对服务器造成很大的负担。

#3 楼

是的,它是允许的,并且会起作用,但是不认为是好的做法。多次查找会使用更多资源,并且存在意外创建循环的风险。