Domain IP Lookup

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

访客

查询该域名

CDN 边缘节点

104.21.x.x

DNS 返回的就是它

源站服务器

真实 IP,从不暴露

基础设施与运维

为什么 CDN 会隐藏源站 IP,而且这正是用意

3 分钟阅读

您查询一个知名网站,本想得到它的服务器地址,结果拿到的却是属于 Cloudflare、Fastly 或 Akamai 的地址。这并没有出错。您看到的,恰恰是这个域名对外发布的内容,而真正服务器的地址,从一开始就从未出现在 DNS 里。

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

访客

查询该域名

CDN 边缘节点

104.21.x.x

DNS 返回的就是它

源站服务器

真实 IP,从不暴露

DNS 返回的是边缘节点地址,源站藏在它的背后,并未公布。

CDN 究竟做了什么

内容分发网络(CDN)是分布在全球各地的一批服务器。访客不再全部连接到您唯一的源站服务器,而是连接到离自己最近的 CDN 节点,由它直接提供缓存的内容,并把缺少的部分从源站取回。

性能上的理由很直白:一位身在新加坡的访客,连接到弗吉尼亚的服务器,每一次请求都要付出约 200ms 的往返延迟,而新加坡的边缘节点,能把缓存内容的延迟降到几毫秒。

要做到这一点,域名必须解析到 CDN,而不是源站。这不是副作用,而是整套机制本身。如果 DNS 返回的是您的源站地址,访客就会直接连到源站,CDN 也就根本不会参与进来。

如何识别 CDN 地址

  • 反向 DNS 会指出服务商。该地址会解析为类似 *.cloudflare.com、*.fastly.net 或 *.cloudfront.net 的名称。参见反向 DNS。
  • 同一个地址服务于许多互不相关的站点。边缘节点按设计就是共享的基础设施。
  • 不同地点得到不同的答案。地理路由会把您引向最近的节点,所以地址会随您发起查询的位置而变化。
  • CNAME 指向服务商的主机名。像 www.example.com CNAME example.com.cdn.cloudflare.net 这样的记录,意思再明确不过。
查看这个地址叫什么名字
dig +short example.com
dig +short -x 104.21.32.47

第二条命令是反向查询。如果它返回的是某家服务商的主机名,您就得到了答案。

为什么要刻意隐藏源站

隐藏并不是副产品,而是人们愿意付费购买的一项安全属性。

威胁隐藏源站能起到什么作用
DDoS 攻击攻击流量冲击的是 CDN 的容量,而不是您单独的那台服务器。这是大型站点使用 CDN 的首要原因。
直接攻击攻击者必须先找到源站才能访问它,所以扫描和探测打到的是边缘节点。
绕过 WAF如果源站可以直接访问,边缘节点上的每一条防火墙规则,都可以被直接跳过。
规避速率限制在边缘节点上实施的限制,无法通过绕到它们背后直接连接来规避。

这对查询结果意味着什么

它改变的是您解读答案的方式,而不是答案是否正确。

核心要点

查询告诉您的,是这个域名的流量此刻被导向了哪里。对于由 CDN 代理的站点,这个地方就是边缘节点,而这正是真实、有用,也是唯一公开的答案。

实际的影响有:

  • 地理定位毫无意义。边缘节点所在的城市,只说明您被路由到了哪里,而不是企业或其数据位于何处。
  • 反向 IP 查询只是噪声。成千上万个互不相关的域名,会合理地共用同一个边缘地址。
  • 地址并不稳定。CDN 会不断重新分配边缘地址。不要把它硬编码,也不要围绕它构建防火墙规则。
  • 封禁它就是封禁所有人。封禁一个共享的边缘地址,会影响该节点之后的每一个站点。

关于仍要设法找到源站的说明

有些文章介绍了如何揭开源站服务器真面目的技术:历史 DNS 存档、证书透明度日志、从未迁移到 CDN 之后的子域名,以及源站所发邮件的邮件头。

这些方法无一例外都是利用目标自己犯下的错误,而不是击败 CDN。而且,有人隐藏源站,通常是因为他们正在遭受攻击。探测他人的基础设施,以破解对方刻意部署的防护,并不是一种中立的行为,在许多司法辖区也并不合法。

查询工具会显示任意域名完整的公开记录集,包括 CNAME 链,这通常是确认一个站点是否由 CDN 代理的最快方法。

需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。

常见问题