dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

あるIPv4アドレスがAWSのものか調べる

まず、最新のAWSIPv4範囲を取得する。

curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq --raw-output '.prefixes[].ip_prefix' | sort | uniq > ip-list

次にrubyスクリプトを書く

#! /usr/bin/env ruby

# 含まれているか確認したいIPv4アドレスが列挙されているファイルを配列として読み込んでおく
check_ip_list = File.readlines('check-list', chomp: true)

# AWSのIPのCIDR 1行ごとに検査 
File.foreach('ip-list', chomp: true){|line|
    cidr = IPAddr.new(line)
    check_ip_list.each{|ip|
    if cidr.include?(ip)
            printf("IP %s is member of CIDR %s/%d\n", ip, cidr, cidr.prefix)
        end
    }
}

ip-check.rbなど適当な名前をつけて保存する。 実行権限を付加しておく。

chmod 755 ip-check.rb

check-listファイルに検査したいIPのリストを書いておく。例えば

10.0.0.1
10.0.0.2
10.0.0.3

そして./ip-check.rbすればAWSのCIDRに含まれているIPが出力される。