08.12.2018

The Advent of Void: Day 8: ipcalc

ipcalc is a perl script that helps planning and analyzing IPv4 networking and subnets. It takes an IP address and netmask and calculates various metrics from it. It detects CIDR notation as well as dotted decimals. The latter recognizes even inversed bitmasks as used in Cisco products.

ipcalc can be installed from the Void Linux repository:

xbps-install ipcalc

To analyze an IP in CIDR notation just supply it as first argument

$ ipcalc 192.168.23.12/24 Address: 192.168.178.12 11000000.10101000.10110010. 00001100 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.178.0/24 11000000.10101000.10110010. 00000000 HostMin: 192.168.178.1 11000000.10101000.10110010. 00000001 HostMax: 192.168.178.254 11000000.10101000.10110010. 11111110 Broadcast: 192.168.178.255 11000000.10101000.10110010. 11111111 Hosts/Net: 254 Class C, Private Internet

Without a given subnetmask the subnet is automaticly detected using the address range:

$ ipcalc 148.251.199.112/24 Address: 148.251.199.112 10010100.11111011.11000111. 01110000 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 148.251.199.0/24 10010100.11111011.11000111. 00000000 HostMin: 148.251.199.1 10010100.11111011.11000111. 00000001 HostMax: 148.251.199.254 10010100.11111011.11000111. 11111110 Broadcast: 148.251.199.255 10010100.11111011.11000111. 11111111 Hosts/Net: 254 Class B

If the first bit of the netmask in dotted notation is a zero it assumes an inversed netmask:

$ ipcalc 148.251.199.112 0.0.0.255 WILDCARD Address: 148.251.199.112 10010100.11111011.11000111. 01110000 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 148.251.199.0/24 10010100.11111011.11000111. 00000000 HostMin: 148.251.199.1 10010100.11111011.11000111. 00000001 HostMax: 148.251.199.254 10010100.11111011.11000111. 11111110 Broadcast: 148.251.199.255 10010100.11111011.11000111. 11111111 Hosts/Net: 254 Class B

It even can detect invalid netmask. Then ipcalc assumes the default netmask for the IP range:

$ ipcalc 148.251.199.112 0.255.255.0 WILDCARD INVALID NETMASK INVALID MASK1: 0.255.255.0 Address: 148.251.199.112 10010100.11111011.11000111. 01110000 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 148.251.199.0/24 10010100.11111011.11000111. 00000000 HostMin: 148.251.199.1 10010100.11111011.11000111. 00000001 HostMax: 148.251.199.254 10010100.11111011.11000111. 11111110 Broadcast: 148.251.199.255 10010100.11111011.11000111. 11111111 Hosts/Net: 254 Class B

ipcalc is a neat script that helps with debugging complex subnet setups and plan your network. If you like to learn more about ipcalc visit the website.