Domain IP Lookup

为什么查询结果显示的是 CDN,而非源站

访客

查询该域名

CDN 边缘节点

104.21.x.x

DNS 返回的就是它

源站服务器

真实 IP,从不暴露

基础设施与运维

CDN 如何借助 DNS 调度全球流量

3 分钟阅读

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 工具。