RFC 1034(http://tools.ietf.org/pdf/rfc1034)章节3.6.2中指出:
If aCNAME RR is present at a node, no other data should be presentthis ensuresthat the data for a canonical name and its aliases cannot be different.大意就是说如果CNAME资源记录出现在一个域名节点,为了确保不会出现不同的解析结果,这个域名节点将不再接受其他记录值。
我们来测试一下。
假设为DNS域chinatesters.cn注册了下面的两条记录:
@MX 10 mx.ym.163.com.
@CNAME fastweb.com.cn.
下面是在递归服务器(不能使用该域的授权服务器)上dig查询的结果:
查询CNAME返回如下:
查询MX返回如下:
我们可以看到MX记录查询的结果与上文中注册记录并不一致,而为其CNAME记录值所配置的MX记录,即对CNAME记录做的递归查询得到的结果。
但如果在递归服务器的CNAME记录TTL过期后再来做查询,只是把查询的顺序颠倒,(即先查询MX记录,再查询CNAME记录)则有可能得到期望的正确结果。
总结一下,递归DNS服务器在查询某个常规域名记录(非CNAME记录)时,如果在本地cache中已有该域名有对应的CNAME记录,则会开始用该别名记录来重启查询。上文中dig查询MX记录测试示例即对应于这种情况。
因此,即使某些域名解析系统网页上并未限制用户同时填写CNAME和MX的操作,但只要将CNAME和MX配置到一起,上述问题也一定是存在的,它会导致邮件服务偶尔出现异常。
实际上除了CNAME和MX不能共存外,已经注册了CNAME类型的域名记录是不能再注册除DNSSEC相关类型记录(RRSIG、NSEC等)之外的任何其他类型记录(包括MX、A、NS等记录)。理由同上,这里就不一一做演示了。
解决方案
我们CloudXNS系统在标准记录类型上的互斥关系设定及提醒是完全遵循DNS规范的,而这样的规范设定却对大家在域名配置上造成了一定困扰。
不过,细心的网友发现,CloudXNS具备隐式CNAME扩展记录类型(即LINK记录),它可以隐藏当前这一层的配置,直接接管下一层的结果。因此,CloudXNS也可以获得“将MX和CNAME共同配置”类似的解决方案。
如下图所示,在www下配置CNAME到CDN服务提供商,然后在@下配置MX和LINK记录,将www作为被LINK的域名。
我们用dig验证一下:
查询MX返回如下:
查询CNAME返回如下:
8
当然,这样的配置也同样会存在邮件服务偶尔失效的问题。
因此,CloudXNS系统即将为大家给出一个终极解决方案,可以完美的解决这个问题!届时,您的邮件服务可以永远正常使用,同时也可享受到网络加速的快感,可谓兼得鱼和熊掌。
我在阿里云买了一个域名,然后在优网主机买了一个wordpress博客主机,用来建站。
方式是建立两条CNAME记录,
主机记录分别是@和www。
然后我又想用这个域名,用于腾讯的企业邮箱。
按照说明,需要建立两条MX记录,主机记录都是@。
然后阿里云提示:
MX记录和CNAME记录冲突 。
经查询得知阿里云不支持MX和CNAME的主机记录相同,而DNSPOD支持。
因此解决方法就是换阿里云域名的DNS服务器为DNSPOD的域名服务器。
根据DNS协议的规定,CNAME记录只能单独存在,只能单独添加一条,并且不允许和别的类型的记录共存,否则会出现域名无法解析的情况。如果域名已经存在CNAME的记录,然后再添加一条同主机头但类型不一样(比如A、MX)的记录,就会造成冲突,并出现下面的提示:
记录有冲突。已经存在重复记录或者CNAME冲突
通俗来说,做了CNAME记录后,这条记录将交由目标去处理,DNSPod不再管理这个做CNAME的记录。
比如,www记录做了CNAME到cname.other.com.,那么就是说把www这条记录交给cname.other.com.管理,DNSPod不再管www这条记录,www这条记录是死是活DNSPod也不会再知道。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)