CLI based subnet calculator

My favorite subnet calculator is the terminal based command sipcalc. While it is no longer under active development, it has every feature a network engineer could need.

Features (IPv4)

  • Multiple address and netmask input formats.
  • Retrieving of address information from interfaces.
  • Classfull and CIDR output.
  • Multiple address and netmask output formats (dotted quad, hex, number of bits).
  • Output of broadcast address, network class, Cisco wildcard, hosts/range, network range.
  • Output of multiple types of bitmaps.
  • Output of a user-defined number of extra networks.
  • Multiple networks input from commandline.
  • DNS resolutions of hostnames.
  • Parsing of a newline separated list of networks from standard input (STDIN).
  • The ability to “split” a network based on a smaller netmask, also with recursive runs on the gener.

Features (IPv6)

  • Compressed and expanded input addresses.
  • Compressed and expanded output.
  • Standard IPv6 network output.
  • v4 in v6 output.
  • Reverse DNS address generation.
  • DNS resolutions of hostnames.
  • The ability to “split” a network based on a smaller netmask, also with recursive runs on the generated subnets.

IPv4 example:

jemurray@shell:~$ sipcalc 192.168.0.0/24
-[ipv4 : 192.168.0.0/24] - 0

[CIDR]
Host address            - 192.168.0.0
Host address (decimal)  - 3232235520
Host address (hex)      - C0A80000
Network address         - 192.168.0.0
Network mask            - 255.255.255.0
Network mask (bits)     - 24
Network mask (hex)      - FFFFFF00
Broadcast address       - 192.168.0.255
Cisco wildcard          - 0.0.0.255
Addresses in network    - 256
Network range           - 192.168.0.0 - 192.168.0.255
Usable range            - 192.168.0.1 - 192.168.0.254

Simple IPv6 example:

jemurray@shell:~$ sipcalc 2001:0002::/48
-[ipv6 : 2001:0002::/48] - 0

[IPV6 INFO]
Expanded Address        - 2001:0002:0000:0000:0000:0000:0000:0000
Compressed address      - 2001:2::
Subnet prefix (masked)  - 2001:2:0:0:0:0:0:0/48
Address ID (masked)     - 0:0:0:0:0:0:0:0/48
Prefix address          - ffff:ffff:ffff:0:0:0:0:0
Prefix length           - 48
Address type            - Aggregatable Global Unicast Addresses
Network range           - 2001:0002:0000:0000:0000:0000:0000:0000 -
                          2001:0002:0000:ffff:ffff:ffff:ffff:ffff

Splitting a /24 into /29’s:

jemurray@shell:~$ sipcalc -s /29 192.168.0.0/24
-[ipv4 : 192.168.0.0/24] - 0

[Split network]
Network                 - 192.168.0.0     - 192.168.0.7
Network                 - 192.168.0.8     - 192.168.0.15
Network                 - 192.168.0.16    - 192.168.0.23
Network                 - 192.168.0.24    - 192.168.0.31
Network                 - 192.168.0.32    - 192.168.0.39
Network                 - 192.168.0.40    - 192.168.0.47
Network                 - 192.168.0.48    - 192.168.0.55
Network                 - 192.168.0.56    - 192.168.0.63
Network                 - 192.168.0.64    - 192.168.0.71
Network                 - 192.168.0.72    - 192.168.0.79
Network                 - 192.168.0.80    - 192.168.0.87
Network                 - 192.168.0.88    - 192.168.0.95
Network                 - 192.168.0.96    - 192.168.0.103
Network                 - 192.168.0.104   - 192.168.0.111
Network                 - 192.168.0.112   - 192.168.0.119
Network                 - 192.168.0.120   - 192.168.0.127
Network                 - 192.168.0.128   - 192.168.0.135
Network                 - 192.168.0.136   - 192.168.0.143
Network                 - 192.168.0.144   - 192.168.0.151
Network                 - 192.168.0.152   - 192.168.0.159
Network                 - 192.168.0.160   - 192.168.0.167
Network                 - 192.168.0.168   - 192.168.0.175
Network                 - 192.168.0.176   - 192.168.0.183
Network                 - 192.168.0.184   - 192.168.0.191
Network                 - 192.168.0.192   - 192.168.0.199
Network                 - 192.168.0.200   - 192.168.0.207
Network                 - 192.168.0.208   - 192.168.0.215
Network                 - 192.168.0.216   - 192.168.0.223
Network                 - 192.168.0.224   - 192.168.0.231
Network                 - 192.168.0.232   - 192.168.0.239
Network                 - 192.168.0.240   - 192.168.0.247
Network                 - 192.168.0.248   - 192.168.0.255

Pre-built packages exist for many popular Linux distributions and macOS.

Install on Linux (deb based):

jemurray@shell:~$ sudo apt install sipcalc
[sudo] password for jemurray:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  sipcalc

Install on macOS (with brew):

jemurray@mbp-2019:~ $ brew install sipcalc
==> Downloading https://homebrew.bintray.com/bottles/sipcalc-1.1.6.catalina.bottle.tar.gz
######################################################################## 100.0%
==> Pouring sipcalc-1.1.6.catalina.bottle.tar.gz
🍺  /usr/local/Cellar/sipcalc/1.1.6: 10 files, 63.8KB