netaddr という gem がありまして、色々便利なのですが AWSer 的にも便利です。

使い方も超簡単なのでワンライナーで紹介。

統合

なんといっても Security Group 1つあたりのルール個数制限(最大50)のやりくりで苦労してる人に朗報です。 /32/31, /30 になるだけでだいぶ減らせるはず。

ruby -r netaddr -e 'puts NetAddr.merge(%w(192.168.0.1/32 192.168.0.2/32 192.168.0.3/32 192.168.0.4/32 192.168.0.5/32 192.168.0.6/32 192.168.0.7/32 192.168.0.8/32 192.168.0.9/32))'
192.168.0.1/32
192.168.0.2/31
192.168.0.4/30
192.168.0.8/31
# 9つのレンジが4つまで統合された

分割

/8, /16, /24, /32 にしか対応していない AWS WAF の IP での制限 を使うときに /27 くらいのレンジを /32 にバラすのに便利でしょう。

ruby -r netaddr -e 'puts NetAddr::CIDR.create("192.168.0.0/29").enumerate'
192.168.0.0
192.168.0.1
192.168.0.2
192.168.0.3
192.168.0.4
192.168.0.5
192.168.0.6
192.168.0.7

元記事はこちら

NetAddr で CIDR を統合・分割する