什麼是 DNS CNAME 記錄?

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

學習目標

閱讀本文後,您將能夠:

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

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是 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。

報告
2025 年安全趨勢觀察報告

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 記錄有哪些限制?

無重複名稱

任何其他 DNS 記錄都不能與任何給定的 CNAME 記錄同名。實際上,這意味著不能使用網域的別名標記其他類型的 DNS 記錄(如 MXTXT、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 記錄

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

何時為非 CNAME 查詢傳回 CNAME 記錄?

如上所述,根據 DNS 規範,不允許網域在已經有 CNAME 記錄的名稱上擁有其他 DNS 記錄。

因此,查詢使用別名而不是網域真實名稱的其他類型的記錄(例如 TXT 記錄)將傳回 CNAME 記錄,而不是要求的記錄。然後,要求者需要查詢 CNAME 指向的網域才能獲得所需的記錄。

如果 Alice 想要檢視 blog.example.com 的 TXT 記錄並傳送查詢,她將獲得 CNAME 記錄而不是 TXT 記錄。然後,她需要向 CNAME 記錄的目標傳送 DNS 查詢,要求 TXT 記錄,如果目標有 TXT 記錄,她就會得到回應。其他類型的 DNS 記錄查詢也是如此。

瞭解有關 TXT 記錄的更多資訊。