Иногда требуется определить какое количество ip-адресов содержит та или иная сеть. Когда сети маленькие и их мало, то это все можно быстро посчитать и в уме, но если блоки ip-адресов большие, то можно прибегнуть к помощи утилит по рассчету сетей, одной из которых является ipcalc.
Далее рассмотрим как эта утилита работает. Установка будет производится на FreeBSD из портов, приступим:
#cd /usr/ports/net-mgmt/ipcalc/ && make install clean && rehash
Утилитка маленькая, поэтому долго ждать не придется, все очень быстро установилось.
Можно приступать к ее использованию, для начала взглянем, что она нам скажет о самой юзабельной сети 192.168.0.0 255.255.255.0:
#ipcalc 192.168.0.0 255.255.255.0 Address: 192.168.0.0 11000000.10101000.00000000. 00000000 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
Точно такой же результат мы получим, если вместо полной маски 255.255.255.0 укажем количество бит в ней:
#ipcalc 192.168.0.0/24 Address: 192.168.0.0 11000000.10101000.00000000. 00000000 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
Вместо обычной маски можно указать шаблонную маску wildcard:
#ipcalc 192.168.0.0 0.0.0.63 WILDCARD Address: 192.168.0.0 11000000.10101000.00000000.00 000000 Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000 Wildcard: 0.0.0.63 00000000.00000000.00000000.00 111111 => Network: 192.168.0.0/26 11000000.10101000.00000000.00 000000 HostMin: 192.168.0.1 11000000.10101000.00000000.00 000001 HostMax: 192.168.0.62 11000000.10101000.00000000.00 111110 Broadcast: 192.168.0.63 11000000.10101000.00000000.00 111111 Hosts/Net: 62 Class C, Private Internet
Давайте теперь посмотрим, сколько подсетей /26 содержит сеть /24:
#ipcalc 192.168.0.0/24 /26 Address: 192.168.0.0 11000000.10101000.00000000. 00000000 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 Subnets after transition from /24 to /26 Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000 Wildcard: 0.0.0.63 00000000.00000000.00000000.00 111111 1. Network: 192.168.0.0/26 11000000.10101000.00000000.00 000000 HostMin: 192.168.0.1 11000000.10101000.00000000.00 000001 HostMax: 192.168.0.62 11000000.10101000.00000000.00 111110 Broadcast: 192.168.0.63 11000000.10101000.00000000.00 111111 Hosts/Net: 62 Class C, Private Internet 2. Network: 192.168.0.64/26 11000000.10101000.00000000.01 000000 HostMin: 192.168.0.65 11000000.10101000.00000000.01 000001 HostMax: 192.168.0.126 11000000.10101000.00000000.01 111110 Broadcast: 192.168.0.127 11000000.10101000.00000000.01 111111 Hosts/Net: 62 Class C, Private Internet 3. Network: 192.168.0.128/26 11000000.10101000.00000000.10 000000 HostMin: 192.168.0.129 11000000.10101000.00000000.10 000001 HostMax: 192.168.0.190 11000000.10101000.00000000.10 111110 Broadcast: 192.168.0.191 11000000.10101000.00000000.10 111111 Hosts/Net: 62 Class C, Private Internet 4. Network: 192.168.0.192/26 11000000.10101000.00000000.11 000000 HostMin: 192.168.0.193 11000000.10101000.00000000.11 000001 HostMax: 192.168.0.254 11000000.10101000.00000000.11 111110 Broadcast: 192.168.0.255 11000000.10101000.00000000.11 111111 Hosts/Net: 62 Class C, Private Internet Subnets: 4 Hosts: 248
Как оказалось 4 подсети. Теперь предположим, что у нас есть блок адресов 192.168.0.0/24,
нам нужно выделить из него 3 подсети, с колличеством хостов 6 12 50 соответственно, с помощью ключа s зададим ipcalc’у эти параметры и посмотрим что он нам выведет:
#ipcalc 192.168.0.0/24 -s 6 12 50 Address: 192.168.0.0 11000000.10101000.00000000. 00000000 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 1. Requested size: 6 hosts Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000 Network: 192.168.0.80/29 11000000.10101000.00000000.01010 000 HostMin: 192.168.0.81 11000000.10101000.00000000.01010 001 HostMax: 192.168.0.86 11000000.10101000.00000000.01010 110 Broadcast: 192.168.0.87 11000000.10101000.00000000.01010 111 Hosts/Net: 6 Class C, Private Internet 2. Requested size: 12 hosts Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000 Network: 192.168.0.64/28 11000000.10101000.00000000.0100 0000 HostMin: 192.168.0.65 11000000.10101000.00000000.0100 0001 HostMax: 192.168.0.78 11000000.10101000.00000000.0100 1110 Broadcast: 192.168.0.79 11000000.10101000.00000000.0100 1111 Hosts/Net: 14 Class C, Private Internet 3. Requested size: 50 hosts Netmask: 255.255.255.192 = 26 11111111.11111111.11111111.11 000000 Network: 192.168.0.0/26 11000000.10101000.00000000.00 000000 HostMin: 192.168.0.1 11000000.10101000.00000000.00 000001 HostMax: 192.168.0.62 11000000.10101000.00000000.00 111110 Broadcast: 192.168.0.63 11000000.10101000.00000000.00 111111 Hosts/Net: 62 Class C, Private Internet Needed size: 88 addresses. Used network: 192.168.0.0/25 Unused: 192.168.0.88/29 192.168.0.96/27 192.168.0.128/25
Мы получили нужные нам подсети.
Если ввести ipcalc без параметров, получим на экране подсказку для его использования, такого содержания:
Использование: ipcalc [options] ADDRESS [[/] NETMASK ] [NETMASK] ipcalc вычисляет широковещательный адрес, диапазон хостов, шаблон сетевой маски по полученному IP и сетевой маске. Может использоваться для конструирования сетей и подсетей, а также в обучающих целях. -n --nocolor Не использовать подсветку при выводе. -b --nobinary Подавить поразрядный вывод. -c --class Показать маску сети по адресу. -h --html Показать результаты в HTML (не реализовано в этой версии). -v --version Показать версию программы. -s --split n1 n2 n3 Разделить сети по размеру n1, n2, n3. -r --range Исключить диапазон адресов. --help Помощь.
Вобщем, это довольно простая в использовании утилита, должна пригодиться каждому системному администратору.