什麼是 DNS CNAME 記錄?

DNS CNAME 記錄可做為共用單一 IP 位址之網域名稱的別名。

學習目標

閱讀本文後,您將能夠:

  • 瞭解 CNAME 記錄在網域查詢環境中的運作方式
  • 瞭解 CNAME 記錄和 A 記錄之間的關係

複製文章連結

什麼是 DNS CNAME 記錄?

"標準名稱 " (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。

報告
用於 DNS 安全性的 GigaOm Radar
報告
閱讀 2023 年第四季 DDoS 威脅情勢報告

CNAME 記錄可以指向另一個 CNAME 記錄嗎?

將 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
所有 Cloudflare 方案中均包含免費 DNS

使用 CNAME 記錄有哪些限制?

MX 和 NS 記錄不能指向 CNAME 記錄,它們必須指向 A 記錄(對於 IPv4)或 AAAA 記錄(對於 IPv6)。MX 記錄是郵件交換記錄,將電子郵件導向郵件伺服器。NS 記錄是「名稱伺服器」記錄,指示哪個 DNS 伺服器對該網域具有權威性。

進一步瞭解 MX 記錄NS 記錄