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
110KB
2K SLoC
netrange
netrange是一个命令行工具,能够获取常用云服务使用的IP范围列表,根据云提供商提供的属性过滤这些列表,然后可选地最小化结果范围。
支持以下云服务
- 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位)的发布页面。
或者,您可以从源代码编译
-
然后运行
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版本可能通过小版本修订进行提升。
许可协议
本项目根据您的选择,受以下任一许可协议的许可:
- Apache License,版本2.0(《LICENSE-APACHE》或《https://www.apache.org/licenses/LICENSE-2.0》)
- MIT许可(《LICENSE-MIT》或《https://opensource.org/licenses/MIT》)
。
依赖关系
约10-23MB
约345K SLoC