Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >开源IP归属地查询及CDN厂商查询神器: nali多功能应用实战指南

开源IP归属地查询及CDN厂商查询神器: nali多功能应用实战指南

原创
作者头像
RokasYang
修改于 2025-01-27 04:50:32
修改于 2025-01-27 04:50:32
5232
举报
文章被收录于专栏:RokasYangRokasYang

一、前言

在网络技术蓬勃发展的今天,IP地址归属地查询在网络安全、网络优化、用户行为分析等诸多领域都有着至关重要的作用。nali是一个开源的IP地址归属地查询工具,凭借其强大的功能和便捷的操作,受到众多技术爱好者与专业人士的青睐,能够根据用户输入的IP地址快速查询其地理位置信息,或者通过cname地址查询CDN厂商等。本文将汇总nali的常见应用场景和使用案例作为参考手册,希望能帮助更好地发挥nali的效能,提升网络管理与运营的水平。

二、安装

点此进入nali的二进制releases页面,下载最新版本的nali即可,截止目前最新版本为v0.8.1。

代码语言:shell
AI代码解释
复制
cd /opt
wget https://github.com/zu1k/nali/releases/download/v0.8.1/nali-linux-amd64-v0.8.1.gz

之后解压给予执行权限并设置软链接到PATH路径下:

代码语言:bash
AI代码解释
复制
gzip -d nali-linux-amd64-v0.8.1.gz
chmod +x nali-linux-amd64-v0.8.1
ln -sf /opt/nali-linux-amd64-v0.8.1 /usr/bin/nali

执行nali -v正常输出版本,则说明已安装成功:

三、应用场景及使用案例

3.1 更新数据库

首当其冲,使用前应该更新下IP地址数据库,确保地址库尽可能新。

nali目前支持的地址库有:

  • 纯真 IPv4 离线数据库
  • ZX IPv6 离线数据库
  • Geoip2 城市数据库 (可选)
  • IPIP 数据库 (可选)
  • ip2region 数据库 (可选)
  • DB-IP 数据库 (可选)
  • IP2Location DB3 LITE 数据库 (可选)

执行以下命令即可更新所有可以自动更新的数据库:

代码语言:shell
AI代码解释
复制
nali update

地址库默认保存在/root/.local/share/nali/路径下,如果你有最新的地址库离线文件,也可以上传替换到这个路径下。

通过nali info打印nali的配置文件路径和数据库存放路径以及当前地址库的选择等更为详细的信息:

代码语言:shell
AI代码解释
复制
nali info

当然也可以指定更新某个数据库,比如只更新纯真地址库和cdn数据库可以是:

代码语言:shell
AI代码解释
复制
nali update --db qqwry,cdn

对于纯真地址库,如果nali更新的地址库比较老,可以考虑这个项目地址,下载相对较新的纯真地址库。

3.2 选择数据库

可以通过设置环境变量的方式来指定选择使用哪个数据库,IPv4的环境变量为NALI_DB_IP4,IPv6的环境变量为NALI_DB_IP6,各地址库所支持的环境变量取值如下:

地址库

变量内容

Geoip2

'geoip', 'geoip2'

Chunzhen

'chunzhen', 'qqwry'

IPIP

'ipip'

Ip2Region

'ip2region', 'i2r'

DBIP

'dbip', 'db-ip'

IP2Location

'ip2location'

示例,设置v4地址库为纯真数据库,v6地址库为geoip2:

代码语言:shell
AI代码解释
复制
export NALI_DB_IP4=qqwry
export NALI_DB_IP6=geoip2

3.3 语言版本

通过设置变量NALI_LANG来指定语言,设置非中文语言时目前仅支持GeoIP2这个地址库,这个地址库需要到MaxMind下载并放置到上面所说的nali数据库保存路径下,否则会报错读取不到数据库文件。

放置后,则可以正常通过指定语言来输出IP归属地,比如下面这种临时写法:

代码语言:shell
AI代码解释
复制
NALI_LANG=en NALI_DB_IP4=geoip2 nali 8.8.8.8

如果要永久生效,和上面一样通过export设置即可:

代码语言:bash
AI代码解释
复制
export NALI_LANG=en
export NALI_DB_IP4=geoip2

3.4 交互式查询

交互式查询,直接执行nali,输入一个IP回车后即可返回IP地址:

代码语言:bash
AI代码解释
复制
nali

键入quit即可退出:

3.5 查询DNS解析IP归属地及CDN厂商

通过nslookup或者dig命令拿到cname后,可以单独去查询这条cname属于哪个CDN厂商,只需要管道给nali即可,cname记录返回的A记录的归属地也会打印出来,比如:

代码语言:shell
AI代码解释
复制
dig cloud.tencent.com|nali

又或者nslookup:

代码语言:shell
AI代码解释
复制
nslookup cloud.tencent.com|nali

3.6 打印路径追踪的IP归属地

路径追踪可以是mtr、traceroute等,或者nexttrace/ntrace,nexttrace/ntrace本身支持地址库的查询以及AS号查询,如需详细了解,可以参照笔者的这篇文章

以mtr为例,mtr到目标IP,管道给nali即可打印路径跟踪中展示的每个IP归属地:

代码语言:shell
AI代码解释
复制
mtr -n <目标IP或域名> |nali

同理,traceroute可以是:

代码语言:shell
AI代码解释
复制
traceroute -n <目标IP或域名> |nali

以此类推,ping的输出管道递交给nali处理,同意可以打印IP归属信息:

代码语言:shell
AI代码解释
复制
ping baidu.com |nali

3.7 单次查询与批量查询归属地

单次查询IP归属地,上面提到过,nali后面接IP即可:

代码语言:bash
AI代码解释
复制
nali <IP地址或cname域名>

当然也可以通过echo管道给nali:

代码语言:shell
AI代码解释
复制
echo 1.1.1.1|nali

批量查询归属地,可以把IP列表写入到文件再给nali查询:

代码语言:shell
AI代码解释
复制
 nali < ip.txt

或者直接通过cat配合重定向的方式从stdin读取,无需写入文件:

代码语言:shell
AI代码解释
复制
cat <<- EOF |nali
此处贴IP,一行一个
EOF

3.8 统计ssh失败次数的IP归属地

一条命令直接统计失败次数并按照次数降序排序并打印归属地:

代码语言:shell
AI代码解释
复制
journalctl -u sshd | awk -F'[" :,]+' '/Failed password/{count[$(NF - 3)]++} END {for (ip in count) print count[ip], ip}'|sort -nr|nali

可以看到基本都是境外的IP再尝试登录,失败登录次数一览无余。通过journalctl的-S和-U参数可以筛选日志的时间范围,更多journalctl的用法,可以参照笔者的这篇文章,对于ssh服务暴力破解的攻击防护,可以参照这篇文章

3.9 统计web访问日志的IP次数和归属地

以Nginx为例,假设日志格式如下,第一行就是客户端IP:

代码语言:nginx
AI代码解释
复制
115.231.101.181 - - [29/Sep/2024:00:23:01 +0800] "GET / HTTP/1.1" 200 15 "-" "curl/7.79.1"
115.231.101.181 - - [29/Sep/2024:00:23:07 +0800] "POST /xmlrpc.php HTTP/1.1" 200 415 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0"
192.168.1.12 - - [29/Sep/2024:00:23:36 +0800] "GET / HTTP/2.0" 200 69876 "-" "Blackbox Exporter/0.22.0"
115.231.101.181 - - [29/Sep/2024:00:23:42 +0800] "GET / HTTP/1.1" 200 16 "-" "Go-http-client/1.1"
115.231.101.181 - - [29/Sep/2024:00:24:01 +0800] "GET / HTTP/1.1" 200 15 "-" "curl/7.79.1"
192.168.1.12 - - [29/Sep/2024:00:24:36 +0800] "GET / HTTP/2.0" 200 69876 "-" "Blackbox Exporter/0.22.0"
115.231.101.181 - - [29/Sep/2024:00:24:43 +0800] "GET / HTTP/1.1" 200 16 "-" "Go-http-client/1.1"
115.231.101.181 - - [29/Sep/2024:00:25:01 +0800] "GET / HTTP/1.1" 200 15 "-" "curl/7.79.1"
192.168.1.12 - - [29/Sep/2024:00:25:36 +0800] "GET / HTTP/2.0" 200 69876 "-" "Blackbox Exporter/0.22.0"
115.231.101.181 - - [29/Sep/2024:00:25:42 +0800] "GET / HTTP/1.1" 200 16 "-" "Go-http-client/1.1"

基于此,统计IP出现次数并降序排序并打印归属地可以是:

代码语言:shell
AI代码解释
复制
awk '{count[$1]++} END {for (ip in count) print count[ip],ip}' /home/wwwlogs/access.log |sort -nr|nali|more

3.10 IPv6归属地查询

上面讲的内容基本都是以IPv4为例,为了防止给大家一种不支持V6的错觉,顺便也提下IPV6。

用法和上面如出一辙,mtr和traceroute为例:

代码语言:shell
AI代码解释
复制
mtr -n -6 www.qq.com|nali
traceroute -I -n -6 www.qq.com|nali

ipv6 ping管道给nali查询并输出归属地:

代码语言:shell
AI代码解释
复制
ping6 www.qq.com|nali

dig解析域名并输出cdn厂商和AAAA记录归属地:

代码语言:shell
AI代码解释
复制
dig AAAA www.baidu.com|nali

附带PDF版本:

开源IP归属地查询及CDN厂商查询: nali多功能应用实战指南.pdf

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
🤙🤙🤙
🤙🤙🤙
回复回复点赞举报
回复回复点赞举报
推荐阅读
太强了!这款开源终端工具可查询 IP 信息 ...
在 Linux 下,有dig、nslookup、traceroute等多种非常实用的网络调试工具。
杰哥的IT之旅
2022/05/17
9950
nali一个可以查询IP归属和CDN的命令
至于说用途的话,如果编写命令行工具或者Alfred插件的话,可以派上用场,能够方便的查询我们想要的信息。换另外一个角度来讲,也可以看看查询IP和CDN信息的思路,如何获取这些数据,准确性达到什么程度等等~
追马
2020/07/22
1.7K0
[喵咪开源软件推荐(3)]全球IP库-GeoLite2-City
[喵咪开源软件推荐(3)]全球IP库-GeoLite2-City #w-blog博客 哈喽大家好啊!喵咪开源软件推荐(3)终于和大家见面了,这次我们来说说什么呢?大家有没有遇到过这样一个场景,当你出国
喵了个咪233
2018/03/02
5.7K0
[喵咪开源软件推荐(3)]全球IP库-GeoLite2-City
全网的 IP 归属地显示,带你5分钟加上,就是这么简单!
最近,继新浪微博之后,今日头条、腾讯、抖音、知乎、快手、小红书、百家号等各大平台陆陆续续都上线了"网络用户IP地址显示功能",境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示;
一行Java
2022/05/17
2.4K0
全网的 IP 归属地显示,带你5分钟加上,就是这么简单!
IP 归属地查询 API 教你从0到1顺着网线找到键盘侠
前一段时间,微博、头条、抖音、知乎等各大互联网平台相继推出了“个人主页、评论显示 IP 属地,用户不能自己开启或关闭”的功能,那么这些平台是如何获取到用户的 IP 地址呢?
不是海碗
2023/03/24
1.2K0
IP 归属地查询 API 教你从0到1顺着网线找到键盘侠
深度剖析可视化网络路径追踪神器NextTrace - 路径探测的新生独秀
NextTrace为一款轻量化的开源可视化路由跟踪工具,目前支持ICMP、TCP、UDP等多种协议,并通过地址库显示每一跳节点的AS号、归属地情况,并通过路由可视化生成地图路径标注,光是这几样功能可谓对于网络故障定位起到非常大的作用,不排除后续会纳入到各个Linux发行版软件源中。
RokasYang
2023/04/14
12.3K1
深度剖析可视化网络路径追踪神器NextTrace - 路径探测的新生独秀
根据ip查找ISP运营商和归属地的几种方法
一般来说都是根据网上流传的各种IP库来解析获取对应的ISP和归属地的, 除非有实力的公司自己从运营商获取数据,然后做数据分析得到。 下面介绍前者,如何利用网上的IP库获取这类信息: 1、利用 ip138.com 获取相关信息: decli@~ 14:34:31> curl http://iframe.ip138.com/city.asp 2>/dev/null|sed -n 's#.*<center>\|</center>.*##gp' 您的IP是:[113.108.76.174] 来自
用户1177713
2018/02/24
16.3K0
新来个技术总监要我做一个 IP 属地功能~
细心的朋友应该会发现,最近,继新浪微博之后,头条、腾讯、抖音、知乎、快手、小红书等各大平台陆陆续续都上线了“网络用户 IP 地址显示功能”,境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示。
架构师修炼
2022/12/07
4990
新来个技术总监要我做一个 IP 属地功能~
zblog利用ip地址物理化插件实现评论显示IP归属地的方法(最新兼容IPV4/V6)
上文提到了最近一直在钻研评论区显示IP归属地的方案,最终还是抛弃了在线API接口的方案,因为不会设置缓存,每次都是直接查询那么反馈回来的信息自然就会慢很多,可能几个评论还有,但是文章出现几十甚至上百的评论那就可想而知得拖拉到什么程度,所以今天利用zblog应用中心插件“ip地址物理化(纯真版)”来实现此功能。
李洋博客
2023/03/03
8480
zblog利用ip地址物理化插件实现评论显示IP归属地的方法(最新兼容IPV4/V6)
介绍一个可以离线查询 IP 来源和 ISP 信息的终端利器
Nali 是一个可以自动解析这些工具stdout中的IP并附上所属ISP和地理信息。
民工哥
2020/09/18
1.6K0
全网上线 IP 归属地功能,一文教你如何实现
细心的朋友们可能已经发现了,先在抖音、知乎、快手、小红书等这些平台已经上线了“网络用户显示 IP 的功能”,境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示。
程序员蜗牛
2024/03/10
2050
全网上线 IP 归属地功能,一文教你如何实现
开源:推荐一个不错的离线IP地址定位库
来源 | https://gitee.com/lionsoul/ip2region
杰哥的IT之旅
2020/07/22
6.5K0
用上开源库,给自己的网站加上IP属地!
细心的小伙伴可能会发现,最近蘑菇新上线了 IP 属地的功能,小伙伴在发表动态、发表评论以及聊天的时候,都会显示自己的 IP 属地信息
陌溪
2022/10/27
7140
openresty集成ip2region识别ip服务商
《openresty基于lua/geoIp/redis实现ip限制》中介绍了基于geoIp库识别ip所属国家信息从而进行ip过滤和限制,目前有诉求需要追溯的ip服务商的信息进行过滤,比如识别到ip提供商是亚马逊机房,那么进行限制。
叔牙
2023/02/26
1.4K0
openresty集成ip2region识别ip服务商
Shell 命令行统计 apache 网站日志访问IP以及IP归属地
FungLeo
2018/01/08
1.5K0
老板要我做一个 IP 属地功能!
点击上方“芋道源码”,选择“设为星标” 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~ 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 RocketMQ 源码解析 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析 作业调度中间件 Elastic-Job 源码解析 分布式事务中间件 TCC-Transaction
芋道源码
2022/07/19
9270
老板要我做一个 IP 属地功能!
手把手教你实现显示IP归属地
近年来,根据《国家互联网用户账号名称信息管理规定》要求互联网用户账号服务平台标注IP地址属地信息,微信公众号、抖音、知乎各大平台纷纷都上线了IP归属地的功能。本文就带大家实现该功能,国内的用户精确到省份,国外用户精确到国家。
用户8236825
2023/03/27
1.3K0
IP归属地查询API详解
在互联网时代,IP地址不仅是网络设备的唯一标识,更是连接虚拟世界与现实世界的桥梁。IP归属地查询API(应用程序编程接口)便是利用IP地址的这一特性,为用户提供准确、快速的地理位置信息。本文将详细介绍IP归属地查询API的原理、应用、优势以及使用教程,帮助读者更好地理解和使用这一技术。
用户10428865
2024/06/28
7910
SpringBoot根据IP地址获取归属地并绕过Nginx
现在,各大平台都新增了评论区显示发言者ip归属地的功能,例如哔哩哔哩,微博,知乎等等。本文主要讲解Java中是如何获取ip属地的。
Jensen_97
2023/07/20
1.3K0
SpringBoot根据IP地址获取归属地并绕过Nginx
Python批量化获取ip地址归属地
今天碰到个需求,拿nuclei扫出的洞需要判断一下是哪些国家的目标,这总不能手工一个个去看吧,好几千个目标一个个看那简直蠢到不行,既然这样就拿python写一个脚本来自动化判断咯。
yulate
2023/05/02
1.7K0
Python批量化获取ip地址归属地
推荐阅读
相关推荐
太强了!这款开源终端工具可查询 IP 信息 ...
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档