Как рассчитать маски подсети в Linux с помощью ipcalc
Разделение большой сети на подсети повышает безопасность, повышает производительность и логически организует вашу сеть. Но некоторые расчеты сложны. Команда Linux ipcalc упрощает этап планирования.
Что такое подсеть?
Подсети — это способ разбить большую сеть на более мелкие, связанные между собой части. Каждая часть называется подсетью. Вы можете организовать свою сеть таким образом, чтобы ваша группа продаж использовала одну подсеть, отдел кадров — другую подсеть, служба поддержки клиентов — еще одну подсеть и т. д.
В этом есть существенные преимущества. Первый связан с безопасностью и контролем. Без подсетей все представляет собой одну большую «плоскую» сеть. С помощью подсетей вы можете решить, какие подсети могут взаимодействовать с другими подсетями. Разные подсети имеют разные диапазоны IP-адресов и используют разные маски подсети, о которых мы поговорим чуть позже.
Ваш маршрутизатор должен быть настроен так, чтобы трафик из одной подсети мог достигать другой подсети. А поскольку маршрутизатор является управляемым устройством, это дает вам контроль над типом трафика и взаимодействием, разрешенным между различными подсетями.
Подсети также могут предотвратить беспрепятственное перемещение по вашей сети неавторизованных пользователей и вредоносных программ. Или, по крайней мере, это замедлит их. Думайте об этом как о подводной лодке. Если у вас есть пробоина в одной из секций, вы можете закрыть двери в переборках, чтобы остальная часть судна не была затоплена. Подсети подобны тем дверям в переборках.
Часто выигрыш в производительности достигается исключительно за счет разбиения большой сети на подсети. Если ваша сеть достаточно большая и загруженная, это увеличение производительности будет происходить за счет сокращения сетевого трафика внутри каждой подсети. Одно только падение трафика ARP может сделать вещи более отзывчивыми.
И, конечно же, как только ваша сеть будет разделена на части, вашему ИТ-персоналу будет легче понять, обслуживать и поддерживать вашу инфраструктуру.
IP-адреса и маски подсети
Все это звучит великолепно, и это так. Но это означает, что мы должны быть очень точными в нашей IP-адресации. Нам нужно использовать часть IP-адреса для идентификатора сети и часть IP-адреса для адресации устройства. С подсетями нам также необходимо использовать часть IP-адреса для подсети.
IP-адреса IPv4 используют четыре трехзначных числа, разделенных точками. Это называется точечно-десятичной записью. Диапазон этих чисел — от 0 до 255. Первые два числа — это идентификатор сети. Третий используется для хранения идентификатора подсети, а четвертый номер используется для хранения адреса устройства. Это в простых случаях.
Числа представлены внутри компьютеров как последовательности двоичных значений. Если в подсети так мало устройств, что в диапазоне номеров адресов устройств есть неиспользуемые старшие биты, эти «запасные» двоичные биты могут использоваться идентификатором подсети.
Как маршрутизатор или любое другое сетевое устройство узнает состав IP-адреса? Что указывает на то, содержится ли идентификатор подсети полностью в третьем числе или он переманивает некоторые старшие биты четвертого числа? Ответом на этот вопрос является маска подсети.
Маска подсети выглядит как IP-адрес. Это четыре трехзначных числа, диапазон чисел от 0 до 255. Но их действительно нужно рассматривать в двоичном виде.
Каждый двоичный бит, равный 1 в маске подсети, означает, что соответствующий бит в IP-адресе относится к идентификатору сети или идентификатору подсети. Все, что равно нулю в маске подсети, означает, что соответствующий бит в IP-адресе относится к адресу устройства.
Возьмем типичный IP-адрес и применим к нему маску подсети. Маска подсети имеет 255 для каждого из первых трех чисел и 0 для четвертого.
- IP-адрес: 192.168.1.0
- Маска подсети: 255.255.255.0=11111111.11111111.11111111.00000000
В двоичном формате 255 равно 11111111. Если биты маски подсети установлены на единицу, соответствующие биты в IP-адресе относятся к идентификатору сети и идентификатору подсети. 255 в маске подсети означает, что все биты соответствующего числа в IP-адресе относятся к идентификатору сети или идентификатору подсети.
Четвертое число равно нулю, что означает, что ни один бит не установлен в единицу. Таким образом, это число относится к адресам сетевых устройств. Таким образом, наша маска подсети 255.255.255.0 означает, что первые три числа IP-адреса содержат идентификатор сети и идентификатор подсети, а последнее число зарезервировано для адресов сетевых устройств.
Это означает, что побочным эффектом всего этого является то, что маска подсети также определяет, сколько битов в IP-адресе можно использовать для идентификации отдельных устройств. Другими словами, маска подсети определяет, какие биты в IP-адресе определяют подсеть и сколько устройств может содержать эта подсеть.
Изменение маски подсети оказывает существенное влияние на сеть. Вот почему нам нужно сделать это правильно.
Команда ipcalc
ipcalc облегчает определение масок подсети и IP-адресов, необходимых для правильной подсети вашей сети. ipcalc уже был установлен в Fedora 36. Нам пришлось установить его в Ubuntu 22.04 и Manjaro 21.
Чтобы установить ipcalc на Manjaro, используйте:
Как минимум, нам нужно передать IP-адрес в ipcalc . Если это все, что мы передаем, ipcalc предполагает маску подсети 255.255.255.0. Он обеспечивает считывание информации о сети и IP-адресе.
Выходные данные содержат десятичные значения с точками и их эквивалентные двоичные значения. Вот что означает каждый бит информации.
- Адрес: 192.168.1.0. Предоставленный нами IP-адрес.
- Сетевая маска: 255.255.255.0=24. Маска подсети. 255.255.255.0 используется, если в командной строке не указана маска подсети. 24 означает, что 24 бита в маске подсети были установлены в 1. Они используются для идентификатора сети и идентификатора подсети. Они считаются слева. Биты, установленные в 1, будут непрерывной последовательностью единиц. Среди них не может быть нулевых битов. Мы знаем, что 8 битов, установленных в 1 в двоичном формате, дают нам 255 в десятичном виде. Таким образом, 24 означает три набора из 8 битов, каждый из которых равен 1. В десятичном формате с точками это дает нам 255.255.255. Остальные биты будут равны 0, что даст нам 255.255.255.0. Таким образом, подсчитав биты, установленные в 1, и представив их в виде десятичного числа, например 24, мы можем передать всю маску подсети. Это называется нотация бесклассовой междоменной маршрутизации.
- Подстановочный знак: 0.0.0.255. Это используется в сетевых устройствах Cisco как часть настроек списка разрешений/черных списков.
- Сеть: 192.168.1.0/24. Это сетевой IP-адрес и подсеть, описанные в нотации CIDR. Если к этой подсети подключен маршрутизатор, ему часто назначается самый низкий IP-адрес в допустимом диапазоне.
- HostMin: 192.168.1.1. Наименьший IP-адрес, который может иметь устройство, подключенное к этой подсети.
- HostMax: 192.168.1.254. Максимальный IP-адрес, который может иметь устройство, подключенное к этой подсети.
- Трансляция: 192.168.1.255. Это широковещательный адрес. Сетевые пакеты, отправленные на этот IP-адрес, передаются всем устройствам в подсети.
- Hosts/Net: 254. Максимальное количество устройств, которые вы можете подключить к этой подсети. В этом примере диапазон IP-адресов нашего устройства составляет от 0 до 255, что означает, что мы можем идентифицировать 256 различных IP-адресов (от 0 до 255). Но мы теряем один IP-адрес для сетевого IP-адреса (адрес «.0») и один для широковещательного IP-адреса (адрес «.255»).
- Класс C, частный Интернет: класс сети.
Класс сети определяется количеством битов, используемых для идентификатора сети и идентификатора подсети, а также несколькими битами, используемыми для содержания класса сети, которые называются старшие биты .
- Класс A: ведущие биты 0. IP-адреса начинаются с 0. Подсеть по умолчанию: 255.0.0.0. Обозначение CIDR: /8.
- Класс B: ведущие биты 10. IP-адреса начинаются с 128. Подсеть по умолчанию: 255.255.0.0. Обозначение CIDR: /16.
- Класс C: начальные биты 110. IP-адреса начинаются с 192. Подсеть по умолчанию: 255.255.255.0. Обозначение CIDR: /24.
- Класс D: начальные биты 1110. IP-адреса начинаются с 224. Подсеть по умолчанию: не определена. Обозначение CIDR — /4.
Изменение маски подсети
Команда ipcalc не может изменить какие-либо настройки, поэтому мы можем попробовать все, что захотим, не опасаясь, что что-то повлияет. Давайте посмотрим, как изменение маски подсети повлияет на нашу сеть.
Вы можете использовать либо CIDR, либо точечно-десятичную нотацию. В CIDR пробел необязателен. Все эти команды эквивалентны.
Это значительно увеличивает количество устройств, которые вы можете подключить к этой сети. Адресация сетевых устройств для этой сети начинается с 192.168.0.0 и заканчивается 192.168.255.254.
Мы теряем один адрес для сетевого адреса и один для широковещательного адреса, как и раньше. Но это все равно дает нам 65 534 возможных устройства.
Но все они по-прежнему будут в одной подсети.
Использование ipcalc с подсетями
Допустим, мы хотим добавить в нашу сеть три подсети емкостью 20, 15 и 80 хостов соответственно. Мы можем использовать параметр -s (split) и указать желаемые размеры подсети.
ipcalc 192.168.1.0 -s 20 15 80
Первый раздел такой же, как мы видели ранее, где ipcalc дает анализ сети, содержащей IP-адрес, который мы указываем в командной строке. Наши подсети описаны в следующих трех разделах.
Подводя итог, информация, которую мы получили:
- Маска подсети: 255.255.255.224
- Адрес первого устройства: 192.168.0.129
- Последний адрес устройства: 192.168.0.158
- Емкость подсети: 30 устройств.
- Маска подсети: 255.255.255.224
- Адрес первого устройства: 192.168.0.161
- Адрес последнего устройства: 192.168.0.190
- Емкость подсети: 30 устройств.
- Маска подсети: 255.255.255.128
- Адрес первого устройства: 192.168.0.1
- Последний адрес устройства: 192.168.0.126
- Емкость подсети: 126 устройств.
Обратите внимание на зеленые записи в двоичных значениях. Это биты, зарезервированные для подсети.
Также обратите внимание, что поскольку первая и вторая подсети имеют одинаковую маску подсети, равную 27, для индикатора подсети используются три бита в поле оборудования. В первой подсети биты 100, а во второй 101. Эта разница позволяет маршрутизатору корректно направлять сетевой трафик.
Это может быстро обостриться
Будет очевидно, что в более крупной или сложной сети очень легко закрасться ошибкой. С ipcalc вы можете быть уверены, что ваши значения верны. Вам все еще нужно настроить свою сеть, но, по крайней мере, вы знаете, что значения, которые вы используете, верны.
Маска подсети: считаем на bash
Thank you for reading this post, don’t forget to subscribe!
Маска подсети — это набор битов, определяющий, какое количество битов используется для указания адреса подсети, а какое для указания адреса компьютера в этой подсети. Более привычно маску подсети видеть в десятичном виде, но на самом деле она представляется в бинарном виде. Если вы понимаете, как представляется адрес подсети и адрес компьютера в этой подсети, то можете легко определить по адресу компьютера и маске подсети адрес этой самой подсети и маску подсети в таком виде:
Пример маски подсети
Предположим, у вас есть некоторая сеть 192.168.1.0 (сеть класса C), а маска подсети (netmask) представлена как 255.255.255.0 (в бинарном виде это 11111111 11111111 11111111 00000000). Это говорит о том, что для адреса подсети выделены первые 24 бита, а под адрес компьютера в подсети 8 бит, то есть, интервал значений последнего октета (последних 8 бит) будет принимать 256 различных значений (значения от 0 до 255 включительно), где 0 — это адрес подсети, а 255 — броадкаст. Соответственно, под адреса компьютеров вы сможете выделить 254 адреса (от 1 до 254). И, находясь на каком-либо компьютере под управлением операционной системы на базе ядра Linux, вы можете посмотреть адрес компьютера и сетевую маску при помощи команд «ifconfig» и «ip addr».
Иногда требуется имея адрес компьютера и маску подсети определить адрес подсети и битность сетевой маски, чтобы представить адрес подсети в виде