twitterでipcalcコマンドの話題が流れてきました。
NWと言えばサブネット計算!
— MyHomeNWLab (@MyHomeNWLab) 2020年1月22日
サブネット計算と言えば ipcalc コマンド!
脳内計算 & 手打ちでミスしてパラメータ指定を間違えると悲惨なので、
正確性を求めるならツールを使って転記するのがBetterな気がする。
画像は ipcalc の出力サンプルとCygwinでのインストール指定時。 pic.twitter.com/0mCuF5tC0D
しかし私の知っている出力と違う。
tweetの画像はCygwinのipcalc結果らしいのですが、
そういえばRedhat系のipcalcしか使ったこと無いので
distributionで違うのかなと思い
今回Redhat系とDebian系を調べてみることにしました。
もちろんエンジニアなら自宅に両環境ありますよね!
Redhat系
CentOSのipcalcはサブネット計算でたまに使っています。
(NWエンジニアなら基本は丸暗記ですよ)
環境
以前pppの検証で使ったCentOSで確認。
[vagrant@ppp-server ~]$ cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core)
[vagrant@ppp-server ~]$ uname -a Linux ppp-server 3.10.0-957.12.2.el7.x86_64 #1 SMP Tue May 14 21:24:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
バージョン
バージョンが確認できるオプション(-v, --version)がありませんね。
[vagrant@ppp-server ~]$ ipcalc --usage Usage: ipcalc [-c46bhmnps?] [-c|--check] [-4|--ipv4] [-6|--ipv6] [-b|--broadcast] [-h|--hostname] [-m|--netmask] [-n|--network] [-p|--prefix] [-s|--silent] [-?|--help] [--usage]
出力
Redhat系のipcalcはオプションをつけないと計算してくれません。
-mnbをよく使います。
また、wildcard maskは計算してくれないんですよね。
[vagrant@ppp-server ~]$ ipcalc -mnb 192.168.0.10/24 NETMASK=255.255.255.0 BROADCAST=192.168.0.255 NETWORK=192.168.0.0
その他確認
- manページ
https://linux.die.net/man/1/ipcalc
- which
[vagrant@ppp-server ~]$ which ipcalc /usr/bin/ipcalc
- file
[vagrant@ppp-server ~]$ file /usr/bin/ipcalc /usr/bin/ipcalc: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=87aa0b7dc72e30ec9233e381985bd24aac78de3c, stripped
バイナリファイルですね。
パッケージを確認しましたが出ませんでした。
専用のパッケージではない様です。
[vagrant@ppp-server ~]$ rpm -qa | grep ipcalc [vagrant@ppp-server ~]$
何かのUtilityとして含まれているんですかね。
Authorのアドレスにredhat.comと入っているので
Redhat系OSには最初から組み込まれているのかもしれませんね。
Debian系
環境
いつものサブ機ubuntuに入れます。
masashi@PC-ubuntu:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.3 LTS Release: 18.04 Codename: bionic
masashi@PC-ubuntu:~$ uname -a Linux PC-ubuntu 4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
aptからインストールします。
バージョン
masashi@PC-ubuntu:~$ ipcalc --version 0.41
出力
オプションなしでNW関連の値をいろいろ計算してくれます。 おまけに2進数表記まで。
masashi@PC-ubuntu:~$ ipcalc 192.168.0.10/24 Address: 192.168.0.10 11000000.10101000.00000000. 00001010 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000 HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001 HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110 Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111 Hosts/Net: 254 Class C, Private Internet
しかもカラー出力してくれます。
Cygwinはこっちのパッケージを使っているようですね。
その他確認
- manページ
Debianのだけど
https://manpages.debian.org/jessie/ipcalc/ipcalc.1.en.html
- which
masashi@PC-ubuntu:~$ which ipcalc /usr/bin/ipcalc
- file
masashi@PC-ubuntu:~$ file /usr/bin/ipcalc /usr/bin/ipcalc: Perl script text executable
Debian系はPerl製のようです。
Redhat版とは完全に別物ですね。
こっちはdebパッケージとして入ってますね。
masashi@PC-ubuntu:~$ dpkg -l | grep ipcalc ii ipcalc 0.41-5 all parameter calculator for IPv4 addresses
まとめ
ipcalcはRedhat系とDebian系で使い勝手は変わりませんが、
結局別のコマンドだということがわかりました。
同じコマンド名でdistributionによって中身が違うパターンというのは珍しいと思います。
分派というわけではなさそうですが、
なぜ同じコマンド名になったのか面白いので追ってみたいですね。