CNAME 记录 (Canonical Name Record) 是在 DNS 中为域名定义别名的记录。把某个域名关联到另一个域名之后,就可以不直接指定 IP 地址,而把域名的解析委托出去。
CNAME 最常见的用途,是把自定义域名接入短链接服务。例如要把自有域名 `link.example.com` 指向短链接服务的服务器 (例如 `custom.bitly.com`) 时,就在 DNS 中设置「link.example.com CNAME custom.bitly.com」。这样一来,对 `link.example.com` 的访问就会自动转送到短链接服务的服务器。
CNAME 存在重要的限制。Zone Apex (裸域名,例如 `example.com`) 上无法设置 CNAME。因为按照 RFC 1034 的规范,CNAME 不能与其他记录类型共存,而 Zone Apex 上必然存在 SOA 记录与 NS 记录。为了规避这一限制,各家 DNS 提供商都提供了自有扩展,例如 AWS Route 53 的 ALIAS 记录和 Cloudflare 的 CNAME Flattening。
CNAME 与 A 记录的区分使用在实务上也很重要。A 记录直接指定 IP 地址,因此服务器的 IP 一旦改变就需要手动更新。CNAME 把名称解析委托出去,能够自动适配服务方的 IP 变更。像短链接服务这样 IP 地址有可能变化的情况,采用 CNAME 的运维负担更低。