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
这是否适合使用CNAME记录?我在网上看过,还没有找到明确的答案。有人声称CNAME记录不好(但是并不清楚为什么),并提出了以下设置:
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
其中之一是更好的方法(为什么)?
注意:子域不需要自己的MX记录,因此这里不是问题。
#1 楼
是的,这是对CNAME的适当使用。在我参与的讨论中,争论往往是这样的:反对CNAME:由于下游DNS缓存需要执行2个DNS查找,一个用于CNAME,一个用于CNAME指向的A记录。 >
支持CNAME:
它们在硬件(物理服务器)和服务之间提供了清晰的抽象。
它们简化了DNS管理-当服务器移动时,您只需要更改一条记录即可。
尝试了几种不同的方法后,我现在有了个人喜欢的样式。它是:
每个物理服务器一个记录;具有相当低的TTL(可能是30分钟);
每个服务使用一个CNAME;具有较高的TTL(可能是24小时);指向上述服务器名称。
作为上述规则的唯一代表,域根是A记录,指向Web服务器/ Web负载平衡器。 (@必须是A记录。)
我发现此设置很好用。它可以减少CNAMES的额外DNS查找。而且如果服务器崩溃,我仍然可以快速更改公用DNS。
这是BIND语法的一个(经过改进的)示例:
评论
谢谢您,最后,我对CNAME提出了合理而简洁的意见。
–泰勒
2012年8月12日下午4:08
@Jesper Mortensen:您能否举一个小例子来更新答案,特别是当您说“作为上述规则的唯一代表,域名根是A记录”时,我还是不明白您的第三点。第一点说,您为每个物理层服务器使用一个A记录。 (顺便说一句,链接消失了)
– Marco Demaio
13年2月21日在20:07
@Marco Demaio:关于“域根A记录”:像company.com这样的二级域是区域顶点。它需要一个SOA记录。因此,它必须是A记录而不是CNAME-请参阅serverfault.com/questions/170194/…
– Jesper M
13年2月21日在21:01
@不需要具有A记录;而是禁止使用CNAME。
–迈克尔·汉普顿
13年5月11日16:00
只是想补充一点,如果您的服务器也支持IPv6地址,则CNAME特别有用,因为每个服务器至少需要两个条目(每个记录一个A和AAAA),因此将CNAME用于子域在这种情况下要简单得多。如果您对TTL使用Jesper的建议(或者您的DNS提供商具有良好的自动处理能力),那么应该没有实际的性能损失。
– Haravikk
16年1月20日在11:49
#2 楼
是的,这是适当的。我的最佳实践是每个服务器IP创建1 A记录,很多人都分享了我的最佳实践。并使用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
评论
我知道在这个问题中他们说邮件在这里不是问题,但让我们假设您还使用邮件如何处理MX记录?谢谢!
– Marco Demaio
13年2月21日在19:59
MX记录也将指向服务器名称。在MX server1中,为方便起见,我还建议您设置imap或pop和smtp CNAME,还可能要设置邮件,因为许多电子邮件程序都猜到了这一点。设置正确的SRV记录也是一个好主意,但是由于这是一个相对基本的问题,因此对于简单的配置,SRV记录可能会有点过多。
–克里斯S
13年2月21日在20:07
快速评论,MXrecord一定不能是CNAME,请参阅serverfault.com/a/232243/2874,它在实践中可能很好用-但最好不要这样做。
– Jesper M
13年2月21日在22:45
如果您将MX或SRV记录指向CNAME,则BIND将拒绝加载区域...我可能应该已经清楚地表明MX记录需要指向A记录。谢谢。
–克里斯S
13年2月22日在0:40
@ChrisS,如何编辑答案并清楚提到MX记录不能指向CNAME条目这一事实呢?
– Alexis Wilke
16年8月30日在20:55
评论
我觉得这应该是维基的答案。 DNS很难正确解决,六年后这个公认的答案仍然很好吗?@ the0ther是的,即使在今天,来自Jesper Mortensen的经过验证的答案仍然有效(即使有人可能会争辩事物的名称或要使用的正确TTL值,但这与是否使用CNAME记录的问题是分开的)。 DNS是30年前的旧协议,因此诸如CNAME记录之类的基本信息不会随时间变化。