Системному администратору в рамках исполнения профессиональных обязанностей иногда приходится выезжать на дальние объекты, где не работает ни мобильная, ни какая другая связь, и единственная возможность связаться со штаб-квартирой — это настроить интернет-подключение, для чего нужно знать необходимый IP-адрес, маску подсети и шлюз. Представим себе ситуацию, что провайдер оставил нам только адрес шлюза и маску подсети. Как определить IP-адрес, чтобы гарантировано попасть в нужный диапазон? Или разрешено использовать только небольшой пул адресов при этом нужно выбрать адрес, последний в пуле. Как его определить? Другая ситуация: нужно разбить сеть на части, чтобы прогонять трафик через виртуальные сети (VLAN) при этом необходимо использовать пулы адресов разного размера по числу оборудования в каждом сегменте. Как выбрать необходимую длину подсети? Ответить на эти вопросы может IP-арифметика [https://habr.com/ru/post/129664/ , https://help.keenetic.com/hc/ru/articles/213965829-пример-расчета-количества-хостов-и-подсетей-на-основе-IP-адреса-и-маски , https://www.cisco.com/c/en/us/support/docs/ip/routing-information-protocol-rip/13788-3.html]. Мы специально приведём бумажный вариант иллюстраций, потому что пока не подключена сеть, многие вещи будут недоступны. В этом случае карандаш и листок бумаги — это единственные "вычислительные" приспособления.

 

Про классовую адресацию

IP-адреса разделяются на глобальные и локальные, классовые (Classful) и бесклассовые (CIDR - Classless Interdomain Routing). В глобальных сетях IP-адреса повторяться не могут, а в локальных сетях уникальности нет.

Глобальная классовая адресация имеет следующие диапазоны адресов:

  • класс А: 1.0.0.0 – 126.255.255.255;
  • класс В: 128.0.0.0 – 191.255.255.255;
  • класс С: 192.0.0.0 – 223.255.255.255;
  • класс D: 224.0.0.0 - 239.255.255.255 – диапазон IP-адресов для групповых\многоадресных рассылок;
  • класс E: 240.0.0.0 – 255.255.255.255 – диапазон выделен для экспериментов.

Здесь же имеются и специфические\зарезервированные диапазоны адресов:

  • 0.0.0.0 – 0.255.255.255 – выделяются для маршрута по умолчанию, то есть назначается в качестве IP-адреса источника при отсутствии связи хоста с DHCP-сервером;
  • 127.0.0.0 – 127.255.255.255 – адреса обратной связи (loopback), то есть для передачи данных самому себе в качестве тестирования, зачастую 127.0.0.1 – является локальным адресом хоста (localhost);
  • 169.254.0.0 – 169.254.255.255 – присваивается хосту в случае, когда DHCP-сервер недоступен.

Неотъемлемой частью IP-адресации является маска, которая необходима для разделения зарезервированной части IP-адреса сети от свободной, а свободная часть как раз и будет задействована под распределение адресов для устройств. В классовой адресации маска соответствует длине октета, то есть /8, /16, /24, в чём и состоит основная нерациональность распределения IP-адресов. С маской /8 количество IP-адресов составит 16 777 214, с маской /16 - 65 534, а с маской /24 IP-адресами будут обеспечены 254 хоста.

Формула расчёта количества IP-адресов выглядит так: 2n – 2. Здесь “-2” означает, что всегда есть 2 IP-адреса, которые нельзя назначать устройствам, первый – всегда является адресом сети, а последний – широковещательный.

Для локальных сетей выделены несколько диапазонов, адреса которых в разных компаниях могут повторяться, но не могут использоваться для интернет:

  • 10.0.0.0 – 10.255.255.255.255 – назначаются хостам в крупных компаниях;
  • 172.16.0.0 – 172.31.255.255 – применяется в организациях средних масштабов;
  • 192.168.0.0 – 192.168.255.255 – задействуется в фирмах мелких и средних масштабов.

 

Перевод в двоичную систему исчисления

Как раз смысл IP-арифметики и заключается в преобразовании адресов из 10й системы исчисления в 2ю, применении маски, высчитывании количества адресов для хостов и перевода обратно в 10е представление.

В 2й системе исчисления применяются только “0” и “1”. Возьмём для примера сеть 192.168.0.0 с маской /24. Первый способ перевода чисел в 2ю систему из 10й – это деление на 2. Для нас это менее удобно, поэтому подробнее остановимся на втором, который состоит из 4х шагов:

1. каждая цифра IP-адреса представляет собой октет в 2й системе исчисления и состоит из 8 бит. Для удобства сначала представим числа в виде всех единиц, то есть 11111111.11111111.11111111.11111111 (можно и всеми 0, но из 1 в 0 удобнее исправлять и меньше чёркать на листке). Здесь нужно знать, что максимальное значение в одном октете – 256, которое получается при возведении 2 в степень 8 (8 бит). Однако, задействованы в качестве IP-адресов для устройств могут быть только 254, так как первый (заканчивается на 0) – это сеть, а последний (все единицы) – броадкаст;

2. в каждом октете, начиная справа, напишем числа, возведя 2 последовательно в каждую степень (2 в 0, 2 в 1,…. 2 в 7), получится такой ряд чисел: 128 64 32 16 8 4 2 1. Если их сложить, то получится максимальное значение октета;

3. установим “0” вместо “1” там, где будет соответствие числа IP-адреса с числом октета. В нашем случае первый октет IP-адреса сети будет выглядеть так: 11000000 (128+64), второй – 10101000 (128+32+8), третий – 00000000 (0), четвёртый – 00000000 (0);

4. переведём маску в 2ое представление - 11111111.11111111.11111111.00000000. Здесь видно, что под IP-адреса устройств отведён полностью последний октет – изменяться могут справа налево 0 пока не встретится 1. 3й октет – зарезервирован под подсети, а 1й и 2й – указывают на сеть. Также становится понятным, почему маска пишется как “/24” (24 бита отведено), а в 10й системе исчисления она выглядит как 255.255.255.0 (см. рис. 1).

Рисунок 1. Расчёт IP-адресов в классовой адресации.

В рассмотренной сети будет 254 IP-адреса для сетевых устройств. IP-адрес 192.168.ххх.255 назначить нельзя, так как это последний адрес, который является широковещательным (broadcast). Если какой-то адрес хоста нужно представить в 2м виде, то делается это аналогичным образом (см. рис. 1).         

Приведём пример. В каждом городе 3х соседних областей открывается сеть фаст-фуд из 100 бургерных, в каждой из которой будет 3 устройства: 2 ПК и 1 Wi-Fi роутер. В этом случае 3й октет в двоичной системе будет 01100100. Сеть будет расширяться дальше, и расчёт будет понятен до 254 филиала – 11111110. А на 255м объекте и дальше - классовая адресация не подходит.

 

Бесклассовая адресация

В бесклассовой адресации выделение IP-адресов происходит более рационально, нежели в классовой.

В бесклассовой адресации задействуются по максимуму все биты адресного пространства. Здесь применяется маска переменной длины (VLSM - Variable Length Subnet Mask), которая позволяет регулировать количество IP-адресов хостов и количество подсетей в большую или меньшую сторону. В ней используется не фиксированное число октетов (1, 2 или 3), а любое число бит IP-адреса [https://ru.wikipedia.org/wiki/Бесклассовая_адресация]. Например, применяя маску /13 количество IP-адресов будет 524 286, с маской /27 – 30, с маской /6 будут обеспечены IP-адресами 67 108 862 хостов.

При использовании масок переменной длины действует одно простое правило: чем маска сети меньше, тем больше отводится IP-адресов для устройств и наоборот, чем больше маска, тем больше в сети будет подсетей.

Возьмём тот же пример из классовой адресации, но увеличим количество бургерных до 300. В этом случае правильным будет сеть 192.168.0.0 разбить на большое количество подсетей с малым количеством IP-адресов, а значит увеличить маску с /24 до /29. Маска получится 11111111.11111111.11111111.11111000 (29 единиц), а в 1-й системе исчисления – 255.255.255.248, то есть из последнего октета мы забираем 5 бит. Полезно будет написать больше информации по поставленной задаче, а именно: начальный и конечный адреса в каждой подсети, широковещательный адрес, количество IP-адресов (см. рис. 2).

Рисунок 2. Расчёт IP-адресов в бесклассовой адресации.

То есть в бесклассовой “арифметике” не так уж легко сразу сказать номер подсети для 50 или 150 филиала, так как нужно произвести манипуляции с цифрами. Здесь изначально берётся 8 IP-адресов (это 3 бита, так как в 2х битах не помещается 3 адреса для выделенных устройств) для первого филиала, следующие 8 за ними – для 2го, и так далее 0я подсеть будет соответствовать для первых 32х объектов. С 33го по 64й – 1я подсеть, с 65го до 96го – 2я подсеть, от 289го по 320й филиал будет 9я подсеть.

Некоторые системные администраторы учат наборы CIDR наизусть, типа /26 - 255.255.255.192 - 62 (количество хостов в подсети), как таблицу умножения, чтобы не заморачиваться с расчётами. Это не сильно труднее заучить, чем "бело-оранжевый, оранжевый, бело-зелёный, синий, бело-синий...".

 

Обратная маска

Обратную маску (Wildcard mask) [http://telecombook.ru/routing-and-switching/view/wildcard-mask , https://habr.com/ru/post/131712/] удобно применять при создании списков доступа для целых подсетей.

Например, для 63го филиала, нужно всем пользователям запретить пинги и доступ в интернет, где IP-адрес подсети 192.168.1.240/29. Обратная маска в этом случае будет 0.0.0.7. В 10м представлении её можно получить путём вычитания существующей маски 255.255.255.248 из полной – 255.255.255.255; в 2й системе исчисления такое вычитание выглядит как инверсия свободных бит (см. рис. 3). Обратная маска не имеет короткой записи, как прямая маска.

Рисунок 3. Расчёт обратной маски.

 

Художества на бумаге

Завершающим действием может быть хотя бы примерный рисунок сети. Это будет почти готовое решение, которое перенесётся в продакшн. 

Самый простой вариант отобразить сеть наглядно – нанести её на листке бумаги. Здесь придираться не к чему, так как схема всё равно будет дорабатываться: будут меняться соединения, имена\назначения серверов, добавляться оборудование. Свой вариант художеств предоставлен на рисунке 4, где R – маршрутизатор, S – свитч, SRV – сервер. Здесь же на рисунке можно или даже желательно разделить трафик на части – на VLAN-ы, что даст больше понимания в правильности действий.

Рисунок 4. Сеть на бумаге.

 

Достоинства: без калькулятора можно рассчитывать необходимые сетевые параметры для устройств.

Недостатки: нужны хотя бы элементарные знания о различных системах исчисления, о сетях.

Вывод: теоретические знания по расчёту сетей необходимы для системного администратора так же, как и знание таблицы умножения и принципа составления пропорций - они относятся к азам ИТ-области. Тем более такие знания могут пригодиться в течение трудовой деятельности в полевых\строительных условиях на удалённых объектах.