時々、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コマンドがあれば大体のことは事足りると思う。