CNAME 校验为什么失败
接入 CDN 需要把加速域名的 DNS 指向 CDN 分配的 CNAME 目标,控制台校验通过后流量才会切换到 CDN 节点。校验失败的原因其实不多:同名主机上已有 A 或 AAAA 记录导致冲突、CNAME 还没生效、域名并未托管在当前使用的解析服务、域名挂在其他 CDN 或 WAF 上形成多层嵌套、以及中国内地加速场景下域名尚未完成备案。按这几条逐一排除,基本都能定位。
基本信息
| 冲突 | 同一主机名已有 A 或 AAAA 记录时不能同时存在 CNAME |
|---|---|
| 未生效 | TTL 未过期或权威未更新,等待或用 dig 复核 |
| 托管 | 确认域名 NS 指向当前使用的解析服务 |
| 备案 | 中国内地加速场景通常要求域名已完成备案 |
校验失败排查顺序
- 确认同一主机名上是否还残留旧的 A 或 AAAA 记录
- 用多个递归服务器查询 CNAME 是否已经生效
- 核对域名的 NS 是否指向当前管理的解析服务商
- 检查域名是否已在其他 CDN 或 WAF 上接入形成嵌套
- 中国内地加速前确认备案状态是否满足要求
核对 CNAME 解析状态
核对 CNAME 解析状态
dig +short cdn.example.com CNAME
dig +short cdn.example.com CNAME @8.8.8.8
dig +short cdn.example.com CNAME @223.5.5.5
# 多个递归结果一致且与 CDN 提供的目标匹配,才算真正生效失败原因对照
| 现象 | 原因 |
|---|---|
| 查询返回 A 记录 | 旧记录未删除 |
| 部分递归无结果 | TTL 未过期或权威未刷新 |
| 权威指向其他服务商 | NS 与当前解析平台不一致 |
| CNAME 指向另一层 | 域名已在其他 CDN 或 WAF 上 |
处理同名冲突时先删除旧 A 记录再加 CNAME;两类记录混放会让校验反复失败。
多层接入时的处理
如果域名此前已经接入过其他 CDN 或 WAF,直接再加一层 CNAME 会让解析链变长,且校验往往通不过。正确的做法是先确认是否真的需要多层——多数场景下应该把旧的接入下线,只保留一层;确实需要串联(例如 CDN 前面还有 WAF)时,要按服务商文档确认支持的顺序,并逐层验证回源地址与 Host 配置。切换期间建议先降低 TTL,变更后从多个地域拨测,确认解析与访问都正常再视为完成。