三千年读史无外乎功名利禄,九万里悟道终归是诗酒田园。

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

一、前言

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

二、安装

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

cd /opt
wget https://github.com/zu1k/nali/releases/download/v0.8.1/nali-linux-amd64-v0.8.1.gz

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

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 数据库 (可选)

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

nali update

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

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

nali info

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

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:

export NALI_DB_IP4=qqwry
export NALI_DB_IP6=geoip2

3.3 语言版本

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

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

NALI_LANG=en NALI_DB_IP4=geoip2 nali 8.8.8.8

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

export NALI_LANG=en
export NALI_DB_IP4=geoip2

3.4 交互式查询

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

nali

键入quit即可退出:

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

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

dig cloud.tencent.com|nali

又或者nslookup:

nslookup cloud.tencent.com|nali

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

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

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

mtr -n <目标IP或域名> |nali

同理,traceroute可以是:

traceroute -n <目标IP或域名> |nali

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

ping baidu.com |nali

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

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

nali <IP地址或cname域名>

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

echo 1.1.1.1|nali

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

 nali < ip.txt

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

cat <<- EOF |nali
此处贴IP,一行一个
EOF

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

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

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:

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出现次数并降序排序并打印归属地可以是:

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为例:

mtr -n -6 www.qq.com|nali
traceroute -I -n -6 www.qq.com|nali

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

ping6 www.qq.com|nali

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

dig AAAA www.baidu.com|nali

赞(0)
转载请注明出处:RokasYang's Blog » 开源IP归属地查询及CDN厂商查询: