【发布时间】:2016-06-07 09:50:39
【问题描述】:
可能很简单的问题,我错过了一些微不足道的事情,但是...... 典型的 CDN 封装设置是:
- domain.com 封装IP的记录
- subdomain.domain.com CNAME 记录到 incapsula.host
为什么使用 A 记录?为什么不将 CNAME 记录也用于根域?
【问题讨论】:
可能很简单的问题,我错过了一些微不足道的事情,但是...... 典型的 CDN 封装设置是:
为什么使用 A 记录?为什么不将 CNAME 记录也用于根域?
【问题讨论】:
因为如果您想在同一域下拥有其他记录,则不能拥有根域的 CNAME 记录。 DNS 规范不允许这样做,特别是在 RFC 1034 (http://www.faqs.org/rfcs/rfc1034.html) 中
如果节点上存在 CNAME RR,则不应有其他数据 当下;这确保了规范名称及其别名的数据 不能不同。此规则还确保缓存的 CNAME 可以 在没有与权威服务器检查其他 RR 类型的情况下使用。
如果您有 CNAME 扁平化,那么您“可以”这样做。
【讨论】:
CNAME 记录是否可用于根域由该域的 DNS 服务提供商决定。它与该域的 CDN 提供商无关。
CNAME 到根域不是标准的 DNS 功能,所以很多 DNS 服务商不支持。这也是为什么在某些情况下根域必须指向 CDN 提供商的 A 记录的原因。
在DNS服务商确实支持CNAME到根域的其他情况下,你配置根域指向CNAME,你在挖掘它时仍然会找到一条A记录,这称为CNAME flattening。
以我的这个站点whatsmycdn.com为例,它实际上指向的是CDN CNAME,但是由于CNAME扁平化,你在挖掘它时只能看到CDN虚拟IP:
dig whatsmycdn.com +short
110.232.178.193
【讨论】:
大多数 DNS 提供商不允许您将根域指向其他记录然后是 A 记录,原因是 RFC 规则禁止这样做。 最佳实践是按照 Incapsula 的指示指向根记录,并使用他们的管理控制台将根域指向 WWW 域以避免延迟(CNAME 使用地理位置)。
【讨论】: