#range #cloud #ip #filter #service #merge #aws

app netrange

一个简单的命令行工具,用于检索、过滤和合并各种云服务提供商的相邻IP范围

5个版本 (破坏性更新)

0.5.0 2021年4月15日
0.4.0 2021年4月11日
0.3.0 2021年4月11日
0.2.0 2021年4月11日
0.1.0 2021年4月10日

#60 in #merge

MIT/Apache

110KB
2K SLoC

netrange

netrange是一个命令行工具,能够获取常用云服务使用的IP范围列表,根据云提供商提供的属性过滤这些列表,然后可选地最小化结果范围。

Crates.io Bors enabled

支持以下云服务

  • AWS
  • Azure
  • Backblaze
  • Cloudflare
  • DigitalOcean
  • GCP
  • Github
  • Google(包括GCP在内的所有Google服务)

例如

netrange cloud get-merge aws --filter "return service == 'EC2' and region == 'us-east-1'"

将下载AWS当前正在使用的IP范围列表,过滤掉除了us-east-1区域中用于EC2服务器的范围之外的所有内容,然后通过合并相邻的IP范围来最小化结果。

安装

预编译的二进制文件可用于Linux、Mac OS和Windows(32位和64位)的发布页面

或者,您可以从源代码编译

  1. 下载并安装Rust.

  2. 然后运行

    cargo install netrange
    

合并和读取

netrange支持“合并”和“读取”操作。两种操作都将读取云提供商发布的范围集,并将范围写入STDOUT,每行一个。但是,“合并”操作将通过合并相邻的范围来最小化输出。而“读取”操作不会合并任何范围,云服务提供的范围列表就是输出内容。

过滤和选择

netrange支持使用LUA脚本来从云服务发布的完整范围集中提取感兴趣的小范围集。有两个可用的操作:过滤和选择。过滤器程序应该对应该丢弃的范围返回False值,对其他范围返回True值。选择程序在过滤之后运行,应该对必须在输出中出现的范围返回True值,对可能出现在输出中但不必出现范围返回False值。

例如

netrange cloud get-read aws --filter "return service == 'EC2' and region == 'us-east-1'"

目前返回124个范围,因为这是AWS为us-east-1区域的EC2服务器发布的IP范围的数量。

netrange cloud get-merge aws --filter "return service == 'EC2' and region == 'us-east-1'"

目前返回112个范围,因为AWS发布的124个范围中有一些是相邻的,可以合并以生成更小的输出集。

netrange cloud get-merge aws --select "return service == 'EC2' and region == 'us-east-1'"

当前返回90个范围。我们获得较少的输出范围是因为我们没有丢弃非EC2和非us-east-1的范围,而是利用它们来最小化输出集:一些EC2范围之间可能存在其他服务使用的间隙。通过使用这些范围来填补这些间隙,我们可以更积极地合并范围。当然,这种权衡是输出不再仅代表EC2范围。

不同的云服务提供不同的可用于过滤和选择的属性。可以使用 cloud filter-help <service> 子命令来查看特定服务可用的属性。

命令

云获取

cloud get 子命令将获取由给定服务发布的IP范围所包含的源文件,并将其写入STDOUT。这通常是一个JSON文件 - 但也可以是其他格式。

示例

netrange cloud get aws

云读取

cloud read 子命令将读取服务提供的范围文件(可能通过 cloud get 获取),并将所有IP范围,每行一个,写入STDOUT。

输出中不会合并相邻的范围。

打印的范围可以可选地通过云服务提供的属性进行过滤。

示例

netrange cloud read aws aws-ip-ranges.json

云合并

cloud merge 子命令将读取服务提供的范围文件(可能通过 cloud get 获取),并将所有IP范围,每行一个,写入STDOUT。

输出中会合并相邻的范围。

可以使用过滤和选择LUA程序来控制输出中哪些范围被表示。

示例

netrange cloud merge aws aws-ip-ranges.json

云获取读取

cloud get-read 子命令是首先使用 cloud get 子命令,然后将结果输入到 cloud read 子命令的快捷方式。

netrange cloud cloud-get aws

云获取合并

cloud get-merge 子命令是首先使用 cloud get 子命令,然后将结果输入到 cloud merge 子命令的快捷方式。

netrange cloud cloud-merge aws

云过滤帮助

cloud filter-help 子命令将打印关于给定云服务可用于过滤和选择的属性的信息到STDOUT。

netrange cloud filter-help aws

合并

merge 子命令将从给定文件(如果没有文件则使用STDIN)读取IP范围列表,合并相邻的范围,然后打印结果范围到STDOUT。

netrange merge input-ranges.txt

最小Rust版本策略

netrange支持rustc 1.45及以后的版本。

最小支持的rustc版本可能通过小版本修订进行提升。

许可协议

本项目根据您的选择,受以下任一许可协议的许可:

依赖关系

约10-23MB
约345K SLoC