CNAME记录(规范名称)

DNS记录类型
创建指向另一个域名的别名的DNS记录,通常用于子域和CDN配置。
← 返回词汇表

什么是CNAME记录?

CNAME(规范名称)记录是创建从一个域名到另一个域名的别名的DNS记录类型。与直接指向IP地址的A记录不同,CNAME指向另一个域名,然后被解析为IP地址。

CNAME记录的工作原理

当你设置CNAME时:

www.example.com.    IN    CNAME    example.com.

解析过程:

1. 用户请求www.example.com

2. DNS找到指向example.com的CNAME

3. DNS然后解析example.com的A记录

4. 返回最终IP地址

这种链式解析意味着CNAME目标最终必须解析为A或AAAA记录。

常见CNAME使用案例

WWW子域

将www指向你的根域:

www    IN    CNAME    example.com.

CDN集成

指向CDN端点:

cdn.example.com    IN    CNAME    d111111abcdef8.cloudfront.net.

平台托管

指向托管提供商:

blog.example.com    IN    CNAME    yoursite.wordpress.com.

shop.example.com IN CNAME shops.myshopify.com.

SaaS应用

连接子域到SaaS平台:

docs.example.com    IN    CNAME    example.gitbook.io.

status.example.com IN CNAME stats.uptimerobot.com.

CNAME与A记录

情景使用CNAME使用A记录
根域(@)❌不允许✅必需
子域到静态IP两者都可以✅直接
子域到提供商✅首选❌IP可能改变
CDN配置✅典型变化
负载平衡❌不能有多个✅多个IP

为什么根域不能使用CNAME

DNS规范(RFC 1034)禁止CNAME记录与相同名称的其他记录类型共存。由于根域需要SOA和NS记录,它们不能有CNAME记录。

根域别名解决方案:

CNAME链

CNAME可以指向其他CNAME(链):

blog.example.com    → myblog.host.com

myblog.host.com → lb-1234.hosting.com

lb-1234.hosting.com → 203.0.113.50(A记录)

虽然有效,但链增加延迟。大多数DNS提供商限制链长度以防止无限循环。

CNAME记录配置

基本语法

subdomain    IN    CNAME    target.domain.com.
重要:目标域应包括尾点(.)以表示它是完全合格的。没有它,某些DNS服务器会附加源域。

TTL考虑

CNAME TTL影响更改传播速度有多快:

www    300    IN    CNAME    example.com.

较低的TTL(300秒)允许更快的更新;较高的TTL减少DNS查询。

检查CNAME记录

使用dig
dig www.example.com CNAME

; 答案部分:

www.example.com. 300 IN CNAME example.com.

完整解析跟踪
dig +trace www.example.com

常见CNAME问题

根域的CNAME

example.com    IN    CNAME    other.com.    ; 无效

这会中断电子邮件(MX记录)和其他服务。

CNAME与其他记录

blog.example.com    IN    CNAME    host.com.

blog.example.com IN MX mail.host.com. ; 无效

带有CNAME的名称不能有其他记录类型。

缺失目标记录

如果CNAME目标不解析,你的子域也不会工作。在配置CNAME前验证目标有效。

最佳实践

1. 对第三方服务使用CNAME:让提供商管理IP更改

2. 避免深层链:每一跳增加延迟

3. 不要在根使用CNAME:使用A记录或ALIAS

4. 包括尾点:确保完全合格的目标名称

5. 监控CNAME目标:外部更改可能影响你的网站

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。