CNAME 是名称的别名,而非地址的别名
www.example.com
CNAME 记录
cdn.provider.net
目标主机名
192.0.2.10
A 记录,最终答案
CNAME 链详解:顺着别名找到 IP
CNAME 记录让一个 DNS 名称成为另一个规范主机名的别名。别名本身并不包含 IPv4 或 IPv6 地址;解析器会跟随目标名称,并在那里查找所请求的数据。当一个别名指向的名称本身也是别名,或者服务商的 DNS 配置在返回地址之前引入了多个受管目标时,就形成了链。这在托管平台和 CDN 中很常见。理解这条链,有助于解释为什么一次简单的查询会先显示主机名,经过额外的解析步骤之后才显示 IP。
有意识地逐级跟踪每一环
假设 www.example.com 是指向 customer.hosting.example 的 CNAME,而后者又是某个区域服务名称的别名。解析器会不断沿着链条往下走,直到找到所请求的地址数据,或遇到错误、无效配置为止。每个别名目标都是一个独立的 DNS 名称,可以有自己的 TTL 和服务商归属。调试时,请记录每一环,而不是只看最后的地址。如果目标拼写错误、不存在,或者绕回形成循环,即使控制面板里第一条 CNAME 记录看起来格式正确,解析也可能失败。
| 链的结果 | 需要检查什么 |
|---|---|
| 别名解析到 A / AAAA | 最终的地址值及其 TTL |
| 目标没有所请求的类型 | 目标是否应当发布该记录族 |
| 目标返回 NXDOMAIN | 主机名拼写以及服务商侧目标的状态 |
| 链形成循环 | 循环别名或相互冲突的服务商配置 |
| 不同解析器得到不同目标 | CDN、地理路由或缓存行为 |
CNAME 规则带有一些限制。作为 CNAME 的名称,通常不能在同一所有者名称下再携带无关的数据,DNSSEC 相关记录和某些服务商的特殊实现除外。这就是为什么区域顶点(根域名)上的 CNAME 会与标准 DNS 中必需的 SOA 和 NS 记录冲突。一些 DNS 托管商提供 ALIAS、ANAME 或扁平化功能,以便在顶点上获得类似的便利,但它们的实现方式各不相同,并且对外返回的是合成的地址记录。不要假设服务商界面中名为别名的功能在线路上就一定是真正的 CNAME。
TTL 与服务商归属同样重要
解析链中的每一步都可以被独立缓存。对最终目标的修改,可能不会立刻取代递归解析器已缓存的别名应答,而且不同环节可能有不同的 TTL 值。如果服务商要求您添加 CNAME 来验证域名,请严格使用其指定的所有者名称和目标,包括任何必需的下划线前缀。在没有弄清楚现有 CNAME 上依赖着什么之前,不要重新指向它。一条链的可靠程度,取决于每一环背后的记录和服务。
- 记录从别名到地址之间的每一个 CNAME 目标。
- 分别独立检查最终目标上的 A 和 AAAA。
- 避免循环别名,以及同一所有者名称下相互冲突的记录。
- 确认顶点扁平化是服务商功能,还是标准 DNS 记录。
- 当更新后的目标没有在各处生效时,比较各级 TTL。
在迁移中使用链
CNAME 使托管服务商可以更换其底层 IP 地址,而无需客户每次都去修改 A 记录。代价是要依赖目标名称及其服务商。在迁移平台之前,请确认新的目标,在正确的 DNS 权威方更新别名,并通过公共解析器验证整条链。在缓存仍可能引用旧目标期间,请保留之前的服务。如果某个查询工具只显示到第一个别名就停止,请改用能够显示后续各环的解析器或检查工具,然后通过预期的主机名测试最终服务。
关于地址记录与别名记录的核心区别,请阅读 CNAME 与 A 记录。DNS 记录参考介绍了其他常见类型,而域名查询工具可以显示某个主机名的公共 DNS 数据。可见的 CNAME 只是一个指针,而不是目的地本身;追踪完整的链,才是弄清 DNS 当前究竟指向哪个端点的可靠方法。
更换服务商时避免脆弱的链
每增加一层别名,就多一个必须保持有效的依赖,也可能多引入一个缓存周期。长链不一定就是坏的,但它会让最终答案更难推断,并且当多个服务商分别拥有不同环节时,会让迁移变得复杂。请尽量让链保持简短,记录由谁控制每个目标,并定期核实旧平台的名称已不再被引用。在注销账户或更换供应商之前,先在区域中搜索指向其主机名的别名。否则,一条看起来正确的第一级 CNAME 可能仍然依赖着一个已退役的目标,直到旧服务商关停之后才会出现故障。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
本主题的免费工具
相关阅读
一封邮件如何找到您的邮件服务器
发件人
you@gmail.com
MX 查询
谁来收邮件?
邮件服务器
优先级 10 优先
收件箱
已送达
优先级数值最小者优先;数值较大的作为备用
MX 记录详解:邮件如何找到目的地
MX 记录告诉整个互联网,由哪些邮件服务器负责处理某个域名的邮件,以及它为什么与 A 记录的结构不同,优先级又是如何运作的。
三个层级都被称作“DNS 服务器”
存根解析器
您自己的设备
递归解析器
运营商、路由器或 1.1.1.1
权威服务器
域名自己的 DNS
递归解析器与权威解析器详解
“DNS 服务器”一词其实指两种截然不同的角色:负责发问的递归解析器,和握有答案的权威服务器。本文帮您分清二者。
实际如何选择 TTL
理解 DNS TTL:为什么变更需要时间才能生效
TTL 决定一条 DNS 应答在被再次查询之前会缓存多久,这正是 DNS 变更无法在各处立即生效的真正原因。了解如何权衡并选择合适的值。