DNS中的CNAME可以减轻运维压力,使得已有的DNS配置具有一定的灵活性和可扩展性。本文对CNAME中的一些细节做阐述, 使DNS服务器的运维人员和开发人员能合理地使用CNAME。
你可能想把一个zone的DNS解析转发到另一个zone的DNS解析,比如这样配置
1 |
old.taobao.com. IN CNAME new .taobao.com. |
所以,正确的做法应该是为zone下面的domain设置CNAME,像下面这样:
1
2 |
img01.old.taobao.com. IN CNAME img. new .taobao.com. img02.old.taobao.com. IN CNAME img. new .taobao.com. |
标准DNS协议是不鼓励指向CNAME的CNAME的,因为这样会导致cname loop,同时会增加解析时间。我遇到的一个DNS服务器 就因为没有做CNAME loop的检查,不断向系统申请资源从而导致内存暴增直至宕机。
如果你决定你的DNS服务器不遵循标准DNS协议,支持多层CNAME的话,那么对于CNAME链的长度限制和CNAME loop的检查是 十分有必要的。
一个domain name或许会有对应的对个CNAME,像下面这样:
1
2
3 |
img.taobao.com. IN CNAME img01.taobaocdn.com. img.taobao.com. IN CNAME img02.taobaocdn.com. img.taobao.com. IN CNAME img03.taobaocdn.com. |
值得一体的是,BIND9不支持这种多值的CNAME。
下面就是CNAME作为一个alias的配置:
1
2 |
mail.taobao.com. IN MX mail.taobaocdn.com. mail.taobaocdn.com IN CNAME mail.alibaba.com. |
当然,跟上面所有的情况一样,你怎么实现都是你自己的事情,倒是后踩到自己挖的坑还得自己填。
原文:http://www.cnblogs.com/cobbliu/p/3687750.html