CNAME記錄

真實名稱記錄（Canonical Name Record），即CNAME記錄，是域名系統（DNS）的一種記錄。CNAME記錄用於將一個域名（同名）映射到另一個域名（真實名稱），域名解析服務器遇到CNAME記錄會以映射到的目標重新開始查詢。 
這對於需要在同一個IP地址上運行多個服務的情況來說非常方便。若要同時運行文件傳輸服務和Web服務，則可以把ftp.example.com和www.example.com都指向DNS記錄example.com，而後者則有一個指向IP地址的A記錄。如此一來，若服務器IP地址改變，則只需修改example.com的A記錄即可。
CNAME記錄必須指向另一個域名，而不能是IP地址。

**細節**
《RFC 1034》詳細定義了CNAME記錄的標準，並在《RFC 2181》的第十節中做了進一步規範。
CNAME記錄在域名系統中的使用有諸多限制。當一個DNS解析服務器在查詢各類記錄時遇到一則CNAME記錄時，它會立即重啟查詢，查詢所映射到域名的對應記錄。（除非是要查詢CNAME記錄本身，在那種情況下會返回所映射到的域名。）CNAME記錄所映射的域名可以是域名服務中的任何域名。在同一服務器上，在遠程服務器上，甚至在屬於不同DNS zone（解析空間）的服務器上，都可以。
假設有下述DNS zone：
NAME                    TYPE   VALUE
--------------------------------------------------
bar.example.com.        CNAME  foo.example.com.
foo.example.com.        A      192.0.2.23
當要查詢bar.example.com的A記錄時，域名解析器會查到對應的CNAME記錄，即foo.example.com，隨即開始查詢該域名的A記錄，查到192.0.2.23則返回結果。

**誤會**
可以使用CNAME記錄將「bar.example.com」指向「foo.example.com」。因此，可能會有人隨意的將bar.example.com稱作是foo.example.com的「CNAME」。然而事實並非如此，bar.example.com的「CNAME」是foo.example.com，因為CNAME的意思是真實名稱，而右側才是真實名稱，才是CNAME。
這則誤會在《RFC 2181》「DNS規範的解釋」一章中有提到。應當說左側標籤是右側真實名稱的一個同名。即下述CNAME記錄：
bar.example.com.        CNAME  foo.example.com.
應當讀作：
bar.example.com的真實名稱是foo.example.com。請求訪問bar.example.com的客戶端會得到foo.example.com返回的結果。

**限制**
 CNAME記錄總是指向另一則域名，而非IP地址。- 有CNAME記錄的域名不能有其他任何記錄（MX記錄、A記錄等，《RFC 1034》第3.6.2節、《RFC 1912》第 2.4節) 唯一的例外是在使用DNSSEC的情況下，這時可以設置相關的DNSSEC相關記錄，比如RRSIG，NSEC等（《RFC 2181》第10.1節）- 為了保證效率，應當避免將CNAME記錄指向其他的CNAME記錄，但並非不可以。因此，可以通過CNAME記錄創造無法被解析的循環，比如：
foo.example.com.  CNAME  bar.example.com.
bar.example.com.  CNAME  foo.example.com.- MX記錄和NS記錄永遠都不應指向由CNAME記錄標記的域名（《RFC 2181》第10.3節）。因此，解析空間不應有下述結構：
example.com.      MX     0   foo.example.com.
foo.example.com.  CNAME  host.example.com.
host.example.com. A      192.0.2.1- 根據（《RFC1912》）第2.4節，根網域（Root Domain）不應該被添加 CNAME 紀錄。但部分 DNS 服務商（例如 DNSPod、NS1）可以忽略該 RFC 標準而針對根網域做出 CNAME 解析，比如：
example.com.  CNAME  foo.example.com.
但這樣做會導致該網域若有用於郵箱服務，則可能造成錯誤，詳見如下方。
而願意遵守 RFC 標準的 DNS 供應商 (例如 Neustar UltraDNS、Cloudflare DNS）則採用了 Apex Alias 或 CNAME flattening 技術，這個技術將使得由 DNS 服務商自行處理 CNAME 解析的過程，並將最終解析的 A 紀錄作為實際解析的結果，從而不與 RFC 標準抵觸，比如：
example.com.  A      192.0.2.1- 用於郵箱服務的域名不應有CNAME記錄。在實踐中，這或許不會出錯，但由於郵件服務的不同，可能會有意料之外的效果。

**DNAME記錄**
DNAME記錄，即代理名稱記錄，由《RFC 6672》定義（原《RFC 2672》已經廢棄）。一條DNAME記錄會將某個域名的整個解析子樹映射到另一域名，而CNAME只映射設定的域名，不映射子域名。如同CNAME一樣，在DNS查詢過程中，會查找所映射到的新域名的地址。域名解析服務器會為每一個被查詢的子域名生成一則CNAME記錄。為某個域名設置DNAME記錄和為該域名的所有子域名設置CNAME記錄的效果是一樣的。
例如下述記錄：
foo.example.com.        DNAME  bar.example.com.
bar.example.com.        A      192.0.2.23
xyzzy.bar.example.com.  A      192.0.2.24
*.bar.example.com.      A      192.0.2.25
查詢foo.example.com的A記錄不會返回任何結果。不同於CNAME記錄，DNAME不會直接影響所設置域名的解析。
如果我們需要查詢xyzzy.foo.example.com，則由於DNAME記錄的映射會返回xyzzy.bar.example.com的A記錄，即192.0.2.24。而如果將DNAME記錄換成是CNAME記錄的話，這樣的請求則會報錯提示無法找到。
由此，查詢foobar.foo.example.com會由於DNAME記錄映射返回192.0.2.25。

**ANAME記錄**
部分DNS平臺支持尚未被標準化的ALIAS或ANAME記錄類型。此類偽記錄由DNS服務器維護，類似於CNAME記錄，但在（某些）客戶端解析時等同於A記錄。ANAME記錄通常會被設置指向另一域名。但在被客戶端請求時候，則會直接返回對應的IP地址。ANAME記錄的標準化過程正在進行中，但已經有許多不同的實現，所以由於平臺的不同，效果也多種多樣。有些存在於域名解析區的頂端，有些則為了提供郵件服務而存在。ANAME記錄相對CNAME記錄的一大優勢是速度。服務端解析A記錄的速度通常比客戶端快，同時可以緩存對應的IP地址以備查詢。IETF正在討論和考慮ANAME記錄的標準化。

**參見**
 DNS記錄類型列表- IANA- ICANN

**參考資料**

**外部鏈接**
  RFC 1912 is wrongMeng Weng Wong's analysis of CNAME restrictions (from date=20120531234306 ).- RFC 2219 – Use of DNS Aliases for Network Services （為網絡服務使用DNS別名）