三种方法解决域名解析的主机记录冲突

申请域名用作网站访问添加了 CNAME 主机记录以后,又想添加邮箱的 MX 的主机记录,或者想添加 CDN 的 CNAME 记录,这时候经常会遇到主机记录冲突的问题导致添加失败。接下来我们详细分析一下。

原因分析

根据国际上互联网标准 RFC 1034 章节3.6.2中指出:
If aCNAME RR is present at a node, no other data should be present; this ensuresthat the data for a canonical name and its aliases cannot be different.

大意就是说如果CNAME资源记录出现在一个域名节点,为了确保不会出现不同的解析结果,这个域名节点将不再接受其他记录值。

所以一些记录的冲突会导致主机记录值无法正常添加,究竟哪些不能冲突,可以查看阿里的这篇文章

知道了原因,我们就可以尝试来解决问题了,经过试验发现,解决域名的解析记录冲突有三种方法,分别是:

  • 删除其中的一条解析记录
  • 使用跳转的方式进行解析
  • 使用二级域名进行解析

删除其中的一条解析记录

既然发生冲突了,那么最简单的方式就是二选一,保留一条,删除一条,这样就可以恢复正常。

如果实在不愿意删除,那么可以尝试把其中一条 CNAME 的解析记录更换为 A 记录,指定到一个 IP 地址上。这样会有一个隐患发生,那就是当 IP 地址更换了以后,你的解析会中断,需要手动变更 A 记录才能恢复。不是很推荐这种方法。

使用隐式CNAME进行解析

在不同的域名服务商可能有不同的叫法,比如阿里云叫 显示/隐式 URL,CloudXNS的叫做 LINK 记录。思路就是给其中的一条解析起一个名字,然后将这条解析通过 LINK 或者 URL 的方式去解析。大致操作方法如下:

记录类型 主机记录 记录值
MX @ qiye.aliyun.com
LINK @ www.test.com
CNAME www xxx.github.io

使用二级域名进行解析

在分析的时候也说到了,一个域名节点只能有一个 CNAME 的解析记录,那么就可以启用二级域名,这样就不是同一个域名节点了。

而且可以不同的二级域名可以对应不同的功能服务,比如用 mail.xxx.com 来解析邮箱,用 blog.xxx.com 来映射博客访问,做好二级域名的规划,完全不用担心解析记录的冲突。

大致操作方法如下:

记录类型 主机记录 记录值
MX mail mx1.qiye.aliyun.com
CNAME smtp.mail smtp.qiye.aliyun.com
CNAME imap.mail imap.qiye.aliyun.com
CNAME pop3.mail pop.qiye.aliyun.com
CNAME mail.mail qiye.aliyun.com
CNAME blog xxx.github.io

这样就把 blog.xxx.com 解析到了 github pages,把 mail.xxx.com 解析到了邮箱。
阿里云的邮箱详细解析见这里

个人比较推荐第三种方法,规划好二级域名,用二级域名来做各种功能的解析,这样可以发挥一个域名最大的作用。

也来谈谈关于 CNAME 和 MX 冲突的一些事 这篇博客也对冲突进行了一些分析,也可以参考一下

参考链接:

======================
Erdong, A Linux user !

Er Dong wechat
扫描二维码关注微信公众号
坚持原创技术分享,您的支持将鼓励我继续创作!