kakakakakku blog

Weekly Tech Blog : Keep on Learning 👍

簡単に IP アドレスの計算ができる sipcalc コマンド

例えば 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