FreeBSD

Ipcalc — расчет сетей

Иногда требуется определить какое количество 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      Помощь.

Вобщем, это довольно простая в использовании утилита, должна пригодиться каждому системному администратору.

Оставить комментарий