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

万网的权威 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

举个例子来说:

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.com

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

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

所以,不止不建议给裸域添加 CNAME 记录,如果其他子域提供邮件服务的话也是不能添加 CNAME 记录的。比如你提供邮件服务的子域是sub.abc.com即邮箱地址类似xxx@sub.abc.com,那么你不是能给sub.abc.com添加 CNAME 记录的。之所以很多服务商不支持给裸域添加 CNAME 是因为裸域使用邮件服务的概率比较大。

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

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

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记录

为什么不建议给域名裸域添加CNAME记录的更多相关文章

  1. 体验godaddy域名转入,添加A记录,及使用dnspod的NS

    有两个域名一直放在朋友那,这个朋友是个神人,经常换电话号码,联系非常不方便. 近日将域名转入到godaddy下面了,第一次做域名转移,很是好奇. 之前域名在21.cn注册的,朋友帮我申请域名转出后,2 ...

  2. 域名相关:DNS A记录 NS记录 MX记录 CNAME记录

    1. DNSDNS:Domain Name System 域名管理系统 域名是由圆点分开一串单词或缩写组成的,每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统.D ...

  3. 关于查看域名A记录,MX记录,CNAME记录-NSLOOKUP用法介绍

    关于查看域名A记录,MX记录,CNAME记录-NSLOOKUP用法介绍 用ping查看域名的IP地址,这样只能查到域名的A记录,要查询域名的MX记录.CNAME记录或NS记录,可用nslookup命令 ...

  4. nginx配置允许指定域名下所有二级域名跨域请求

    核心原理是根据请求域名匹配是否是某域名的二级域名判断是否添加允许跨越头. #畅游www server { listen 8015; server_name test-tl.changyou.com; ...

  5. Java Web中实现设置多个域名跨域访问

    添加以下设置可允许所有域名跨域访问: response.setHeader("Access-Control-Allow-Origin","*"); 但在实际应用 ...

  6. 在ExpressJS中设置二级域名跨域共享Cookie

    问题:我使用expressjs和mongostore来管理session.下面是expressjs中的设置. app.configure(function(){ app.use(express.ses ...

  7. Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程

    Let'sEncrypt 免费通配符/泛域名SSL证书添加使用教程 通配符证书一般还是比较贵的一般最便宜的通配符证书5.60美元一年,只不过Let'sEncrypt的有效期是3个月,对于一般用户来说基 ...

  8. flask同源策略解决办法及flask-cors只允许特定域名跨域

    falsk 同源策略解决办法: 使用 flask-cors 包 并且 在代码里 加响应的一行代码解决. from flask import Flask, session from flask_cors ...

  9. 经实测解决Access-Control-Allow-Origin多域名跨域问题

    网上流传2种方法解决多域名跨域问题:1.Access-Control-Allow-Origin:[域名一],[域名二]: 2.用$_SERVER("HTTP_ORIGIN")获取来 ...

随机推荐

  1. Gen类的字符串操作

    public void t(String d){ final String str = "b"; String s = "a"+"c"+st ...

  2. 代码高亮插件——wangHightLighter.js——demo演示

    wangHighLighter.js demo 语言:   主题: 转换   说明: wangHightLighter.js是一个可以将代码高亮显示的javascript小插件,支持常用的20多语言. ...

  3. js便签笔记(10) - 分享:json.js源码解读笔记

    1. 如何理解“json” 首先应该意识到,json是一种数据转换格式,既然是个“格式”,就是个抽象的东西.它不是js对象,也不是字符串,它只是一种格式,一种规定而已. 这个格式规定了如何将js对象转 ...

  4. Oracle10g 64位 在Windows 2008 Server R2 中的安装 解决方案

    背景: 操作系统Windows 2008 Server R2 要安装Oracle10g 64位版本 安装时出现如下错误: 检查操作系统版本:必须是5.0,5.1,5.2 or 6.0.实际为6.1 未 ...

  5. python学习: 如何循序渐进学习Python语言

    大家都知道Python语言是一种新兴的编程语言.1989年,Python就由Guido van Rossum发明.Python一直发展态势很好. 原因有几点:1.跨平台性好.Linux.Windows ...

  6. java设计模式-菜鸟网络

    http://www.runoob.com/design-pattern/singleton-pattern.html

  7. Java中数据类型转换大全(个人总结)

    一.字符串转换为其他类型 1.将字符串转化为int型 (1)方法一 int i = Integer.parseInt(String str); (2)方法二 int i = Integer.value ...

  8. Android-View的绘制源码学习总结

    ##前言 算是第一篇正式的github博文,回顾了一下之前看过的view源码解析,做一个对目前为止View学习小的总结. 我觉得对于源码的解析和学习,把所有流程记下来意义并不是很大,最关键的是: 1. ...

  9. 桥接和nat连接

    桥接网络(Bridged Networking) 桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,物理网卡和虚拟网卡就相当于处于同一个网 ...

  10. Windows Server 2008R2常见的500错误

    每次公司服务器装系统后再去部署服务,都会碰到这个问题,这里记录一下问题的解决方法 遇到“500 – 内部服务器错误. 您查找的资源存在问题,因而无法显示.”的问题. 解决办法: 1.解决方法:打开II ...