Вопрос или проблема
Я не понимаю поведение ipcalc. Допустим, у меня есть адрес CIDR: 192.168.0.0/24, и я хочу разделить его на 2 подсети с только 12 доступными IP в каждой, тогда:
ipcalc 192.168.0.0/24 -s 12 12
должно сработать, верно? Однако я получаю следующий результат:
$ ipcalc 192.168.0.0/24 -s 12 12
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: 12 hosts
Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000
Network: 192.168.0.0/29 11000000.10101000.00000000.00000 000
HostMin: 192.168.0.1 11000000.10101000.00000000.00000 001
HostMax: 192.168.0.6 11000000.10101000.00000000.00000 110
Broadcast: 192.168.0.7 11000000.10101000.00000000.00000 111
Hosts/Net: 6 Class C, Private Internet
2. Requested size: 12 hosts
Netmask: 255.255.255.248 = 29 11111111.11111111.11111111.11111 000
Network: 192.168.0.16/29 11000000.10101000.00000000.00010 000
HostMin: 192.168.0.17 11000000.10101000.00000000.00010 001
HostMax: 192.168.0.22 11000000.10101000.00000000.00010 110
Broadcast: 192.168.0.23 11000000.10101000.00000000.00010 111
Hosts/Net: 6 Class C, Private Internet
Needed size: 32 addresses.
Used network: 192.168.0.0/26.999999999999999999999999999999999999999
Unused:
192.168.0.32/27
192.168.0.64/26
192.168.0.128/25
Это дает мне только 6 IP на сеть. Я пробовал использовать 14 (чтобы учесть сетевой и широковещательный адреса), но это делает то же самое.
Что я делаю не так?
У вас, должно быть, устаревшая версия ipcalc. С той же командой здесь, версия 0.51 дает:
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: 12 hosts
Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000
Network: 192.168.0.0/28 11000000.10101000.00000000.0000 0000
HostMin: 192.168.0.1 11000000.10101000.00000000.0000 0001
HostMax: 192.168.0.14 11000000.10101000.00000000.0000 1110
Broadcast: 192.168.0.15 11000000.10101000.00000000.0000 1111
Hosts/Net: 14 Class C, Private Internet
2. Requested size: 12 hosts
Netmask: 255.255.255.240 = 28 11111111.11111111.11111111.1111 0000
Network: 192.168.0.16/28 11000000.10101000.00000000.0001 0000
HostMin: 192.168.0.17 11000000.10101000.00000000.0001 0001
HostMax: 192.168.0.30 11000000.10101000.00000000.0001 1110
Broadcast: 192.168.0.31 11000000.10101000.00000000.0001 1111
Hosts/Net: 14 Class C, Private Internet
Needed size: 32 addresses.
Used network: 192.168.0.0/27
Unused:
192.168.0.32/27
192.168.0.64/26
192.168.0.128/25
Это текущая версия на момент написания, несмотря на то, что она была выпущена в ноябре 2021.
.
Ответ или решение
Проблема с ipcalc
: Недостаточный размер подсетей
При использовании утилиты ipcalc
для разбиения сети на подсети возникает проблема, когда конечные подсети оказываются недостаточно большими. Давайте разберем возможные причины и решения этого вопроса.
Ход выполнения
Предположим, у нас есть сеть в формате CIDR: 192.168.0.0/24. Необходимо разбить эту сеть на две подсети с 12 доступными IP-адресами в каждой. При вводе команды:
ipcalc 192.168.0.0/24 -s 12 12
вы получаете данные о подсетях с лишь 6 доступными IP-адресами вместо ожидаемых 12.
Возможные причины
-
Версия
ipcalc
: Как указывает ваш случай, проблема может заключаться в устаревшей версииipcalc
. В более актуальной версии (0.51), которая вышла в ноябре 2021 года, поведение утилиты по отношению к подобным запросам уже исправлено. -
Понимание деления подсетей: Когда вы запрашиваете 12 IP-адресов, следует учитывать, что для обеспечения 12 полезных IP-адресов (без учета сети и широковещательного адреса) необходимо задать маску подсети, позволяющую минимум 14 адресов (192.168.0.0/28). Таким образом, в версии 0.51 запрос 12 адресов приводит к созданию подсетей с 14 адресами, одна из которых будет 192.168.0.0/28.
Решение проблемы
-
Обновление версии
ipcalc
: Убедитесь, что вы пользуетесь обновленной версиейipcalc
. Это можно сделать с помощью менеджера пакетов Linux, например, apt или yum, либо вручную установив последнюю версию с репозитория GitHub.sudo apt-get update sudo apt-get install ipcalc
-
Подбор подходящего размера и маски подсети: Для достижения желаемого числа доступных IP-адресов нужно помнить о том, что подсети должны учитывать не только доступные IP, но и сетевой и широковещательный адреса. В вашем случае успеха будет достаточно задать 14 в качестве искомого размера, что обеспечит использование подсети с 14 доступными IP.
Заключение
Решение подобной проблемы возможно через комбинацию использования актуальной версии инструмента и правильного понимания формирования подсетей. Поддержка актуального программного обеспечения и точное формулирование запроса позволят избежать подобных недоразумений в будущем.