CNAME 别名
CNAME 把一个域名指向另一个域名(规范名),解析链最终仍需获得目标的 A/AAAA;一个名称一旦是 CNAME,通常不应再有其他类型记录。
#type / concept
#status / growing
#tech / network
#protocol / dns
[!info] related notes
- 所属 MOC: DNS 知识地图
- 记录模型: 资源记录 RR 与 RRset
- 目标地址: A/AAAA
- 调度: CDN DNS 调度
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-scheduling、why-same-domain-different-ip)。
socks5h把主机名交给代理解析时,CNAME 链由代理侧完成,本地只看到「连成功了」(见 socks5-local-vs-remote-resolution)。