是否允许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.