DNS CNAME 記錄可做為共用單一 IP 位址之網域名稱的別名。
閱讀本文後,您將能夠:
複製文章連結
"標準名稱 " (CNAME) 記錄會從別名網域指向標準網域。" " 當網域或子網域是另 一個 網域 的別名時,會使用 CNAME 記錄代替 A 記錄。 所有 CNAME 記錄都必須指向一個域,絕不能指向 IP 地址。 想像一下,一個尋寶遊戲,每個線索都指向另一個線索,最後的線索指向寶藏。 帶有 CNAME 記錄的域名就像一條線索,可以將您指向另一個線索(另一個具有 CNAME 記錄的域名)或寶藏(具有 A 記錄的域名)。
例如,假設 blog.example.com 的 CNAME 記錄的值為「example.com」(沒有「blog」)。這意味著當 DNS 伺服器點擊 blog.example.com 的 DNS 記錄時,它實際上會觸發另一個對 example.com 的 DNS 查閱,並透過其 A 記錄傳回 example.com 的 IP 位址。在這種情況下,我們會說 example.com 是 blog.example.com 的規範名稱(或真實名稱)。
通常,當網站具有子網域(例如 blog.example.com 或 shop.example.com)時,這些子網域將具有指向根網域 (example.com) 的 CNAME 記錄。這樣,如果主機的 IP 發生變更,則僅需要更新根網域的 DNS A 記錄,這樣所有 CNAME 記錄都會跟隨對根所做的任何變更。
一個常見的誤解是 CNAME 記錄必須始終解析為其指向的網域所在的網站,但事實並非如此。CNAME 記錄僅將用戶端指向與根網域相同的 IP 位址。用戶端存取該 IP 位址後,Web 伺服器仍將相應地處理 URL。例如,blog.example.com 可能有一個 CNAME 指向 example.com,從而將用戶端導向到 example.com 的 IP 位址。但是,當用戶端實際連接到該 IP 位址時,Web 伺服器將查看 URL,發現它是 blog.example.com,並且提供部落格頁面而不是首頁。
CNAME 記錄的範例:
blog.example.com | 記錄類型: | 值: | TTL |
---|---|---|---|
@ | CNAME | 是 example.com 的別名 | 32600 |
在本範例中,您可以發現 blog.example.com 指向 example.com。假設它基於我們的範例 A 記錄,我們便知道它最終會解析到 IP 位址 192.0.2.1。
將 CNAME 記錄指向另一個 CNAME 記錄十分低效,因為它需要在載入網域之前進行多次 DNS 查閱——這會降低使用者體驗,不過這個過程是可以實現的。例如,blog.example.com 可以有一個 CNAME 記錄指向 www.example.com 的 CNAME 記錄,然後後者指向 example.com 的 A 記錄。
blog.example.com 的 CNAME:
blog.example.com | 記錄類型: | 值: | TTL |
---|---|---|---|
@ | CNAME | 是 www.example.com 的別名 | 32600 |
其指向 www.example.com 的 CNAME:
www.example.com | 記錄類型: | 值: | TTL |
---|---|---|---|
@ | CNAME | 是 example.com 的別名 | 32600 |
這種設定在 DNS 查閱過程中增加了一個額外的步驟,應當盡可能避免。blog.example.com 和 www.example.com 的 CNAME 記錄應當直接指向 example.com。
任何其他 DNS 記錄都不能與任何給定的 CNAME 記錄同名。實際上,這意味著不能使用網域的別名標記其他類型的 DNS 記錄(如 MX、TXT、A 或 SOA),也不能有任何其他 CNAME 記錄具有相同的名稱。
如果「blog.example.com」上有一個指向「example.com」的 CNAME,則「blog.example.com」上不能有任何其他類型的記錄——它們都必須位於「example.com」下。
假設 Sam 以筆名「Mark」撰寫文章。儘管 Mark 和 Sam 是同一個人,但他的法律文件(如出生證明和護照)仍將使用他的真實姓名 Sam。DNS 記錄也是如此:別名網域只能指向實際網域,而「法律文件」(其他 DNS 記錄)必須位於該真實網域下。
有一個例外,即在 CNAME 展平的情況下,此時 CNAME 的行為類似於 A/AAAA 記錄。事實上,所有代理 CNAME 記錄的行為都是如此。但是,其他記錄仍不允許與展平的 CNAME 記錄同名。詳細瞭解 CNAME 展平。
MX 和 NS 記錄不能指向 CNAME 記錄,它們必須指向 A 記錄(對於 IPv4)或 AAAA 記錄(對於 IPv6)。MX 記錄是郵件交換記錄,將電子郵件導向郵件伺服器。NS 記錄是「名稱伺服器」記錄,指示哪個 DNS 伺服器對該網域具有權威性。
如上所述,根據 DNS 規範,不允許網域在已經有 CNAME 記錄的名稱上擁有其他 DNS 記錄。
因此,查詢使用別名而不是網域真實名稱的其他類型的記錄(例如 TXT 記錄)將傳回 CNAME 記錄,而不是要求的記錄。然後,要求者需要查詢 CNAME 指向的網域才能獲得所需的記錄。
如果 Alice 想要檢視 blog.example.com 的 TXT 記錄並傳送查詢,她將獲得 CNAME 記錄而不是 TXT 記錄。然後,她需要向 CNAME 記錄的目標傳送 DNS 查詢,要求 TXT 記錄,如果目標有 TXT 記錄,她就會得到回應。其他類型的 DNS 記錄查詢也是如此。
瞭解有關 TXT 記錄的更多資訊。