Nali:一個(gè)離線查詢IP地理信息和CDN提供商的終端利器
什么是 Nali
dig、nslookup、traceroute 等都是非常實(shí)用的網(wǎng)絡(luò)調(diào)試工具,Nali 是一個(gè)可以自動(dòng)解析這些工具 stdout 中的 IP 并附上所屬 ISP 和地理信息,對(duì)這些已是瑞士軍刀般的工具可謂如虎添翼。
Nali 取自中文「哪里」。Nali 一開始是數(shù)年前由 surfchen 用 C 和 Perl 寫成的小工具(C 用于解析純真 IP 數(shù)據(jù)庫(kù),Perl 用于解析 stdout),如今已經(jīng)失傳。
今天給大家介紹兩款基于 GO 語(yǔ)言和 Nodejs 開發(fā)的,且具有更多高級(jí)功能的新一代 Nali。
Nali CLI
Nali CLI 采用 Nodejs 開發(fā),在安裝之前,你的環(huán)境必須已經(jīng)具備 Nodejs 環(huán)境。
項(xiàng)目地址:
- GitHub: https://github.com/sukkaw/nali-cli
- 官網(wǎng):https://nali.skk.moe/
安裝
對(duì)于環(huán)境中有 Node.js 的,可以直接通過 NPM 和 Yarn 安裝:
- # NPM
- $ npm i nali-cli -g
- # Yarn
- $ yarn global add nali-cli
Nali CLI 也有預(yù)編譯好的供 macOS x64 和 Linux x64 的二進(jìn)制文件,可以在 GitHub Repo 中的 👉bin 目錄中下載。
首次運(yùn)行 Nali CLI 時(shí)會(huì)自動(dòng)下載所需的 qqwry.dat 到 $HOME/.config/nali-cli/ 目錄下。
常用命令行語(yǔ)法
- $ nali --help
- Usage: nali <command> [options]
- Options:
- -v, --version 版本信息
- -h, --help output usage information
- Commands:
- parse 解析 stdin 或參數(shù)中的 IP 信息 (默認(rèn))
- update 更新 IP 庫(kù)
- help [cmd] display help for [cmd]
- $ nali update --help
- Usage: update [options]
- 更新 IP 庫(kù) (qqwry.dat)
- Options:
- -r, --remote 獲取最新 IP 庫(kù)版本信息
- -f, --force 強(qiáng)制更新 IP 庫(kù)
- -y, --yes 直接更新 IP 庫(kù)
- -h, --help output usage information
使用
Nali CLI 支持從傳入的參數(shù)中解析 IP:
- $ nali 11.4.5.14
- 11.4.5.14 [美國(guó) 俄亥俄州哥倫布市 DoD 網(wǎng)絡(luò)信息中心]
- $ nali Cloudflare 1.0.0.1 1.1.1.1
- Cloudflare 1.1.1.1 [美國(guó) APNIC&CloudFlare 公共 DNS 服務(wù)器] 1.0.0.1 [美國(guó) APNIC&CloudFlare 公共 DNS 服務(wù)器]
- $ nali 114.514.191.9 114.5.1.4
- 114.514.191.8 114.5.1.4 [印度尼西亞]
除此以外,Nali CLI 內(nèi)置了以下幾個(gè)常用工具:
- nali-dig
- nali-nslookup
- nali-ping
- nali-tracepath
- nali-traceroute
注意,上述工具只是 Wrapper,使用時(shí)仍然需要安裝原始程序。比如要使用 nali-dig 和 nali-nslookup 需要先安裝 Bind (dnsutils)。
- $ nali-nslookup nali.skk.moe 1.1.1.1
- Server: 1.1.1.1 [美國(guó) APNIC&CloudFlare 公共 DNS 服務(wù)器]
- Address: 1.1.1.1 [美國(guó) APNIC&CloudFlare 公共 DNS 服務(wù)器]#53
- Non-authoritative answer:
- Name: nali.skk.moe
- Address: 104.18.100.28 [美國(guó) CloudFlare 公司 CDN 節(jié)點(diǎn)]
- Name: nali.skk.moe
- Address: 104.18.101.28 [美國(guó) CloudFlare 公司 CDN 節(jié)點(diǎn)]
- Name: nali.skk.moe
- Address: 2606:4700::6812:641c
- Name: nali.skk.moe
- Address: 2606:4700::6812:651c
Nali CLI 還支持從外部的 stdin 中解析和查詢 IP 信息,因此像 mtr 這類未被 Nali CLI 包裝的工具也可以使用:
- # 這里以 dig 為例
- $ dig nali.skk.moe @1.1.1.1 +short | nali
- 104.18.100.28 [美國(guó) CloudFlare 公司 CDN 節(jié)點(diǎn)]
- 104.18.101.28 [美國(guó) CloudFlare 公司 CDN 節(jié)點(diǎn)]
對(duì)于 mtr 等,還可以自行創(chuàng)建 nali-mtr 文件并添加到 PATH 中:
- #!/bin/sh
- mtr $@ 2>&1 | nali
也可以直接在 .bashrc 或 .zshrc 中注冊(cè) nali-mtr:
- nali-mtr() {
- mtr $@ 2>&1 | nali
- }
Nali CLI 也可以更新 qqwry.dat:
- $ nali upadte
Nali (Go 版本)
Nali (Go 版本)是在 Sukka 的 Nodejs 版本上進(jìn)行改良的,它在原有功能的基礎(chǔ)上增加了對(duì) IPv6 的支持,并且增加了 Geoip2 數(shù)據(jù)庫(kù)。
項(xiàng)目地址:
- GitHub: https://github.com/zu1k/nali
支持的功能
- 純真 IPv4 離線數(shù)據(jù)庫(kù)
- ZX IPv6 離線數(shù)據(jù)庫(kù)
- Geoip2 城市數(shù)據(jù)庫(kù) (可選)
- IPIP 數(shù)據(jù)庫(kù) (可選)
- CDN 服務(wù)提供商查詢
- 支持管道處理
- 支持交互式查詢
- 同時(shí)支持 IPv4 和 IPv6
- 查詢完全離線
- 全平臺(tái)支持
安裝
- 從源碼安裝
Nali 需要預(yù)先安裝 Go. 安裝后可以從源碼安裝軟件:
- $ go get -u -v github.com/zu1k/nali
2. 下載預(yù)編譯的可執(zhí)行程序(推薦)
直接從項(xiàng)目的 👉Release 頁(yè)面下載預(yù)編譯好的可執(zhí)行程序,你只需要選擇適合你系統(tǒng)和硬件架構(gòu)的版本下載,解壓后直接運(yùn)行即可。
常用命令語(yǔ)法
- $ nali --help
- Usage:
- nali [flags]
- nali [command]
- Available Commands:
- cdn Query cdn service provider
- help Help about any command
- parse Query IP information
- update update chunzhen ip database
- Flags:
- -h, --help help for nali
- -t, --toggle Help message for toggle
- Use "nali [command] --help" for more information about a command.
使用
第一次使用時(shí)會(huì)需要點(diǎn)時(shí)間,因?yàn)橐螺d純真和 CDN 相關(guān)數(shù)據(jù)庫(kù)。
- $ nali
- 2020/08/20 17:37:14 文件不存在,嘗試從網(wǎng)絡(luò)獲取最新純真 IP 庫(kù)
- 2020/08/20 17:37:32 已將最新的 純真IP庫(kù) 保存到本地: /Users/Mike/.nali/qqwry.dat
- 2020/08/20 17:37:32 文件不存在,嘗試從網(wǎng)絡(luò)獲取最新ZX IPv6數(shù)據(jù)庫(kù)
- 2020/08/20 17:37:33 已將最新的 ZX IPv6數(shù)據(jù)庫(kù) 保存到本地: /Users/Mike/.nali/ipv6wry.db
- 2020/08/20 17:37:33 文件不存在,嘗試從網(wǎng)絡(luò)獲取最新CDN數(shù)據(jù)庫(kù)
- 2020/08/20 17:37:34 已將最新的 CDN數(shù)據(jù)庫(kù) 保存到本地: /Users/Mike/.nali/cdn.json
- 查詢一個(gè) IP 的地理信息
- $ nali 1.2.3.4
- 1.2.3.4 [澳大利亞 APNIC Debogon-prefix網(wǎng)絡(luò)]
- # 或者使用管道
- $ echo IP 6.6.6.6 | nali
- IP 6.6.6.6 [美國(guó) 亞利桑那州華楚卡堡市美國(guó)國(guó)防部網(wǎng)絡(luò)中心]
2. 同時(shí)查詢多個(gè)IP的地理信息
- $ nali 1.2.3.4 4.3.2.1 123.23.3.0
- 1.2.3.4 [澳大利亞 APNIC Debogon-prefix網(wǎng)絡(luò)]
- 4.3.2.1 [美國(guó) 新澤西州紐瓦克市Level3Communications]
- 123.23.3.0 [越南 越南郵電集團(tuán)公司]
3. 交互式查詢
使用 exit 或 quit 退出查詢。
- $ nali
- 123.23.23.23
- 123.23.23.23 [越南 越南郵電集團(tuán)公司]
- 1.0.0.1
- 1.0.0.1 [美國(guó) APNIC&CloudFlare公共DNS服務(wù)器]
- 8.8.8.8
- 8.8.8.8 [美國(guó) 加利福尼亞州圣克拉拉縣山景市谷歌公司DNS服務(wù)器]
- quit
4. 與 dig 命令配合使用
需要你系統(tǒng)中已經(jīng)安裝好 dig 程序。
- $ dig nali.lgf.im +short | nali
- 104.28.2.115 [美國(guó) CloudFlare公司CDN節(jié)點(diǎn)]
- 104.28.3.115 [美國(guó) CloudFlare公司CDN節(jié)點(diǎn)]
- 172.67.135.48 [美國(guó) CloudFlare節(jié)點(diǎn)]
5. 與 nslookup 命令配合使用
- 需要你系統(tǒng)中已經(jīng)安裝好 nslookup 程序。
- $ nslookup nali.lgf.im 8.8.8.8 | nali
- Server: 8.8.8.8 [美國(guó) 加利福尼亞州圣克拉拉縣山景市谷歌公司DNS服務(wù)器]
- Address: 8.8.8.8 [美國(guó) 加利福尼亞州圣克拉拉縣山景市谷歌公司DNS服務(wù)器]#53
- Non-authoritative answer:
- Name: nali.lgf.im
- Address: 104.28.3.115 [美國(guó) CloudFlare公司CDN節(jié)點(diǎn)]
- Name: nali.lgf.im
- Address: 104.28.2.115 [美國(guó) CloudFlare公司CDN節(jié)點(diǎn)]
- Name: nali.lgf.im
- Address: 172.67.135.48 [美國(guó) CloudFlare節(jié)點(diǎn)]
6. 與任意程序配合使用
因?yàn)?nali 支持管道處理,所以可以和任意程序配合使用。
- $ bash abc.sh | nali
Nali 將在 IP 后面插入 IP 地理信息,CDN 域名后面插入 CDN 服務(wù)提供商信息。
7. 支持 IPv6
- 和 IPv4 用法完全相同。
- $ nslookup google.com | nali
- Server: 127.0.0.53 [局域網(wǎng) IP]
- Address: 127.0.0.53 [局域網(wǎng) IP]#53
- Non-authoritative answer:
- Name: google.com
- Address: 216.58.211.110 [美國(guó) Google全球邊緣網(wǎng)絡(luò)]
- Name: google.com
- Address: 2a00:1450:400e:809::200e [荷蘭Amsterdam Google Inc. 服務(wù)器網(wǎng)段]
8. 查詢 CDN 服務(wù)提供商
因?yàn)?CDN 服務(wù)通常使用 CNAME 的域名解析方式,所以推薦與 nslookup 或者 dig 配合使用,在已經(jīng)知道 CNAME 后可單獨(dú)使用。
- 只查詢 CDN 服務(wù)提供商
- $ nslookup www.gov.cn | nali cdn
- Server: 127.0.0.53
- Address: 127.0.0.53#53
- Non-authoritative answer:
- www.gov.cn canonical name = www.gov.cn.bsgslb.cn [白山云 CDN].
- www.gov.cn.bsgslb.cn [白山云 CDN] canonical name = zgovweb.v.bsgslb.cn [白山云 CDN].
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 185.232.56.148
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 185.232.56.147
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 2001:428:6402:21b::6
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 2001:428:6402:21b::5
- 查詢所有信息
- $ nslookup www.gov.cn | nali
- Server: 127.0.0.53 [局域網(wǎng) IP]
- Address: 127.0.0.53 [局域網(wǎng) IP]#53
- Non-authoritative answer:
- www.gov.cn canonical name = www.gov.cn.bsgslb.cn [白山云 CDN].
- www.gov.cn.bsgslb.cn [白山云 CDN] canonical name = zgovweb.v.bsgslb.cn [白山云 CDN].
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 103.104.170.25 [新加坡 ]
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 2001:428:6402:21b::5 [美國(guó)Louisiana州Monroe Qwest Communications Company, LLC (CenturyLink)]
- Name: zgovweb.v.bsgslb.cn [白山云 CDN]
- Address: 2001:428:6402:21b::6 [美國(guó)Louisiana州Monroe Qwest Communications Company, LLC (CenturyLink)]
- 單獨(dú)使用
需要提前查詢到 CNAME 域名
- $ nali cdn cdn.somecdncname.com
一些使用技巧
- 更新純真數(shù)據(jù)庫(kù)
- $ nali update
- 2020/07/17 12:53:46 正在下載最新純真 IP 庫(kù)...
- 2020/07/17 12:54:05 已將最新的純真 IP 庫(kù)保存到本地 /root/.nali/qqwry.dat
2. 使用自定義 IP 庫(kù)
使用自定義 IP 庫(kù)前,你需要設(shè)置環(huán)境變量:NALI_DB。目前支持的變量?jī)?nèi)容:
- Geoip2 ['geoip', 'geoip2', 'geo']
- Chunzhen ['chunzhen', 'qqip', 'qqwry']
使用三方 IP 庫(kù),需要手動(dòng)提前下載相應(yīng)的 IP 數(shù)據(jù)庫(kù)。
- # Windows 平臺(tái)
- ## 使用geoip數(shù)據(jù)庫(kù)
- set NALI_DB=geoip
- ## 使用ipip數(shù)據(jù)庫(kù)
- set NALI_DB=ipip
- # Linux平臺(tái)
- ## 使用geoip數(shù)據(jù)庫(kù)
- export NALI_DB=geoip
- ## 使用ipip數(shù)據(jù)庫(kù)
- export NALI_DB=ipip