CNAME是否应该用于子域名?

我pipe理目前有以下DNSconfiguration的多个网站:

example.com - A Record - Production Server IP test.example.com - A Record - Test Server IP www.example.com - CNAME - example.com beta.example.com - CNAME - test.example.com dev.example.com - CNAME - test.example.com 

这是否合适使用CNAMElogging? 我在网上查找,并没有find明确的答案。 有些人声称CNAMElogging是不好的(但是,他们不清楚这是为什么),并提出以下设置:

 example.com - A Record - Production Server IP test.example.com - A Record - Test Server IP www.example.com - A Record - Production Server IP beta.example.com - A Record - Test Server IP dev.example.com - A Record - Test Server IP 

哪一个是更好的方法(以及为什么)?

注意:子域名不需要自己的MXlogging,所以这不是问题。

是的,这是对CNAME的恰当使用。 在我参与的讨论中,争论往往是这样的:

反对CNAME:

  • 由于下游DNScaching需要执行2个DNS查找,一个用于CNAME,另一个用于CNAME指向的A-Record,因此会有(微小的)性能损失。
  • 模糊的,关于具有较less“权限”或兼容性问题的CNAME的虚假争论。

赞成CNAME:

  • 它们提供了硬件(物理服务器)和服务之间的清晰抽象。
  • 它们简化了DNSpipe理 – 当服务器移动时,只需更改一条logging。

尝试了几种不同的方式来做到这一点,我现在有一个个人喜欢的风格。 它是:

  • 每个物理服务器一个logging; TTL相当低(大约30分钟); 给服务器一个人性化的名字 。
  • 每个服务的一个CNAME; 高TTL(也许24小时); 指向上面的服务器名称。
  • 作为上述规则的唯一例外,域根是指向Web服务器/ Web负载均衡器的A-Record。 (@必须是Alogging。)

我发现这个设置很好。 它为CNAMES保留了额外的DNS查询; 如果服务器崩溃,我仍然可以相当快地改变公共DNS。

这是 BIND语法中的一个(即兴)示例

 ;name ttl class rr value server01 30m IN A 192.168.0.3 server02 30m IN A 192.168.0.4 webmail 24h IN CNAME server01 extranet 24h IN CNAME server02 ftp 24h IN CNAME server02 

是的,这是适当的。

许多人共享的“我的最佳实践”是为每个服务器IP创build1个Alogging; 并使用CNAMES的其他任何东西。

一个常见的例子是:

 server1.example.com. IN A 192.168.0.1 server2.example.com. IN A 192.168.5.2 www IN CNAME server1 ftp IN CNAME server1 beta IN CNAME server2