不少人第一次接触IP查询,心里期待是输入一串IP,地图直接定位到设备所在楼栋。这个预期本身就存在偏差。IP能够查到的地址,和大家日常理解的居住地址不是同一回事。
先搞懂IP分配逻辑。运营商掌握大量IP段,分配给用户时按照区域划分。举个例子,南昌电信宽带用户分配到的IP,大多归属某一段注册在南昌的IP段。但这不代表这个IP就能精确定位到住户楼栋。同一个IP段,可能覆盖南昌几十万宽带用户。IP数据库只能标记这个IP归属南昌电信,无法细化到街道、楼栋。
实际查询精度上限是什么样?IPIP.net、纯真IP库、MaxMind这类商用IP库,大多只能定位到城市级别,少数能精确到区,例如南昌市青山湖区,这基本就是精度边界。街道、小区、门牌号这类信息,公网数据库不会收录,技术层面也做不到。运营商分配IP,不会把物理端口和详细地址绑定记录,这类数据保存在运营商内部运维系统,不会向公网开放。

有个很容易忽略的情况,同一个IP,在不同数据库查询,返回位置可能不一样。IPIP.net和纯真IP库数据源、更新周期各不相同,对同一段IP归属判定会出现差异。同一个IP,A工具显示南昌,B工具显示九江,不代表其中一方出错,只是数据库对IP段注册信息解读不同。查询结果不用死抠细节,参考大致区域即可。
在线查询工具上手最简单。百度搜索IP查询,首条结果就能直接使用,填入IP就能获取国家、省份、城市、运营商信息。IP138、IPIP.net这类老牌站点数据稳定性更好,IPIP.net还有付费API接口,精度高于免费版本,可以达到区县。但所有这类工具仅支持公网IP查询,内网IP如192.168.1.1这类,查询结果为空,内网IP不会录入公网路由表。
命令行方式也可以查询。Windows系统可以用nslookup搭配线上服务,Linux直接用whois调取IP注册信息。whois返回的是IP段所属机构、注册地点,类似CHINANET Jiangxi province network,信息更加原始,但精度同样停留在城市层级。想要结构化数据,可以调用IPIP.net的API,返回JSON格式,附带经纬度,但坐标是城市中心点,不是设备真实物理位置。
关于定位准确率,可以参考一组数据:IP定位到城市的准确率大约80%到95%;到区县的准确率下降至50%到70%,再往下的地址基本属于估算。部分论文尝试依托网络延迟、网络拓扑,借助机器学习实现更精细定位,但只适用于特定实验环境,不属于通用手段。移动网络IP定位精度会比宽带更低,手机在基站间切换时IP会变动,同一个IP还可能分配给多名用户。
IP归属查询的实际用处在哪?网络安全溯源场景,凭借IP确定攻击来源城市和运营商,帮助安全团队缩小排查范围。广告投放依托IP判断用户所在区域,推送适配内容。电商风控场景,如果订单IP归属A城市,收货地址在相隔上千公里的B城市,系统就会标记订单存在异常。这类场景只需要大致区域,不需要精确住址。
想要拿到详细物理地址,只依靠IP是行不通的。执法部门要精确定位,需要运营商配合调取内部端口分配记录,叠加其他证据。普通人查询IP,最多拿到城市、运营商信息,无法获取更细资料。网上宣称输入IP就能查到精确住址的服务,要么是诈骗,要么只是把城市级别的结果包装,制造高精度的假象。
回到最开始的问题,依靠IP查询地址,最多查到城市,少数情况能定位到区县,街道、门牌号无法获取。不是技术不够先进,根源在于IP分配机制本身,不会记录这类详细地址信息。清楚这个边界,就不会抱有不切实际的期待。