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      Помощь.

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

Насколько полезным был этот пост?

Нажмите на звезду, чтобы оценить!

Средний рейтинг 0 / 5. Голосов: 0

Пока оценок нет! Будьте первым, поставь свою оценку этому посту.

Мы сожалеем, что этот пост не был полезен для вас!

Давайте улучшим этот пост!

Расскажите, как мы можем улучшить этот пост?

Теги
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

0 Комментарий
Inline Feedbacks
View all comments
Back to top button
0
Would love your thoughts, please comment.x
()
x
Close
Close