前阵子一个开网店的朋友发来截图:平台提示他的账号曾在"哈尔滨"登录。人一直在东莞,第一反应是被盗号了,连夜改密码,然后来问我到底怎么查一个 IP 是哪来的。我让他先别急,把那串数字发我。查完归属地和运营商,基本确认那是台云服务器——后来发现是他们广州的运营同事挂了个自动化脚本。这件事让我意识到,IP 归属地这东西,查是几秒钟的事,难的是看懂它能说明什么、不能说明什么。
一、一个 IP 到底"属于"谁
公网 IPv4 是这样发下来的:全球分配机构把大块地址交给区域登记组织,区域组织再分给当地的运营商和云服务商,运营商把这一段切给某个城域网或某个机房的地址池。所以 36.7.x.x 这类地址的真正含义是"中国电信某一段池子里的一个号码",而不是"某条街某户人家"。归属地查的是这段地址被分配到哪里,不是这台设备此刻停在哪。
三个日常事实,理解了就不会误读结果:
- 一个公网 IPv4 后面常常站着一群人。IPv4 是 32 位地址,理论上限约 43 亿个,早就分完了,于是家庭宽带普遍走运营商级 NAT,一整片小区共用出口;公司里三十个人同时打开你的网站,服务器日志里只有专线出口那一个地址。
- 地址会变。家庭宽带重新拨号就可能换一段;手机在机场和在小区里上网,走的是完全不同的出口。
- 内网地址查不到。
10.x.x.x、172.16–172.31.x.x、192.168.x.x属于内网段,不参与公网路由,任何形式的公开查询都给不出它的地理位置。
二、归属地是"算"出来的,不是"量"出来的
你输入一个 IP,工具做的事是拿它去一张 IP 段—地区对照表(一般叫 GeoIP 库)里找覆盖它的最细那条记录。这张表怎么来的?来源是区域登记机构的公开分配统计(谁拿到了哪一段)、运营商公开信息,再叠加大量探测节点测到的延迟与路由数据。正因为是"拼出来的表",它必然有两点先天不足:一是粒度到城市为止,二是更新有滞后。运营商调整一次地址池,表可能要几个月才反映出来。
三、能查到什么,查不到什么
| 可以确认 | 无法确认 |
|---|---|
| 国家、省份、城市,精度通常到城市级,不保证区县 | 街道、门牌,以及屏幕背后那个具体的人 |
| 运营商(ISP):电信 / 联通 / 移动,或某云服务商 | 对方的真实物理位置——走代理或 VPN 时,你查到的是它的出口节点 |
| 自己此刻的出口 IP(判断代理有没有生效、宽带换没换地址) | 套了 CDN 的站点里访客的真实来源——日志记录的是边缘节点地址 |
IPv6 地址(128 位,形如 2001:db8::1)同样能查 | 内网 IP 的任何地理信息 |
第二列那几行不是我给工具留面子,是这件事的物理边界:定位到个人属于依法由有权机关向运营商调取的范畴,任何一个能公开查询的网页工具都不该、也做不到给出这种结果。谁要是宣称能精确到门牌,那才是需要警惕的信号。
四、我实际怎么排查一例"异地登录"
- 先把日志里的地址抓出来去重。几百行 access log 贴进 文本排序去重,选"去重保留首次出现",再看它给的总行数、去重后行数和重复行数——先弄清到底有几个不同来源,很多时候"大量可疑访问"其实是同一个 IP 的重复请求。
- 只留 IP 字段。用 正则表达式测试,里面有内置的 IP 地址模板,对着日志格式改一改就能把地址抽出来,实时高亮能当场看出有没有误抓。
- 逐个查归属地和运营商。在 IP 归属地查询 里输入 IPv4 或 IPv6,看城市与运营商。这一步主要不是看"哪个城市",而是看运营商类型:三大运营商的宽带段、移动网络段,还是云机房的段。
- 机房 IP 就换一个解释。云服务商的地址段意味着"有脚本或代理从这里出去",跟当事人住在哪没有半点关系。我朋友那件事走到这一步就结束了。
- 对齐时间线。同一账号 10:02 在东莞、10:47 在哈尔滨,物理上不可能,这才叫异常;只有"归属地离我很远"这一条不构成异常——出差、旅游、家里重新拨号、公司走总部出口都可能。
- 确认站点前面有没有 CDN。如果日志里访客高度集中在少数几个城市、运营商只有那么两家,八成记录的是节点地址。这时要读
X-Forwarded-For里最左一项,但这个头是客户端可以自己填的,没做校验就不能用来判断来源。
五、几条必须记住的边界
- 城市级就到头了。一个城市里几百万人,"归属地等于嫌疑人所在地"是错误推论,用它做结论会冤枉人。
- 两个工具查同一个 IP 结果不一样是常态。往往说明这段地址近期被重新调配过,或其中一家的库比较旧。别把任何一次查询当成官方登记。
- 移动网络下的归属地可能是号卡归属地或骨干出口,而不是手机的当前位置。
- 适合拿它做什么:判断流量大致从哪来、筛掉明显的机房爬虫、给自己站点做访问地区分布、确认自己的出口 IP 有没有变。
- 不适合拿它做什么:认定某个人做了某件事、当作纠纷证据、在公开页面上展示"某个 IP 对应某地某人"——最后这条既是能力问题也是合规问题。
六、常见疑问
Q:一个 IP 能查到某个人的具体地址吗?
不能。公开查询只到城市级,而且 NAT 之后一个出口地址背后可能同时有几十上百个用户。要落到具体用户,只有运营商和有权机关在合法程序下做得到。
Q:为什么查出来的城市跟对方实际所在的地方不一样?
常见原因按概率排:对方走了代理或 VPN(你查到的是节点)、站点套了 CDN(你查到的是边缘节点)、IP 库更新滞后、对方公司共用异地专线出口、移动网络显示的是号码归属地。
Q:对方用了 VPN,显示的是哪里的地址?
显示的是 VPN 服务器所在地,通常还会伴随一个机房类的运营商标识。看到"某市 + 云服务商"这种组合,就该把它当代理出口理解,而不是当身份线索。
Q:网站后台统计的访问来源全是同一个城市,是数据错了吗?
更可能是配置问题:日志记录的是 CDN 回源地址或经过负载均衡的内网地址。先检查 X-Forwarded-For 有没有正确写入日志,再谈数据分析。
Q:IPv6 也能查归属地吗?
可以,IPv4 和 IPv6 都支持。IPv6 是 128 位,地址段划分方式和 IPv4 不同,库的覆盖程度各来源有差异,偶尔会比 IPv4 的结果更粗。
我朋友那件事最后是虚惊一场,但他学到的比我劝他的多:IP 归属地是线索不是结论。它能把范围从"全国"压到"某个城市 + 某类网络",剩下的判断得靠时间线、账号行为和其他日志一起对上。真遇到疑似盗号,先改密码、开二次验证、找平台查登录记录,比反复查一个 IP 属于哪有用得多。