数据质量

Anycast 和 CDN IP 段:地理定位的特殊情况

大多数 IP 地理定位都合理地假设,一个给定地址对应一个大致固定的物理位置,或者一个稳定、可识别的网络。Anycast 寻址以一种特定而有趣的方式打破了这一假设;如果您需要对来自内容分发网络或大规模分布式服务、而不是普通终端用户连接的流量进行地理定位,就值得了解这一点。

使用 anycast 时,同一个 IP 地址会同时从多个物理位置发布,互联网路由会把任何一个请求送到从请求方角度看当时最近或位置最佳的那个发布点。许多内容分发网络正是这样在全球范围内实现低延迟的:让同一个地址在各地就近响应用户,而不是把每个请求都路由回一台中央服务器。这对地理定位的实际影响是,同一个 IP 地址确实可能根据请求者是谁、来自哪里而对应不同的物理服务器位置,这与绑定在某个固定位置的普通 IP 是根本不同的情况。

这意味着,对 anycast 地址进行地理定位查询,最好理解为描述的是运营该 anycast 网络的运营方,有时是其分布式覆盖范围内一个有代表性或常用的点,而不是像查询典型的住宅或企业 IP 那样得到一个固定的物理位置。把返回的位置当作“流量实际由此处的服务器提供”,对某些用途来说是合理的近似,对另一些用途则可能明显错误,具体取决于该网络的 anycast 路由对某个请求的实际表现。

这对于试图对经由 CDN 或类似大型分布式服务、或来自这些服务的流量进行来源地理定位的人来说最为重要。如果您想通过 IP 识别网站访客,但访客的请求在到达您的日志或应用层之前经过了 CDN 边缘服务器,而您定位的是 CDN 边缘的 IP 而不是原始访客的 IP,那么您定位的就是 CDN 的基础设施,而不是您真正关心的人。在这里,把真实访客的 IP 正确记录到日志中(通常通过在 CDN 层正确配置 forwarded-for 请求头)远比改进地理定位服务本身重要,因为任何地理定位查询都无法还原请求层一开始就没有捕获到的位置。

asnorganization 字段是最明确的信号,表明您看到的是 CDN 或 anycast 基础设施,而不是普通的终端用户连接。每当某个已知服务或平台的地理定位结果出乎意料地集中在少数几个位置、而与其实际用户所在地无关时,都值得专门检查这两个字段。我们的 IPv4IPv6 查询返回这些字段,正是为了支持这类诊断。