为何不建议给域名裸域添加CNAME记录

不少提供权威 DNS 解析的服务商都不提供域名裸域又叫根域(root record)的 CNAME 解析,有些即便提供了也会在你添加裸域的 CNAME 记录时给你一个警告提醒。html

万网的权威 DNS 解析服务,当给域名的裸域添加 CNAME 时就会报错,说是不支持给裸域添加 CNAME 记录;国内比较知名的权威 DNS 服务商 DNSPod 也会在你给域名的裸域添加 CNAME 解析时提醒你:若是发现邮件收发异常请删除这条域名的 CNAME 解析。缓存

为什么这些权威 DNS 服务提供商都不建议给裸域添加 CNAME 记录呢?这个要从 DNS 协议这块来讲起了。DNS 协议是在 1987 年 11 月起草的,当时压根没有人知道万维网(World Wide Web),由于万维网的概念是在两年后的 1989 年被万维网之父 Tim Berners-Lee 提出的。当时也更不会有各类提供绑定域名服务的互联网建站公司了。所以 DNS 协议规定不能给裸域添加 CNAME 记录。服务器

CNAME(Canonical name),即一个域名的别名,若是你的域名 abc.com的 CNAME 记录是xzy.com,那么就能够说abc.comxyz.com的别名。既然abc.comxyz.com的别名了,那么查询abc.com的其余记录好比 MX(Mail eXchange) 记录,就直接用xyz.com的 MX 记录就好了。对别名的理解是这样的,而且 DNS 协议也明确规定了,更详细的内容能够查看 RFC 1034 和 RFC 1035负载均衡

举个例子来讲:dom

abc.com CNAME xyz.com abc.com MX xxx.com xyz.com MX zzz.com

以上的意思很明显,abc.com的 CNAME 记录是xyz.com,而abc.com的 MX 记录是xxx.comxyz.com的 MX 记录是 zzz.comide

当你访问abc.com这个地址的网页服务时,你拿到的是xyz.com,而后被本机缓存起来了。接着你再给abc.com这个域名发送邮件时,根据 DNS 协议规定,你的公共 DNS 服务器(也叫缓存 DNS 服务器)会先去本机 DNS 缓存里查询abc.com的 CNAME 记录是否存在,若是存在就再去查询这个 CNAME 记录的 MX 记录,而后向这个 MX 服务器发送邮件。而在这个例子中会致使本该发送给xxx.com MX 服务器的邮件结果发送给了zzz.com MX 服务器。spa

固然,反过来,即先发邮件再打开网页就不会有问题。code

因此,不止不建议给裸域添加 CNAME 记录,若是其余子域提供邮件服务的话也是不能添加 CNAME 记录的。好比你提供邮件服务的子域是sub.abc.com即邮箱地址相似xxx@sub.abc.com,那么你不是能给sub.abc.com添加 CNAME 记录的。之因此不少服务商不支持给裸域添加 CNAME 是由于裸域使用邮件服务的几率比较大。htm

另外,也有些比较有实力的服务商会提供诸如将裸 CNAME 记录转换成 A 记录的功能。就像 CloudFlare.com 提供的 CNAME Flatten 服务。原理就是你显式的添加 CNAME 记录,而 CloudFlare 在背后将 CNAME 记录递归解析并转换成 A 记录。因为 CloudFlare 的数据中心比较多,因此返回给你的递归解析后的记录也是离你最近的记录,根本不用担忧访问速度的问题。blog

 

----------------------------------- 补充信息 --------------------------------------------

 

1. A记录(IP指向)

又称IP指向,用户能够在此设置子域名并指向到本身的目标主机地址上,从而实现经过域名找到服务器找到相应网页的功能。

说明:指向的目标主机地址类型只能使用IP地址。

2. CNAME(别名指向)

一般称别名指向。您能够为一个主机设置别名。至关于用子域名来代替ip地址,优势是若是ip地址变化,只须要改动子域名的解析,而不须要逐一改变ip地址解析。

说明:

(1)CNAME的目标主机地址只能使用主机名,不能使用IP地址;

(2)主机名前不能有任何其余前缀,如:http://等是不被容许的;

(3)A记录优先于CNAME记录。即若是一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效。

(4)CNAME最典型的应用CDN,通常都是不少域名CNAME到CDN服务商单个域名下的子域名。

 

3. MX记录

邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则须要在管理界面中添加该域名的MX记录来处理全部以@mydomain.com结尾的邮件。

说明:

(1)MX记录可使用主机名或IP地址;

(2)MX记录能够经过设置优先级实现主辅服务器设置,"优先级"中的数字越小表示级别越高。也可使用相同优先级达到负载均衡的目的;

(3)若是在"主机名"中填入子域名则此MX记录只对该子域名生效。

4. NS记录(Name Server)

是域名服务器记录。用来代表由哪台服务器对该域名进行解析。您注册域名时,总有默认的DNS服务器,每一个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址通常以如下的形式出现:

ns1.domain.com

ns2.domain.com

说明:

(1)"优先级"中的数字越小表示级别越高;

(2)"IP地址/主机名"中既能够填写IP地址,也能够填写像ns.mydomain.com这样的主机地址,但必须保证该主机地址有效。如,将 news.mydomain.com的NS记录指向到ns.mydomain.com,在设置NS记录的同时还须要设置ns.mydomain.com的 指向,不然NS记录将没法正常解析;

(3)NS记录优先于A记录。即,若是一个主机地址同时存在NS记录和A记录,则A记录不生效。这里的NS记录只对子域名生效。

 

域名:

1. A记录、CNAME、MX记录、NS记录

2. 为何不建议给域名裸域添加CNAME记录