#ip-address #asn #ip #networking

asn-db

从 https://iptoasn.com/ 的数据库中查找与IP地址匹配的ASN信息

5个版本

0.1.4 2020年5月1日
0.1.3 2020年4月30日
0.1.2 2019年8月27日
0.1.1 2019年4月25日
0.1.0 2019年2月20日

#950 in 数据库接口

Download history 48/week @ 2024-03-11 6/week @ 2024-03-18 22/week @ 2024-03-25 42/week @ 2024-04-01 20/week @ 2024-04-08 5/week @ 2024-04-15 10/week @ 2024-04-22 16/week @ 2024-04-29 13/week @ 2024-05-06 52/week @ 2024-05-13 102/week @ 2024-05-20 20/week @ 2024-05-27 93/week @ 2024-06-03 85/week @ 2024-06-10 77/week @ 2024-06-17 84/week @ 2024-06-24

341 每月下载量
用于 asn-tools

MIT 协议

17KB
291

Latest Version Documentation License

asn-db 是一个Rust库,可以从 ASN 数据库 (ip2asn-v4.tsv 文件) 中加载和索引来自 IPtoASN 网站的数据库。

一旦加载,就可以用来查找包含以下内容的IP地址的 ASN 记录:

  • 网络基础IP地址和掩码(例如 ipnet::Ipv4Net 值,如 1.1.1.0/24),
  • 分配的AS号码(例如 13335),
  • 所有者国家代码(例如 US),
  • 所有者信息(例如 CLOUDFLARENET - Cloudflare, Inc.)。

还可以将数据库的优化二进制表示写入文件,以便快速加载。注意,目前只支持IPv4记录。

示例

ip2asn-v4.tsv 文件加载数据库并查找IP地址 1.1.1.1

use asn_db::Db;
use std::fs::File;
use std::io::BufReader;

let db = Db::form_tsv(BufReader::new(File::open("ip2asn-v4.tsv").unwrap())).unwrap();
let record = db.lookup("1.1.1.1".parse().unwrap()).unwrap();

println!("{:#?}", record);
println!("{:#?}", record.network());

这将打印

Record {
    ip: 16843008,
    prefix_len: 24,
    as_number: 13335,
    country: "US",
    owner: "CLOUDFLARENET - Cloudflare, Inc."
}
1.1.1.0/24

依赖项

~2–2.7MB
~44K SLoC