很多提供權威 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.com
是xyz.com
的別名。既然abc.com
是xyz.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.com
,xyz.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記錄只對子域名生效。
域名: