時々、CIDR形式で書かれたIPアドレスの計算で、サブネットマスクやネットワークアドレスがぱっと出てこないことがある。
いちいちコンソールから別のウィンドウに移動して…とやるのも面倒。そんなときは、コンソール上でIPアドレスの計算をさせてしまうとよいだろう。
Linuxでは、コンソール上でIPアドレス計算を行えるコマンドがいくつか用意されている。
1.ipcalc
コンソール上でIPアドレスの計算を行う際に、一番よく使われているだろうコマンドがこのipcalc。
CIDRやネットマスク、ネットワークアドレスの計算などを行ってくれるので、チェックスクリプトに組み込んだりと使い道はいろいろだ。
手元のマシンで確認した限り、CentOS 7についてはバンドルされている。
Ubuntuの場合だと、以下のコマンドでインストールを行う。
sudo apt-get install ipcalc
バージョン等によってそれぞれ動きが違い、少なくとも手元で確認した限りはCentOS 7とUbuntu 14.04 LTSでは挙動が違うことが確認できている。
ここでは、CentOSにバンドルされている方での使い方を一部紹介する。
[root@BS-PUB-CENT7-01 ~]# ipcalc --help Usage: ipcalc [OPTION...] -c, --check Validate IP address for specified address family -4, --ipv4 IPv4 address family (default) -6, --ipv6 IPv6 address family -b, --broadcast Display calculated broadcast address -h, --hostname Show hostname determined via DNS -m, --netmask Display default netmask for IP (class A, B, or C) -n, --network Display network address -p, --prefix Display network prefix -s, --silent Don't ever display error messages Help options: -?, --help Show this help message --usage Display brief usage message [root@BS-PUB-CENT7-01 ~]# # ブロードキャストアドレスの確認 [root@BS-PUB-CENT7-01 ~]# ipcalc -b 192.168.0.100/24 BROADCAST=192.168.0.255 [root@BS-PUB-CENT7-01 ~]# # ネットマスクの確認 [root@BS-PUB-CENT7-01 ~]# ipcalc -m 192.168.0.100/24 NETMASK=255.255.255.0 [root@BS-PUB-CENT7-01 ~]# # ネットワークアドレスの確認 [root@BS-PUB-CENT7-01 ~]# ipcalc -n 192.168.0.100/24 NETWORK=192.168.0.0 [root@BS-PUB-CENT7-01 ~]# # CIDRの確認 [root@BS-PUB-CENT7-01 ~]# ipcalc -p 192.168.0.100 255.255.255.0 PREFIX=24
2.iptab
iptabは、各ネットマスクのIPアドレス数、マスク表記の一覧を出力してくれるコマンドだ。
perlで作られており、以下のコマンドでインストールできる。
yum install perl-Net-IP.noarch
[root@BS-PUB-CENT7-01 ~]# iptab +----------------------------------------------+ | addrs bits pref class mask | +----------------------------------------------+ | 1 0 /32 255.255.255.255 | | 2 1 /31 255.255.255.254 | | 4 2 /30 255.255.255.252 | | 8 3 /29 255.255.255.248 | | 16 4 /28 255.255.255.240 | | 32 5 /27 255.255.255.224 | | 64 6 /26 255.255.255.192 | | 128 7 /25 255.255.255.128 | | 256 8 /24 1C 255.255.255.0 | | 512 9 /23 2C 255.255.254.0 | | 1K 10 /22 4C 255.255.252.0 | | 2K 11 /21 8C 255.255.248.0 | | 4K 12 /20 16C 255.255.240.0 | | 8K 13 /19 32C 255.255.224.0 | | 16K 14 /18 64C 255.255.192.0 | | 32K 15 /17 128C 255.255.128.0 | | 64K 16 /16 1B 255.255.0.0 | | 128K 17 /15 2B 255.254.0.0 | | 256K 18 /14 4B 255.252.0.0 | | 512K 19 /13 8B 255.248.0.0 | | 1M 20 /12 16B 255.240.0.0 | | 2M 21 /11 32B 255.224.0.0 | | 4M 22 /10 64B 255.192.0.0 | | 8M 23 /9 128B 255.128.0.0 | | 16M 24 /8 1A 255.0.0.0 | | 32M 25 /7 2A 254.0.0.0 | | 64M 26 /6 4A 252.0.0.0 | | 128M 27 /5 8A 248.0.0.0 | | 256M 28 /4 16A 240.0.0.0 | | 512M 29 /3 32A 224.0.0.0 | | 1024M 30 /2 64A 192.0.0.0 | | 2048M 31 /1 128A 128.0.0.0 | | 4096M 32 /0 256A 0.0.0.0 | +----------------------------------------------+
3.ipcount
先ほどのiptabと一緒にインストールされるipcountコマンドは、ネットワークアドレスとCIDRを指定してやることで作成できるIPアドレスの範囲を出力してくれるコマンドだ。
[root@BS-PUB-CENT7-01 ~]# ipcount 192.168.0.4/30 192.168.0.4/30 192.168.0.4 - 192.168.0.7 [4]
とりあえず3つ記述しているが、基本的にはipcalcコマンドがあれば大体のことは事足りると思う。