背景当前很多网站,不管是大的网站,还是个人站长,都有使用到CDN,大部分加速服务提供的都是觊皱筠桡CNAME模式;与此同时,MX企业邮件记录也必恍芊柩勖须配置到同一个节点下。由于很多系统在域名配置管理时并没有做记录的互斥限制,当客户同时配置cname和mx时,会出现mx记录解析异常的问题。原因分析根据RFC 1034第3.6.2章If a CNAME RR is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different. This rule also insures that a cached CNAME can be used without checking with an authoritative server for other RR types.不想看英文?没关系,我大概解释一下:如果CNAME资源记录出现在一个域名节点,为了确保不会出现不同的解析结果,这个域名节点将不再接受其他记录值。本文将告诉你CNAME和MX共存的方法。
实例分析cname和mx共存会出现异常
1、配置cname和mx记录:
2、dig一下,查看cname记录
3、dig一下,查看MX记录
4、我们可以看到MX记录查询的结果其CNAME记录值所配置的值,当我们在递归服务器的CNAME记录TTL过期后再来做查询,则有可能得到期望的正确结果。因此,即使某些域名解析系统网页上并未限制用户同时填写CNAME和MX的操作,但只要将CNAME和MX配置到一起,会导致邮件服务偶尔出现异常。实际上除了CNAME和MX不能共存外,已经注册了CNAME类型的域名记录是不能再注册除DNSSEC相关类型记录(RRSIG、NSEC等)之外的任何其他类型记录(包括MX、TXT、A、NS等记录)。
解决方案
1、在CloudDNS上添加记录:解决原理:CloudDNS提供了此类问题的解决方案,议陬涸渎即在遵循dns协议的基滗盅拿落础上,新增了一层代理的服务器。外部公网DNS向DNS代理请求一个域名时,DNS代理先查找本地的缓存应答,在没有缓存应答时,向源授权器转发请求,得到响应后再回复请求,同时缓存得到的响应信息;若本地已有缓存应答,则直接对外回复请求。在使用CDN加速时,大多数都是对域名解析记录配置CNAME,别名到另一个平台的域名,DNS代理可以直接代替公网DNS做CNAME后的解析,将最终结果返回给公网,减少了CNAME解析,不但提高了解析速度,也实现cname记录和mx记录的共存(具体原理如下图所示)。
2、上述方案重新配置后,分别再对域名和mx记录做dig查询,得到结果如下,从结果上看,已经可以很好解决MX与CNAME共存的问题。1)cname结果,隐藏了cname,直接给a记录2)MX记录也隐藏了cname,直接给MX 记录
结语
1、总体而言,CloudDNS此方案优势之处有以下两点:1、解决cname记录和其它记录(包括MX、TXT、A、NS等记录)共存的问题;2、减少cname,降低解析时间。通过DNS代理的方案,可以很好实现CNAME记录与其他记录共存问题,也大大提高了解析速度。当然,这个仅仅是CloudDNS致力解决用户各种关于DNS使用场景问题的其中一个,您若需要提升解析速度,保证解析安全以及实现CNAME等MX记录共存等,相信CloudDNS提供的方案会给你惊喜。