「IP」- 判断 IP 地址归属地

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:获取 IP 地址归属地(所属国家)的方法,以及相关问题的解决方案。

解决方案

搜索引擎、第三方接口

如果是非编程使用:我们能够在搜索引擎中输入网络地址,然后搜索引擎会返回网络地址的归属地。

如果作为编程使用:我们能够使用第三方接口,比如:https://qifu.baidu.com/?activeKey=SEARCH_IP

通过 GeoLite2 数据库

MAXMIND 提供地址数据库,我们能够使用这个数据库文件进行查询。很多开源软件都在使用 MAXMIND 提供的 GeoLite 数据库,比如 Nginx ELasticsearch 组件。

首先,注册 MAXMIND 帐号(GeoLite2 Sign Up),否则无法下载数据库文件(以往无需注册)。

然后,访问 Download Files 页面,以下载数据库文件:https://www.maxmind.com/en/accounts/current/geoip/downloads

# 下载 GeoLite2 City .mmdb 文件(手动下载)
# 下载 GeoLite2 Country .mmdb 文件(手动下载)

# 解压数据库文件
tar -xf GeoLite2-City_20210525.tar.gz 
tar -xf GeoLite2-Country_20210525.tar.gz 

安装 mmdb 查询工具:

apt-get install mmdb-bin # Ubuntu

在数据库中查询 IP 地址归属地:

# mmdblookup --file GeoLite2-Country_20210525/GeoLite2-Country.mmdb --ip 121.31.152.66
...

# mmdblookup --file GeoLite2-Country_20210525/GeoLite2-Country.mmdb --ip 121.31.152.66 country names zh-CN

  "中国" <utf8_string>

# mmdblookup --file GeoLite2-City_20210525/GeoLite2-City.mmdb --ip 121.31.152.66 city names zh-CN

  "珠海市" <utf8_string>

数据库文件的自动更新,参考 Updating GeoIP and GeoLite Databases 文档。

参考文献

国内哪个精确到城市的 IP 地址库最精确完善?
IpAreaRoute/根据apnic数据文件制作的海外网段信息
NGINX Docs | Restricting Access by Geographical Location