CNAME 别名

CNAME 把一个域名指向另一个域名(规范名),解析链最终仍需获得目标的 A/AAAA;一个名称一旦是 CNAME,通常不应再有其他类型记录。

#type / concept #status / growing #tech / network #protocol / dns

[!info] related notes

CNAME 别名

一句话定义

CNAME(Canonical Name,规范名) 把一个域名别名指向另一个域名;客户端最终仍需解析出目标的 A/AAAA 才能连接。

核心机制 / 工作原理

www.example.com  →  edge.cdn-provider.net

解析 www.example.com 时,权威返回 CNAME,解析器再继续把 edge.cdn-provider.net 解析成 IP。

CNAME 链可以多层:

anyrouter.top

anyrouter.top.a1.initrr.com

155.102.x.x

互斥规则

一个名称一旦是 CNAME,就不应再共存其他类型记录(除 DNSSEC 相关 RRSIG 等)。例如 www.example.com 是 CNAME 时,不能再有它自己的 MX/TXT/A。子域(如 mail.example.com)不受影响。

最小例子 / 最小场景

dig anyrouter.top CNAME
dig anyrouter.top A       # 若返回 CNAME,需继续追到最终 A

dig +trace 会把整条 CNAME 链逐跳显示出来。

边界与易混淆点

  • CNAME 链上每一层都可能变化:缓存、调度策略、配置变更都会改变最终结果;你「昨天能连」不代表今天 CNAME 指向的 IP 还有效。
  • CNAME 不能用于 Zone Apex(裸域):即 example.com 本身通常不能是 CNAME(会影响 NS/SOA 等必需记录),裸域要用 ANAME/ALIAS 或直接在权威侧返回 IP。
  • CNAME 是「为什么同一个域名最终 IP 不同」的常见中间环节——CDN 往往用 CNAME 把流量引到动态边缘(见 cdn-dns-schedulingwhy-same-domain-different-ip)。
  • socks5h 把主机名交给代理解析时,CNAME 链由代理侧完成,本地只看到「连成功了」(见 socks5-local-vs-remote-resolution)。
创建于 2026/7/31 更新于 2026/7/31