是否允许CNAME到CNAME的链?


68

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

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

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

Answers:


81

从RFC 1034开始-域名-概念和功能:

RR中指向另一个名称的域名应始终指向主要名称,而不是别名。这避免了访问信息时的额外间接访问。例如,上述主机的名称为RR的地址应为:

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

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

所以是的,这是允许的,并且正确编写的软件将可以对其进行处理。但是,CNAME链并不被认为是好的做法,并且会给基础架构带来额外的开销。


3
1为RFC参考
— 参宿

16
尽管我一直这样做,但是上面的引用没有上下文。该段的正上方显示为Domain names in RRs which point at another name should always point at the primary name and not the alias. This avoids extra indirections in accessing information.
— 。– Molomby

3
由Microsoft Azure网络人员提到,CNAME链接对于为他们进行AnyCast负载平衡很重要。
— 保罗·兰

26

当然可以。

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

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

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

对于您将添加的链中的每个元素,将需要另一个查询。

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


5

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.