IP 地理定位实际是如何运作的

IP 地理定位是如何工作的?

IP 地址本身并不包含坐标。协议里没有 GPS 芯片,数据包头中没有纬度字段,也没有任何信标去报告一台机器所在的位置。IPv4 地址是 32 位路由信息,IPv6 地址是 128 位。地理定位服务告诉你的一切关于地点的信息,都是从地址周边的证据推断出来的,而非直接从地址中读取。理解这种推断是如何进行的——以及它在哪里会失效——正是能否用好追踪工具、能否正确解读其输出结果的分水岭。

对于"IP 地理定位是如何工作的"这个问题,简短的答案是:数据库把关于一段地址块的若干独立公开信号相互关联起来,彼此权衡,然后连同置信度一起发布一个最佳估计值。而更完整的答案,值得我们一层一层地梳理。

第一层:注册记录

每一个公共 IP 地址都由五大区域互联网注册机构之一分配:ARIN(北美)、RIPE NCC(欧洲、中东和中亚)、APNIC(亚太地区)、LACNIC(拉丁美洲和加勒比地区)以及 AFRINIC(非洲)。每家注册机构都公开发布哪一段地址块由谁持有,以及登记人的记录国家。这是最基础的信号:它具有权威性、公开透明,而且对于仍留在原分配地的地址来说,在国家层面上极少出错。但它对城市一无所知,也无法说明登记人的各个客户身在何处——一家全国性 ISP 的整段地址分配只对应一个登记人地址。注册机构还会把每一段地址块关联到一个自治系统,这也是为什么 ASN 查询往往是任何追踪中最可靠的部分。

第二层:ISP 发布的数据

一些网络运营商会自愿发布自己的地理定位数据。其标准化形式是地理数据源(geofeed)——一个在 RFC 8805 中描述的 CSV 文件,它将地址范围映射到国家、地区和城市。当一家 ISP 维护着准确的地理数据源时,数据库厂商会把它当作高置信度的输入,因为运营商比任何人都更清楚哪一段前缀服务于哪一个都会区。覆盖情况参差不齐:大型内容网络和有前瞻性的 ISP 会发布数据源;许多运营商什么都不发布,还有少数发布的是过时的数据。

第三层:延迟测量

光在光纤中的传播受物理规律的约束。如果法兰克福的一台探测服务器在 4 毫秒内就能到达某个地址,那么该地址不可能位于圣保罗。厂商运行的测量网络会从数十个观测点向地址范围发送 ping 并进行三角定位:每一次往返时间都画出一个最大距离的圆,而众多圆的交集就限定了合理的区域范围。延迟三角定位擅长排除某些地区,但在精确定位城市方面表现平平,因为路由绕行、排队延迟和最后一公里的接入技术都会以难以预测的方式抬高往返时间。

第四层:众包 GPS 关联

最精细的信号来自那些同时报告两类信息的设备。请求位置权限的移动应用和网站会同时观测到一个 GPS 定位以及它所来自的公共 IP;将数百万个经用户同意的会话聚合起来,就能构建出一张统计地图,反映哪些地址范围出现在哪些社区。这一信号既强大又易失效:ISP 会重新分配地址池,上一季度还聚集在某个郊区的地址块,如今可能服务于另一个郊区。同样重要的是,这是关于地址范围的聚合数据——它不会也无法识别出任何单个地址背后的个人,这一点在IP 是否会暴露你的住址中有更深入的探讨。

第五层:主机名线索

网络工程师会以地点来命名路由器。对某个骨干网跳点做反向 DNS 查询,常常会返回类似 lon-edge-02.example.netae1.cr2.ord7.example.net 的结果——按惯例嵌入其中的机场和城市代码(LON 代表伦敦,ORD 代表芝加哥)。解析这些主机名可以定位基础设施,而一个经由某个具名接入点(point of presence)路由的终端用户地址,很可能就在附近获得服务。这一信号是间接旁证:命名惯例因运营商而异,名称会在设备搬迁后仍然沿用,而客户所在之处可能距离为其提供服务的边缘路由器有数百公里之遥。

信号 来源 典型分辨率 主要弱点
注册记录ARIN、RIPE NCC、APNIC、LACNIC、AFRINIC国家登记人地址,而非用户位置
地理数据源ISP 自行发布(RFC 8805)城市覆盖稀疏,有时数据过时
延迟探测厂商测量网络地区路由绕行会夸大距离
GPS 关联经同意的设备聚合数据城市 / 城区随 ISP 重新分配地址池而衰减
主机名线索反向 DNS 命名惯例基础设施所在城市名称在网络变更后仍沿用

为什么答案是估计值,而非精确定位

没有任何单独一层是决定性的,所以厂商会把它们组合起来。当各层彼此一致时——注册国家与延迟约束相符,地理数据源指向的城市与 GPS 聚集所暗示的城市相同——置信度就高。当它们相互矛盾时,估计范围就会扩大。这就是为什么一个诚实的结果总是给出一个置信半径,而不是一个精确的图钉:其输出的含义是"这一地址范围最有可能服务于这一区域",而绝非"这台设备就在这些坐标上"。实测精度反映了这种结构:国家层面的答案大约有 95% 到 99% 的时间是正确的,地区层面为 55% 到 80%,而在固定宽带上,城市层面为 50% 到 75%——至于移动运营商、VPN 出口和卫星链路,则在每一个层面上都常常出错。完整的数据请见IP 地理定位有多准确

数据库是如何编制的

诸如 DB-IP(为 Uplink Trace 的定位层提供支持)和 MaxMind 的 GeoLite2 之类的产品,会持续摄取全部五个层次的数据,通过算法解决冲突,并发布快照——免费版通常按月发布,商业版则更为频繁。更新周期之所以重要,是因为互联网的地址地图会在其下方不断变动。当一段地址块被出售、租赁,或从一个新的国家重新通告时,所有尚未重新观测到它的数据库都会继续报告旧的位置。过时的地址分配是造成国家判断错误的最常见单一原因:一段从欧洲经纪商转让给亚洲云服务运营商的地址范围,可能在数月之内都被定位到错误的大洲。查看进行通告的网络——参见什么是 ASN——往往能揭示这种不一致,因为 BGP 通告在几分钟内就会更新,而地理定位快照要以周为单位才更新。

要看这些层次如何汇集成一份实时档案,不妨运行对 8.8.8.8 的示例追踪:注册数据、AS 运营商、反向 DNS 以及地理定位估计值会并排呈现,每一项都标注了它能声明什么、不能声明什么。这种透明性正是关键所在。IP 地理定位是一件经过良好校准的统计仪器,用于把网络粗略地定位到大致区域——但用它来定位人则是根本性错误的用途,这是它做不到的。