Skip to content

dreibh/subnetcalc

Repository files navigation

SubNetCalc
An IPv4/IPv6 Subnet Calculator
https://www.nntb.no/~dreibh/subnetcalc

💡 What is SubNetCalc?

SubNetCalc is an IPv4/IPv6 subnet address calculator. For given IPv4 or IPv6 address and netmask or prefix length, it calculates network address, broadcast address, maximum number of hosts and host address range. Also, it prints the addresses in binary format for better understandability. Furthermore, it prints useful information on specific address types (e.g. type, scope, interface ID, etc.).

😀 Examples

  • My host has IP 132.252.150.154 and netmask 255.255.255.240. What are the details of its network?

    user@host:~$ subnetcalc 132.252.150.154 255.255.255.240
    Address        = 132.252.150.154
                        10000100 . 11111100 . 10010110 . 10011010
    Network        = 132.252.150.144 / 28
    Netmask        = 255.255.255.240
    Broadcast      = 132.252.150.159
    Wildcard Mask  = 0.0.0.15
    Hex. Address   = 84FC969A
    Hosts Bits     = 4
    Max. Hosts     = 14   (2^4 - 2)
    Host Range     = { 132.252.150.145 - 132.252.150.158 }
    Properties     =
       - 132.252.150.154 is a HOST address in 132.252.150.144/28
       - Class B
    GeoIP Country  = Germany (DE)
    DNS Hostname   = lupo.iem.uni-due.de
    
  • Consider host www.heise.de uses a 64-bit prefix length. What are the details of its network?

    user@host:~$ subnetcalc www.heise.de 64
    Address        = 2a02:2e0:3fe:1001:7777:772e:2:85
                        2a02 = 00101010 00000010
                        02e0 = 00000010 11100000
                        03fe = 00000011 11111110
                        1001 = 00010000 00000001
                        7777 = 01110111 01110111
                        772e = 01110111 00101110
                        0002 = 00000000 00000010
                        0085 = 00000000 10000101
    Network        = 2a02:2e0:3fe:1001:: / 64
    Netmask        = ffff:ffff:ffff:ffff::
    Wildcard Mask  = ::ffff:ffff:ffff:ffff
    Hosts Bits     = 64
    Max. Hosts     = 18446744073709551615   (2^64 - 1)
    Host Range     = { 2a02:2e0:3fe:1001::1 - 2a02:2e0:3fe:1001:ffff:ffff:ffff:ffff }
    Properties     =
       - 2a02:2e0:3fe:1001:7777:772e:2:85 is a HOST address in 2a02:2e0:3fe:1001::/64
       - Global Unicast Properties:
          + Interface ID                     = 7777:772e:0002:0085
          + Solicited Node Multicast Address = ff02::1:ff02:0085
          + 6-to-4 Address                   = 2.224.3.254
    GeoIP Country  = Germany (DE)
    DNS Hostname   = www.heise.de
    
  • My new host should use Interface ID 0x100 and Subnet ID 0x1234. Generate a Unique Local IPv6 prefix (40-bit Global ID) for my intranet, according to RFC 4193, using high quality random numbers!

    user@host:~$ subnetcalc 0:0:0:1234::100 64 -uniquelocalhq
    Generating Unique Local IPv6 address (using /dev/random) ...
    Address        = fd22:6892:1a2d:1234::100
                        fd22 = 11111101 00100010
                        6892 = 01101000 10010010
                        1a2d = 00011010 00101101
                        1234 = 00010010 00110100
                        0000 = 00000000 00000000
                        0000 = 00000000 00000000
                        0000 = 00000000 00000000
                        0100 = 00000001 00000000
    Network        = fd22:6892:1a2d:1234:: / 64
    Netmask        = ffff:ffff:ffff:ffff::
    Wildcard Mask  = ::ffff:ffff:ffff:ffff
    Hosts Bits     = 64
    Max. Hosts     = 18446744073709551615   (2^64 - 1)
    Host Range     = { fd22:6892:1a2d:1234::1 - fd22:6892:1a2d:1234:ffff:ffff:ffff:ffff }
    Properties     =
       - fd22:6892:1a2d:1234::100 is a HOST address in fd22:6892:1a2d:1234::/64
       - Unique Local Unicast Properties:
          + Locally chosen
          + Global ID                        = 2268921a2d
          + Subnet ID                        = 1234
          + Interface ID                     = 0000:0000:0000:0100
          + Solicited Node Multicast Address = ff02::1:ff00:0100
    GeoIP Country  = Unknown (??)
    DNS Hostname   = (Name or service not known)
    
  • Which are DNS reverse lookup name and geo-location country of IP 2401:3800:c001::68?

    user@host:~$ subnetcalc 2401:3800:c001::68
    Address        = 2401:3800:c001::68
                        2401 = 00100100 00000001
                        3800 = 00111000 00000000
                        c001 = 11000000 00000001
                        0000 = 00000000 00000000
                        0000 = 00000000 00000000
                        0000 = 00000000 00000000
                        0000 = 00000000 00000000
                        0068 = 00000000 01101000
    Network        = 2401:3800:c001::68 / 128
    Netmask        = ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
    Wildcard Mask  = ::
    Hosts Bits     = 0
    Max. Hosts     = 0   (2^0 - 1)
    Host Range     = { 2401:3800:c001::69 - 2401:3800:c001::68 }
    Properties     =
       - 2401:3800:c001::68 is a NETWORK address
     - Global Unicast Properties:
        + Interface ID                     = 0000:0000:0000:0068
        + Solicited Node Multicast Address = ff02::1:ff00:0068
    GeoIP Country = China (CN)
    DNS Hostname  = bg-in-x68.1e100.net
    
  • Which are the MAC address and Solicited Node Multicast address of 2001:638:501:4ef8:223:aeff:fea4:8ca9/64?

    user@host:~$ subnetcalc 2001:638:501:4ef8:223:aeff:fea4:8ca9/64
    Address        = 2001:638:501:4ef8:223:aeff:fea4:8ca9
                       2001 = 00100000 00000001
                       0638 = 00000110 00111000
                       0501 = 00000101 00000001
                       4ef8 = 01001110 11111000
                       0223 = 00000010 00100011
                       aeff = 10101110 11111111
                       fea4 = 11111110 10100100
                       8ca9 = 10001100 10101001
    Network        = 2001:638:501:4ef8:: / 64
    Netmask        = ffff:ffff:ffff:ffff::
    Wildcard Mask  = ::ffff:ffff:ffff:ffff
    Hosts Bits     = 64
    Max. Hosts     = 18446744073709551615   (2^64 - 1)
    Host Range     = { 2001:638:501:4ef8::1 - 2001:638:501:4ef8:ffff:ffff:ffff:ffff }
    Properties     =
       - 2001:638:501:4ef8:223:aeff:fea4:8ca9 is a HOST address in 2001:638:501:4ef8::/64
       - Global Unicast Properties:
          + Interface ID                     = 0223:aeff:fea4:8ca9
          + MAC Address                      = 00:23:ae:a4:8c:a9
          + Solicited Node Multicast Address = ff02::1:ffa4:8ca9
    GeoIP Country  = Germany (DE)
    DNS Hostname   = (Name or service not known)
    
  • Take a look into the manual page of SubNetCalc for further information and options:

    man subnetcalc
    

📦 Binary Package Installation

Please use the issue tracker at https://github.com/dreibh/subnetcalc/issues to report bugs and issues!

Ubuntu Linux

For ready-to-install Ubuntu Linux packages of SubNetCalc, see Launchpad PPA for Thomas Dreibholz!

sudo apt-add-repository -sy ppa:dreibh/ppa
sudo apt-get update
sudo apt-get install subnetcalc

Fedora Linux

For ready-to-install Fedora Linux packages of SubNetCalc, see COPR PPA for Thomas Dreibholz!

sudo dnf copr enable -y dreibh/ppa
sudo dnf install subnetcalc

FreeBSD

For ready-to-install FreeBSD packages of SubNetCalc, it is included in the ports collection, see FreeBSD ports tree index of net/subnetcalc/!

pkg install subnetcalc

Alternatively, to compile it from the ports sources:

cd /usr/ports/net/subnetcalc
make
make install

💾 Build from Sources

SubNetCalc is released under the GNU General Public Licence (GPL).

Please use the issue tracker at https://github.com/dreibh/subnetcalc/issues to report bugs and issues!

Development Version

The Git repository of the SubNetCalc sources can be found at https://github.com/dreibh/subnetcalc:

git clone https://github.com/dreibh/subnetcalc
cd subnetcalc
cmake .
make

Contributions:

Release Versions

See https://www.nntb.no/~dreibh/subnetcalc/#current-stable-release for the release packages!

🔗 Useful Links

About

IP address calculator

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •