例えば VPC 設計をするときなど,IP アドレスとサブネットの計算をしたり,ネットワークアドレスを確認したくなる場面がたまーにある.便利なサイトも多くあるけど,コマンドですぐ確認できると便利で,僕は sipcalc
コマンドを使っている(ipcalc
コマンドよりも便利).近々チームメンバーに「VPC 入門」を教える機会があるため,ネタの1個としてザッとまとめておく.
ipcalc
コマンド
ipcalc
は IP アドレスの計算を行うことができるコマンドで,Amazon Linux など RHEL 系ならすぐに使える.
$ which ipcalc /bin/ipcalc
例えば,CIDR からネットワークアドレスを確認する場合,以下のように --network
もしくは -n
を使う.
$ ipcalc --network 172.31.10.20/24 NETWORK=172.31.10.0
次に,IP アドレスとサブネットマスクを指定する場合,以下のように --prefix
もしくは -p
を使う.
$ ipcalc --prefix 172.31.10.20 255.255.255.0 PREFIX=24
もし,複数の項目を一度に確認する場合は,以下のように -mpbn
を使う.
$ ipcalc -mpbn 172.31.10.20/24 NETMASK=255.255.255.0 PREFIX=24 BROADCAST=172.31.10.255 NETWORK=172.31.10.0
sipcalc
コマンド
次は sipcalc
コマンドで,例えば Addresses in network
など,ipcalc
コマンドでは確認できなかった情報まで確認できるため,非常に便利!Amazon Linux だと epel からインストールすることができる.
$ sudo yum --enablerepo=epel install sipcalc
CIDR を指定すると,ネットワークアドレスとブロードキャストアドレス,ネットワーク範囲,IP アドレス数などの情報を出力してくれる.
$ sipcalc 172.31.10.20/24 -[ipv4 : 172.31.10.20/24] - 0 [CIDR] Host address - 172.31.10.20 Host address (decimal) - 2887715348 Host address (hex) - AC1F0A14 Network address - 172.31.10.0 Network mask - 255.255.255.0 Network mask (bits) - 24 Network mask (hex) - FFFFFF00 Broadcast address - 172.31.10.255 Cisco wildcard - 0.0.0.255 Addresses in network - 256 Network range - 172.31.10.0 - 172.31.10.255 Usable range - 172.31.10.1 - 172.31.10.254 -
さらに --all
を使うと,CIDR を2進数で表示できたりもして,さらに情報量が増える.
$ sipcalc --all 172.31.10.20/24 -[ipv4 : 172.31.10.20/24] - 0 [Classful] Host address - 172.31.10.20 Host address (decimal) - 2887715348 Host address (hex) - AC1F0A14 Network address - 172.31.0.0 Network class - B Network mask - 255.255.0.0 Network mask (hex) - FFFF0000 Broadcast address - 172.31.255.255 [CIDR] Host address - 172.31.10.20 Host address (decimal) - 2887715348 Host address (hex) - AC1F0A14 Network address - 172.31.10.0 Network mask - 255.255.255.0 Network mask (bits) - 24 Network mask (hex) - FFFFFF00 Broadcast address - 172.31.10.255 Cisco wildcard - 0.0.0.255 Addresses in network - 256 Network range - 172.31.10.0 - 172.31.10.255 Usable range - 172.31.10.1 - 172.31.10.254 [Classful bitmaps] Network address - 10101100.00011111.00000000.00000000 Network mask - 11111111.11111111.00000000.00000000 [CIDR bitmaps] Host address - 10101100.00011111.00001010.00010100 Network address - 10101100.00011111.00001010.00000000 Network mask - 11111111.11111111.11111111.00000000 Broadcast address - 10101100.00011111.00001010.11111111 Cisco wildcard - 00000000.00000000.00000000.11111111 Network range - 10101100.00011111.00001010.00000000 - 10101100.00011111.00001010.11111111 Usable range - 10101100.00011111.00001010.00000001 - 10101100.00011111.00001010.11111110 [Networks] Network - 172.31.10.0 - 172.31.10.255 (current) -
他にも sipcalc
コマンドでは,サブネットマスクを指定することもできるし,ネットワークインターフェースを指定することもできる.詳しくはヘルプに書いてある.
$ sipcalc 172.31.10.20 255.255.255.0 $ sipcalc eth0
実は sipcalc
コマンドは Mac でも使える
Mac でも sipcalc
コマンドを使えるようにしておくと良さそう!
$ brew install sipcalc
まとめ
- IP アドレスの計算などが必要になったら
sipcalc
コマンドを使う- もっとシンプルで良ければ
ipcalc
も使える
- もっとシンプルで良ければ
Black Belt 2017 : Amazon VPC
EC2 を起動する前に VPC もある程度は理解しておく必要があって,まずは Black Belt で学んでおくと良さそう!良資料!
www.slideshare.net