我管理多个当前具有以下DNS配置的网站:
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记录,因此这不是问题.
解决方法
是的,这是对CNAME的恰当使用.在我参与的讨论中,争论倾向于这样:
反对CNAME:
>存在(微小的)性能损失,因为下游DNS缓存需要执行2次DNS查找,一次用于CNAME,一次用于CNAME指向的A-Record.
>关于CNAME具有较少“权威”或兼容性问题的模糊,虚假论点.
支持CNAME:
>它们在硬件(物理服务器)和服务之间提供干净的抽象.
>它们简化了DNS管理 – 当服务器移动时,您只需要更改一条记录.
在尝试了几种不同的方法之后,我现在拥有了个人喜爱的风格.它是:
>每个物理服务器一个记录; TTL相当低(可能是30分钟);给服务器一个human-friendly name.
>每个服务一个CNAME; TTL很高(可能是24小时);指向上面的服务器名称.
>作为上述规则的唯一例外,域根是一个A-Record,指向webserver / web负载均衡器. (@必须是A记录.)
我发现这个设置很好用.它为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