传统的 IP 地理定位服务依赖 WHOIS 注册信息、ARIN 和 RIPE 数据库以及商业 GeoIP 服务商提供的地理位置数据。然而,VPN 提供商正在利用一个系统漏洞:通过 geofeeds 向区域互联网注册机构故意提供虚假的地理位置信息,从而在数据库中伪造其 IP 的归属地。这意味着当你查询一个 VPN 节点的地理位置时,返回的往往是精心设计过的误导性数据,而非其真实的物理位置。
延迟三角定位提供了一种从根本上绕过这一问题的技术路径。其核心原理建立在一个简单而可靠的物理事实之上:网络延迟与物理距离呈正相关。当信号在光纤中传播时,每公里都会产生可测量的延迟,因此距离目标 IP 更近的探测节点必然会返回更低的延迟值。通过在多个地理位置同时发起测量请求,并比较各节点的响应时间,我们可以推断出目标 IP 的真实物理位置,而完全无需依赖任何第三方数据库或注册信息。
分布式探测节点的选择策略
全球分布式网络测量平台如 Globalping 通过众包模式构建了覆盖全球的探测节点基础设施。截至 2025 年底,Globalping 网络已拥有超过 3000 个容器化的探测节点,分布在全球 82 个国家的 437 个自治系统中。这种高度分布式的架构为延迟三角定位提供了理想的测量基础。
节点选择策略采用分层渐进式的方法。第一阶段进行大陆级别的粗略定位,使用每个大洲 5 个探测节点即可获得足够准确的大陆识别结果。在测试中,中欧 IP 地址从北美探测节点返回 137 毫秒延迟,从欧洲节点返回 32 毫秒延迟,从亚洲节点返回 174 毫秒延迟,显而易见的最低延迟指向欧洲,从而完成大陆识别。这种方法的准确性在边界地区可能略有下降,但通过增加每个大洲的探测节点数量可以显著改善。
第二阶段进入国家或地区级别的定位,这是整个定位流程中最关键的一环。最佳实践是使用 50 个探测节点作为默认限制,测试结果显示这种配置能够在准确性和资源消耗之间取得良好平衡。Globalping 平台的 magic 字段支持自动选择最合适的探测节点,只需指定目标大洲名称即可自动分散测试负载。该平台允许未认证用户每小时进行 250 次免费测试,每次测量最多使用 50 个探测节点;注册用户可将限制提升至每小时 500 次测试和每次 500 个探测节点。
对于美国境内的 IP 地址,还需要第三阶段的州级定位。测试过程与国家定位类似,以美国为限定条件进行 50 个节点的测量。实际测试中,一个被 NordVPN 宣传为位于巴哈马的 IP 地址,通过 50 个节点的测量,最佳结果来自佛罗里达州(0.45 毫秒),其次是南卡罗来纳州(12.23 毫秒)和佐治亚州(15.01 毫秒),明确指向迈阿密地区。
第四阶段是城市级定位,其准确性相对较低,因为同一州或国家内的城市数量众多。该阶段的策略是选择延迟最低节点所在的城市作为结果。这种方法更适合路由调试和性能分析等用例,而非精确的城市级地理定位。
技术实现的关键参数
在技术实现层面,测量协议的选择直接影响定位成功率。最初使用 ICMP ping 进行测量,但这种方法存在明显缺陷:大量网络会主动屏蔽 ICMP 流量,导致测量失败。切换到 TCP ping 需要尝试多个常见端口,增加了复杂性和不可靠性。
最终确定的技术方案是使用 traceroute 作为主要测量工具。即使目标 IP 的网络环境屏蔽了 ICMP,其上游路由器通常仍然允许 ICMP 流量,而这些上游路由器通常位于同一国家或地区。通过分析 traceroute 返回的最后一个可用跳点的延迟,可以获得与直接 ping 目标 IP 几乎相同的定位效果,同时大幅提高了测量成功率。
为了在精度和资源消耗之间取得平衡,建议采用以下分层节点配置策略。对于大陆级检测,每大洲使用 5 个探测节点即可满足基本需求。国家或地区级检测默认使用 50 个节点,如果需要更高精度可以增加到 200 到 250 个节点。对于美国各州的细分检测,同样使用 50 个节点作为默认配置。在实际部署中,这些限制参数需要根据 Globalping 平台的 API 配额进行调整,未认证用户建议保持 50 个节点的默认限制以避免超出免费配额。
延迟三角定位的准确性边界
延迟三角定位的有效性高度依赖于探测节点的地理覆盖密度。在探测节点稀少的地区,如非洲部分区域或小岛国,定位准确性会显著下降。这是因为缺乏足够的近距离参考点,导致延迟差异不够显著,无法做出可靠的位置推断。此外,边界地区的 IP 地址可能因为网络路由的物理路径与行政边界不完全一致而产生误判。
然而,延迟三角定位在对抗 VPN 位置欺骗方面展现出独特的价值。尽管 VPN 提供商可以在注册数据库中伪造位置信息,但他们无法改变信号在光纤中传播的物理延迟。一个声称位于巴哈马的 VPN 节点,如果实际物理位置在迈阿密,那么从佛罗里达探测节点返回的延迟必然会远低于从加勒比海地区返回的延迟,这是物理定律决定的,无法通过任何软件配置进行欺骗。
对于需要更高精度的应用场景,可以考虑改进现有算法。例如,同时使用 TCP 和 UDP 协议的 traceroute 测量多个目标端口,分析最后若干跳而非单一跳点的延迟,结合已知 ASN 的注册地理位置进行加权投票,以及对低置信度结果进行重复测量等方法都有望提升整体准确性。这些优化更适合商业级应用,而基础的四阶段定位方案已经能够满足大多数开发运维场景的需求。
构建自己的 IP 地理定位工具
基于上述原理和技术参数,开发者可以利用 Globalping 提供的 API 和 SDK 构建完全自主的 IP 地理定位工具。Globalping 提供了 TypeScript SDK(globalping-ts)和完善的 REST API 接口,支持通过 CLI 或编程方式进行测量请求。测量结果以 JSON 格式返回,包含每个探测节点的地理位置、延迟值和数据包统计信息。
部署自己的 IP 地理定位工具时,建议首先实现四阶段渐进式定位流程的自动化:从 5 个节点的大陆检测开始,然后进行 50 个节点的国家或地区检测,接着对美国 IP 地址进行 50 个节点的州级检测,最后提取最低延迟节点的城市信息作为城市级结果。每次测量后对结果进行排序分组,延迟最低的地理位置即为目标 IP 的推定位置,同时记录置信度评估结果以供后续参考。
通过这种方式,我们实现了完全基于延迟测量数据、而不依赖任何第三方 IP 数据库的地理定位服务。这种方法不仅能够验证 VPN 等服务的真实位置,还在网络诊断、性能优化和内容分发策略制定等场景中具有广泛的应用价值。
参考资料
- Globalping 官方博客:《We have ipinfo at home or how to geolocate IPs in your CLI using latency》(2025 年 12 月 15 日)
- arXiv 论文:《Globalping: A Community-Driven, Open-Source Platform for Scalable, Real-Time Network Measurements》(2024 年 10 月 31 日)