シナプス技術者ブログ

シナプスの技術者公式ブログ。インターネットで、鹿児島の毎日を笑顔にします。

sipcalcコマンドでIPアドレス範囲を計算する

こんにちは、技術部ネットワーク課の上曽山です。

CiscoルータでACLやOSPFの設定をする時に必要となる情報の1つにワイルドカードマスクがあります。

ネットマスクをビット反転させるだけなのですが、設定の際よく間違いそうになるので確認を行うための良いツールがないか探していたところsipcalcというコマンドを見つけました。
簡単に使い方をご紹介します。

必要パッケージ

コマンドを実行するのに必要なパッケージは、コマンド名と同じsipcalcです。
rhel系OSの場合、epelリポジトリからインストールする必要がある点に注意してください。

基本的な使い方

sipcalc [オプション] <IPアドレス> [プリフィックス|ネットマスク]
  • 実行例
$ sipcalc 192.168.1.1/26
-[ipv4 : 192.168.1.1/26] - 0

[CIDR]
Host address            - 192.168.1.1
Host address (decimal)  - 3232235777
Host address (hex)      - C0A80101
Network address         - 192.168.1.0
Network mask            - 255.255.255.192
Network mask (bits)     - 26
Network mask (hex)      - FFFFFFC0
Broadcast address       - 192.168.1.63
Cisco wildcard          - 0.0.0.63
Addresses in network    - 64
Network range           - 192.168.1.0 - 192.168.1.63
Usable range            - 192.168.1.1 - 192.168.1.62

-

このようにCisco wildcardという項目が設けられているのでワイルドカードマスクが簡単に確認できます。

オプション機能

sipcalcのオプションをいくつか紹介し ます。

-w [ワイルドカードマスクからネットマスク/プリフィックスを求める]

$ sipcalc -w 0.0.0.31
-[ipv4 : 0.0.0.31] - 0

[WILDCARD]
Wildcard                - 0.0.0.31
Network mask            - 255.255.255.224
Network mask (bits)     - 27

-

-d [ホスト名からIPアドレス範囲を求める]

$ sipcalc -d localhost
-[ipv4 : localhost] - 0

[CIDR]
Host address            - 127.0.0.1
Host address (decimal)  - 2130706433
Host address (hex)      - 7F000001
Network address         - 127.0.0.1
Network mask            - 255.255.255.255
Network mask (bits)     - 32
Network mask (hex)      - FFFFFFFF
Broadcast address       - 127.0.0.1
Cisco wildcard          - 0.0.0.0
Addresses in network    - 1
Network range           - 127.0.0.1 - 127.0.0.1

-
-[ipv6 : localhost] - 1

[IPV6 INFO]
Expanded Address        - 0000:0000:0000:0000:0000:0000:0000:0001
Compressed address      - ::1
Subnet prefix (masked)  - 0:0:0:0:0:0:0:1/128
Address ID (masked)     - 0:0:0:0:0:0:0:0/128
Prefix address          - ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
Prefix length           - 128
Address type            - Reserved
Comment                 - Loopback
Network range           - 0000:0000:0000:0000:0000:0000:0000:0001 -
                          0000:0000:0000:0000:0000:0000:0000:0001

-

-I [インターフェイスに割り当てられているIPアドレスから範囲を求める]

$ sipcalc -I lo
-[int-ipv4 : lo] - 0

[CIDR]
Host address            - 127.0.0.1
Host address (decimal)  - 2130706433
Host address (hex)      - 7F000001
Network address         - 127.0.0.0
Network mask            - 255.0.0.0
Network mask (bits)     - 8
Network mask (hex)      - FF000000
Broadcast address       - 127.255.255.255
Cisco wildcard          - 0.255.255.255
Addresses in network    - 16777216
Network range           - 127.0.0.0 - 127.255.255.255
Usable range            - 127.0.0.1 - 127.255.255.254

-

-s(IPv4)/-S(IPv6) [指定したアドレス範囲をさらに分割して表示]

以下の実行例では192.168.1.1/26の範囲をさらに/28単位に分割しています。

$ sipcalc -s 28 192.168.1.1/26
-[ipv4 : 192.168.1.1/26] - 0

[Split network]
Network                 - 192.168.1.0     - 192.168.1.15
Network                 - 192.168.1.16    - 192.168.1.31
Network                 - 192.168.1.32    - 192.168.1.47
Network                 - 192.168.1.48    - 192.168.1.63

-

-r [IPv6の逆引きファイル名を求める]

$ sipcalc -r ::ffff:192.168.1.1
-[ipv6 : ::ffff:192.168.1.1] - 0

[IPV6 DNS]
Reverse DNS (ip6.arpa)  -
1.0.1.0.8.a.0.c.f.f.f.f.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.

-

最後に

以上で紹介を終わります。

似たような効果を持つものにipcalcがありますが、rehl版のコマンドはワイルドカードマスクを表示する機能がありません。

ネットワーク設定でアドレス範囲は重要な意味を持つので、これらのコマンドを使って間違いなく設定を行うようにしたいですね。