CNAME 记录
规范名称(CNAME)记录是一种 DNS 资源记录类型,它将一个域名(别名)映射到另一个域名(规范名称)。当 DNS 解析器查询具有 CNAME 记录的域名时,它会跟随别名指向目标域名,然后查找最终的 IP 地址。
How it works
CNAME 记录从别名域名指向"规范"域名。与直接指向 IP 地址的 A 记录不同,CNAME 创建一个重定向到另一个域名的别名。这允许多个主机名通过将它们全部指向单个规范名称来解析到相同的 IP 地址。
当 DNS 解析器遇到 CNAME 记录时,解析过程遵循以下步骤:
1. 对别名域名发起 DNS 查询(例如,
www.example.com)
2. 解析器找到指向规范名称的 CNAME 记录(例如,example.com)
3. 解析器重新开始对规范域名的查找
4. 它找到规范域名的 A 或 AAAA 记录
5. 最后,它将 IP 地址返回给客户端
简而言之:CNAME → 规范名称 → A(IPv4)或 AAAA(IPv6)记录 → IP 地址。如果主机的 IP 地址发生变化,只需要更新根域名的 DNS A 记录。所有 CNAME 记录,包括别名或子域名的记录,将在根域名的 A 记录更新时自动变更。Key Points
- CNAME 记录必须始终指向另一个域名,永远不能直接指向 IP 地址
- 如果域名有 CNAME 记录,它在同一级别上不能有任何其他记录类型(A、MX、TXT、NS、SOA)
- CNAME 记录不能用于根域名(@)- 只能用于子域名
- 每个 CNAME 都会增加一个额外的 DNS 查找步骤,这可能会略微影响解析时间
- 链式 CNAME(CNAME 指向 CNAME)在技术上是可能的,但由于性能影响不建议使用
Common Use Cases
- 子域名别名: 将
www.example.com和blog.example.com指向example.com,后者拥有实际的 A 记录 - 第三方服务集成: 将您的子域名指向第三方服务,例如
shop.example.com→shops.shopify.com - CDN 配置: 将您的域名指向 CDN 端点(例如,
cdn.example.com→d111111abcdef8.cloudfront.net) - 集中管理: 通过仅更改一个规范 A 记录来更新多个子域名,而不是单独更新每个子域名
code 配置示例
| Type | Host / Name | Value / Points to | TTL |
|---|---|---|---|
| A | @ | 192.0.2.1 | 3600 |
| CNAME | www | example.com | 3600 |
| CNAME | blog | example.com | 3600 |
| CNAME | shop | shops.myshopify.com | 3600 |
* CNAME 记录创建指向其他域名的别名。目标域名必须有 A 或 AAAA 记录。
Frequently Asked Questions
A 记录和 CNAME 记录有什么区别?expand_more
A 记录将主机名直接指向 IP 地址,而 CNAME 记录将主机名指向另一个主机名。A 记录提供直接的 IP 映射,而 CNAME 创建别名。对根域名使用 A 记录,以及当您需要直接指向 IP 时使用 A 记录。当您希望子域名跟随另一个域名的 IP 地址时,对子域名使用 CNAME。
我可以为根域名使用 CNAME 吗?expand_more
不可以,根据 RFC 1912,CNAME 记录不能用于根(顶点)域名。根域名必须使用 A 或 AAAA 记录。这是因为 CNAME 记录与必须存在于根级别的其他基本记录(如 SOA 和 NS)不兼容。您只能对子域名使用 CNAME。
CNAME 可以指向另一个 CNAME 吗?expand_more
虽然在技术上是可能的,但强烈不建议链式 CNAME(CNAME 指向 CNAME)。链中的每一跳都会增加一次额外的 DNS 查找,增加解析时间并可能影响性能。大多数 DNS 提供商和最佳实践建议避免 CNAME 链,并直接指向规范域名。
我可以在 CNAME 旁边设置其他记录吗?expand_more
不可以,如果主机名有 CNAME 记录,它在同一级别上不能有任何其他记录类型(A、AAAA、MX、TXT 等)。这是一个基本的 DNS 规则(RFC 1034)。如果您需要为同一主机名设置多个记录类型,请使用 A 或 AAAA 记录而不是 CNAME。
我应该在什么时候使用 CNAME 而不是 A 记录?expand_more
在以下情况下使用 CNAME:
- 将子域名指向另一个域名(特别是第三方服务)
- 您希望目标域名的 IP 更改自动应用到别名
- 管理多个应该全部指向相同目标的子域名
在以下情况下使用 A 记录:
- 配置根域名
- 您需要尽可能快的 DNS 解析
- 您需要为同一主机名设置其他记录类型(MX、TXT)