问题描述
该笔记将记录:获取 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 文档。
相关链接
List of countries by IPv4 address allocation
China IP Address Ranges
参考文献
国内哪个精确到城市的 IP 地址库最精确完善?
IpAreaRoute/根据apnic数据文件制作的海外网段信息
NGINX Docs | Restricting Access by Geographical Location