为什么查询结果显示的是 CDN,而非源站
访客
查询该域名
CDN 边缘节点
104.21.x.x
DNS 返回的就是它
源站服务器
真实 IP,从不暴露
CDN 如何借助 DNS 调度全球流量
CDN 的核心承诺,是让内容由物理上离每位访客较近的服务器提供,而不是由一台固定的源站服务器服务全世界。在大多数实现中,使这一切成为可能的机制就是 DNS,具体来说,就是针对完全相同的查询,给不同的访客返回不同的答案。
同一个域名,不同的答案,这是有意为之
当域名由 CDN 代理时,它的 DNS 记录通常会(往往通过 CNAME)指向 CDN 服务商自己的基础设施,而不是某个单一的源站 IP。随后,CDN 的域名服务器会根据查询看起来来自何处来回答每一次查询,把对该访客来说最近、或负载最低的边缘节点的 IP 地址返回给他。身处地球两端的两个人查询同一个域名,完全可能得到两个截然不同的 IP 地址,而且这是正确的。
- 所以,从两个不同的地点对同一个域名做两次域名转 IP 查询,结果不同并不是缺陷,而是系统在按设计运行。
- 这也是为什么由 CDN 代理的域名在重复查询时往往会解析到多个地址:并不存在唯一“正确”的答案,只有当下合适的答案。
- 这类记录常用较短的 TTL,正是为了让 CDN 能迅速把流量从出问题的边缘节点移开,而不必等待漫长的缓存窗口过去。
排查问题时这意味着什么
如果一个由 CDN 代理的站点对部分访客表现异常,对另一部分却正常,那么查看不同观测点实际把域名解析到了哪里,往往是最快的办法,可以确认问题是出在某个特定的边缘节点上,而不是源站或应用本身。直接解析并显示原始应答的工具,前面没有浏览器自带的 DNS 缓存挡着,能更清晰地反映此刻正在向某个地区提供的究竟是什么。
源站的真实地址是被刻意隐藏的
有一个值得了解的副作用:解析一个由 CDN 代理的域名,得到的是边缘网络的地址,而不是它背后的源站,这通常是设计使然,而非偶然。不让源站的真实 IP 出现在公共 DNS 中,是站点抵御直接拒绝服务攻击最简单、最有效的手段之一,因为这类攻击针对的是真正的基础设施,而不是它前面容量大得多的 CDN。这也意味着,仅凭一次域名查询,您无法知道站点“真正”托管在哪里,只能知道它的流量目前从哪里进入 CDN 的网络,这是一个有实质区别的问题。
| 信号 | 位于 CDN 之后 | 直连源站 |
|---|---|---|
| 从同一地点重复查询 | 通常稳定 | 通常稳定 |
| 从不同地区查询 | 往往返回不同的地址 | 通常各地返回相同的地址 |
| TTL | 通常较短(60-300s) | 往往较长,数小时甚至更久 |
| 解析所得地址的归属 | 属于 CDN 服务商 | 属于站点自己的托管服务商 |
查询解析所得地址的 WHOIS 或 ASN
要确认一个域名是否位于 CDN 之后,有一个快速而实用的办法:在域名查询之外,另行查看解析出的 IP 地址究竟归谁所有。如果解析出的地址登记在某家知名 CDN 或云服务商的自治系统编号(ASN)名下,就是一个很强的信号,说明您看到的是边缘网络,而不是源站,同时也立刻解释了为什么同一个域名在不同地区会显示不同的地址,而其实一切正常。这是查询之后有用的第二步,而不是对查询的替代:DNS 应答告诉您当前的地址,而归属查询则告诉您这个地址究竟属于哪种基础设施。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
一个主机名,多条 A 记录
第 1 个答案
93.184.216.34
第 2 个答案
93.184.216.35
第 3 个答案
93.184.216.36
解析器会返回所有记录,通常按轮换顺序
DNS 轮询详解:在多个 IP 之间分担流量
了解 DNS 轮询如何返回多个地址,它在负载分配方面能做什么、不能做什么,以及缓存如何影响实际观察到的结果。
一个主机名,多条 A 记录
第 1 个答案
93.184.216.34
第 2 个答案
93.184.216.35
第 3 个答案
93.184.216.36
解析器会返回所有记录,通常按轮换顺序
DNS 负载均衡:方法、优势与局限
对比基于 DNS 的流量分配与应用负载均衡器,了解 TTL、健康检查和区域化应答如何影响服务可用性。
为什么查询结果显示的是 CDN,而非源站
访客
查询该域名
CDN 边缘节点
104.21.x.x
DNS 返回的就是它
源站服务器
真实 IP,从不暴露
什么是源站服务器?它与 CDN 有何不同
了解源站服务器在 CDN 或反向代理背后承担什么角色,为什么公共 DNS 可能显示的是边缘节点地址,以及如何安全地排查问题。