DNAME 域级别别名(Delegation Name)是一种 DNS 记录类型,其语义是把查询名称对应的整棵子域树重定向到另一个域名,而非像 CNAME 那样只作用于单个名称。当一个域配置了 DNAME 记录后,该域下所有子域名的解析请求都会被自动映射到目标域对应的名称上,是 DNS 中用于”域级别别名”的机制。
定义
DNAME 记录由 IETF 通过 RFC 6672 定义,它描述了一种”整棵子树重定向”的语义。假设在 old-domain.com 上配置一条指向 new-domain.com 的 DNAME 记录,那么对 www.old-domain.com、api.old-domain.com 乃至任意深层子域名的查询,都会被重写为对 www.new-domain.com、api.new-domain.com 的查询。这种重定向发生在解析器层面,名称的标签(label)前缀会原样保留并拼接在目标域上。
与 CNAME 只适用于单个主机名不同,DNAME 在域名树(DNS 名称的层级命名结构)上工作,作用于”节点”而非”叶”。这使它特别适合需要把一整组服务从一个域名整体迁移到另一个域名、又不希望逐条维护 CNAME 的场景。
工作原理
DNAME 的重定向遵循名称替接(name substitution)规则:当解析器查询一个名称 X.Y,而 Y 处存在 DNAME 记录指向 Z 时,解析器会把 Y 部分替换为 Z,实际查询 X.Z。这一过程对查询中的每个子域都生效,因此具有递归覆盖整棵子树的能力。
以下是一个典型的 DNAME 配置片段(BIND 语法),在一行内声明替接:
old-domain.com. IN DNAME new-domain.com.
配置该记录后,来自解析器的请求处理分为两类:
- 查询 `old-domain.com.` 本身:DNAME 不直接替换终端节点,解析器还需要为该顶点返回对应的 CNAME 或 A 记录,因此实践中常把 DNAME 与目标域自身的记录配合使用。
- 查询任意子域,例如 `www.old-domain.com.`:解析器把 DNAME 应用到该名称上,得到 `www.new-domain.com.`,再继续解析这个新名称的地址记录。这一替接过程对深层子域同样成立。

与 DNAME 相关的另一个重要机制是合成 CNAME(synthesized CNAME):当 DNAME 替接发生时,权威服务器在响应中同时返回一条由解析器”合成”的 CNAME 记录,用于告诉解析器替接后的名称,从而保持解析链路的完整性。这也是 DNAME 在兼容性上优于纯手工逐层映射的原因。
与 CNAME 的区别
CNAME(Canonical Name,规范名称记录)与 DNAME 常被放在一起比较,但作用范围不同。
| 维度 | CNAME | DNAME |
|---|---|---|
| 作用对象 | 单个主机名(叶节点) | 整个子域树(节点及其所有后代) |
| 配置量 | 每个需要别名的主机名各一条 | 一条记录覆盖该域下全部子域 |
| 典型用途 | 单个域名指向 CDN(内容分发网络)边缘节点 | 整棵子域树迁移或批量映射 |
| 解析器支持 | 广泛,几乎所有递归解析器都支持 | 依赖递归解析器实现合成 CNAME 能力 |
对于只需把一个子域名指向目标的常见场景,CNAME 更简单直接,兼容性也更好;当需要把 api.example.com、static.example.com、blog.example.com 等一批子域整体重定向到另一套基础结构时,DNAME 一条记录即可完成,避免了大量重复配置。与之配合的常见思路,还可以参考 CNAME 在根域的扁平化处理——根域(APEX 记录)本身不适用 CNAME,但扁平化机制与 DNAME 的替接思路可以相互补充。
应用场景
DNAME 在以下几类场景中有实际价值。
- 域名整体迁移:品牌或组织更名后,需要把旧域名的全部子服务无缝指向新域名,DNAME 可在不逐个改动子记录的情况下完成映射。
- CDN 与云厂商批量接入:需要把一整个域及其子域都指向 CDN 或云平台的入口时,用 DNAME 代替数十条 CNAME,简化运维配置。
- 多租户或多站点复用:在托管结构下,把一个客户域整体映射到统一的服务域,DNAME 能明显减少配置文件体积。

在选用 DNAME 时,还需要了解它与其他 DNS 机制的关系。例如,子域委托本身通过 NS(Name Server,名称服务器)记录实现,DNAME 与 NS 可以共存但语义不同;而 DNS 安全扩展 DNSSEC(域名系统安全扩展,对 DNS 应答做数字签名验证)在 DNAME 上需要专门的签名处理,若使用 DNSSEC 应在配置后验证签名链,否则解析可能失败。DNS 记录的可访问与缓存特性,可参考 DNS 负缓存机制,它解释了查询失败结果如何在解析器侧被短期缓存,DNAME 相关的查询失败同样受其影响。
常见误区
第一种误区是认为 DNAME 能直接解析出 IP 地址。DNAME 只负责”替接名称”,实际地址还需由目标域的 A/AAAA(IPv6 地址记录)承担,DNAME 本身不返回终端地址。第二种误区是把 DNAME 当成 CNAME 的通用替代品;在只涉及单个名称时用 CNAME 更稳妥,且某些递归解析器对 DNAME 的合成 CNAME 支持仍不完善,兼容性需要先验证。第三种误区是忽略替接后的循环风险,若两个域互相用 DNAME 指向对方,会产生无限解析,配置前应检查是否存在环路。
局限与风险
DNAME 的局限主要体现在解析器兼容性与根域约束上。并非所有递归解析器都实现了合成 CNAME,旧版本或精简实现的解析器可能无法正确处理 DNAME,导致这类域名的解析延迟或失败。此外,与 CNAME 一样,DNAME 在根域(即裸域本身)上的使用同样受到限制,需要借助扁平化等机制配合,相关概念可参考 CNAME 扁平化对根域的处理。
如果业务需要把整个域名体系安全地重新组织,理解 DNS CAA 记录(Certificate Authority Authorization,证书颁发机构授权记录)这类与域名解析配套的安全记录也有助益——域名层面的任何重定向改动,都应同时审视证书签发与验证的影响。对于刚接触主机与域名概念的读者,可以先了解 什么是 VPS 及 域名与网站基础配置,再进入更细粒度的 DNS 记录层面。
参考资料
- RFC 6672:DNAME Redirection in the DNS,DNAME 重定向语义的权威定义。
- RFC 1034:Domain Names – Concepts and Facilities,DNS 名称树与解析流程基础。
总结
DNAME 是作用于整棵子域树的 DNS 重定向机制,通过名称替接把该域下所有子域名的查询批量映射到另一个目标域,适合域名整体迁移、CDN 批量接入和多域名复用等场景。它与 CNAME 的差别在于作用对象:前者覆盖节点及其全部后代,后者只覆盖单个名称。选型时应先确认递归解析器对合成 CNAME 的支持,再在测试环境验证替接链路,从而把 DNS 重定向的风险降到可控范围。

微信扫一扫打赏
支付宝扫一扫打赏