GeoIP基础知识

IP 归属地查询是怎么实现的?聊聊 GeoIP 数据库

为什么查一个 IP 能定位到城市?讲清楚 GeoIP 数据库的三种数据来源、城市级精度的边界、每日更新机制,以及为什么你的定位有时会差一个省。

在 IPchase 查询一个 IP,几毫秒就返回"中国 福建 宁德 联通"。很多朋友好奇:这数据哪来的?准不准?为什么有时会偏到隔壁省?

核心逻辑:一张"IP 段地图"

IP 地址不是一台台设备登记的,而是按段分配的。IANA(互联网号码分配机构)把地址块分给各大区域注册机构(APNIC 负责亚太),注册机构再分给运营商和企业。

每次分配记录都包含:"这段 IP 分给了谁、登记在哪个城市"。把这些分配数据 + 路由广播数据 + 实测数据汇总起来,就形成了 GeoIP 数据库。

数据库的本质是一个前缀树:查询 1.2.4.8 时沿着二进制前缀往下走,命中某个节点,节点上写着"这个段属于福建宁德"。

主流数据源

  • MaxMind GeoLite2:事实标准,社区版免费,城市级精度,每周更新。IPchase 用的就是它,服务器本地部署
  • IP2Location / DB-IP:商业数据库,各家有自家的数据修正
  • 纯真 IP 库:国内老牌库,对中国大陆数据补充较好

精度:城市级是上限,不是保证

要建立一个预期:GeoIP 的城市级精度大约 70%–90%,再往上没有了。

原因是 IP 归属登记的是运营商注册地址,不是用户物理位置:

  • 运营商给一个县城分配的 IP 段,可能登记在地级市分公司
  • 手机流量走省级网关,全省用户查出来都是省会
  • CDN 的 anycast IP(如 8.8.8.8)全球几十个节点共用,只能说"任播"

所以"查出来是宁德,实际我在福州"这类偏差属于数据机制的天然误差,任何 GeoIP 服务都存在,不存在"绝对准"的库。

更新机制:为什么每周都要更新

运营商不断调整地址段。MaxMind 每周二发布新版 GeoLite2,内容会包含:

  • 新分配的地址段
  • 归属信息修正
  • ASN(自治系统)变更

数据库不更新的后果:新 IP 段查出来一片空白,或者归属还是上家。

IPchase 的做法是服务器本地部署 + 每天自动检查更新——查询时不依赖任何外部 API,响应快、无次数限制,数据库有新版本就自动拉取。

除了归属地,还能查到什么

一次 IP 查询能附带的信息比想象中多:

字段 来源 用途
国家/省/市 GeoIP City 库 展示归属
经纬度 City 库(城市中心点) 地图标注
时区 City 库 显示当地时钟
ASN / 运营商 GeoIP ASN 库 判断是机房还是家宽
IP 类型 数据中心/家宽标记 代理识别的关键

其中 ASN 特别值得说:AS4134 是电信骨干、AS15169 是 Google——看到 ASN 就知道这个 IP 属于谁的网络。它是代理识别的核心依据之一。

"定位差一个省"的典型场景

知道机制之后,常见的偏差都能对上号:

  • 手机流量:流量出口统一收拢到省级核心网关,全省用户对外呈现同一个城市,这是最大宗的"查出来是省会"来源
  • 新开的宽带:运营商新放号的地址段登记还没跟上,GeoIP 库里可能显示为上一家使用者的归属
  • 企业专线:公司总部在上海,分支机构用的 IP 段登记在总部,人查出来就在上海
  • VPN / 代理:查的是出口服务器的位置,和你本人无关——这本来就是代理的工作原理
  • 卫星网络:Starlink 这类服务的关口站位置和用户位置可能相隔上千公里

判断自己遇到的是哪种情况,可以看 ASN:如果 ASN 属于移动运营商(中国移动、Vodafone 之类),大概率是网关收拢;如果属于云厂商或 VPS 商(阿里云、DigitalOcean),那查的是机房位置。

经纬度是城市中心点,不是你家

GeoIP City 库返回的经纬度是登记城市的中心坐标,精度就是这个城市本身。看到地图上的点离你家差两公里很正常,差两个省也正常(登记偏差)。

有些商业数据库会给出街区级定位,那是把 WiFi 定位库、用户上报等信号叠加进去的结果,已经不属于"纯 IP 定位"的范畴。纯 IP 定位的天花板就是城市,记住这一点可以避免对任何查询服务抱有过高预期。

交叉验证的方法

想提高归属判断的可信度,可以把三类信号放在一起看:

  1. GeoIP 归属地——登记数据怎么说
  2. 时区与语言——浏览器的时区、系统语言是否与归属地一致(伪装度检测做的就是这件事)
  3. 延迟佐证——用 Ping 工具测到目标城市的 RTT,对照物理距离是否合理:新加坡到洛杉矶物理下限约 160ms,如果测出来 40ms,说明"洛杉矶"这个归属十有八九有问题

三者互相印证,比单看任何一个库都可靠。

小结

  • IP 归属地 = 分配登记数据 + 路由数据的汇总,城市级精度 70–90%
  • 查询实现是本地数据库的前缀匹配,毫秒级
  • 数据每周都在变,选服务时要看更新机制
  • ASN 是 IP 背后的"门派",比城市归属更有信息量

试试:IP 查询工具,输入任意 IP 看看它的完整档案。

检测你的网络环境:回到首页做一次完整检测,或试试 指纹检测。