ЛР2: расчёт IP-подсетей (VLSM) - полный разбор от ТЗ до сдачи
Эта страница - не конспект теории, а полный путь по конкретной лабе курса "Сети" (ITMO): что требовало задание, как решены все 4 варианта, где лежат файлы и что содержит готовый отчёт. Если открываешь это через полгода и забыл всё - начинай отсюда.
Что было в задании
Тема: "Работа с адресами IP-сетей" (ПРАКТИЧЕСКАЯ РАБОТА №2 v.001-2023). Цель по методичке - получить практические навыки работы с пространством IP-адресов, масками и управлением адресацией в IP-сетях.
Нужно для выполнения: знание двоичной системы счисления (перевод десятичное↔двоичное), VirtualBox с одной ВМ Linux (CentOS или Debian).
Часть 1 - расчёт на бумаге. Дано 4 варианта задания, нужно решить все 4, не только свой. В каждом варианте: провайдер выдал одну IP-сеть (адрес + маска), составная локальная сеть из 5 сегментов (Сеть 1–5), соединённых маршрутизаторами, с известным числом компьютеров в каждом сегменте. Задача - определить адрес сети и допустимый диапазон, затем разделить сеть на 5 частей масками так, чтобы в каждой подсети хватило адресов, начиная разбивку с самой большой сети. Отдельная подсказка методички: порт маршрутизатора, подключённый к локальной сети, тоже занимает в ней IP-адрес.
Сами 4 варианта из методички:
| Вариант | IP-адрес из сети / маска | Сеть 1 | Сеть 2 | Сеть 3 | Сеть 4 | Сеть 5 |
|---|---|---|---|---|---|---|
| 1 | 194.85.32.19 / 255.255.255.0 | 10 | 6 | 1 | 18 | 100 |
| 2 | 10.12.12.15 / 255.255.254.0 | 25 | 16 | 240 | 117 | 1 |
| 3 | 212.24.15.199 / 255.255.255.192 | 7 | 0 | 0 | 11 | 10 |
| 4 | 120.13.120.120 / 255.255.255.224 | 5 | 2 | 2 | 1 | 1 |
Часть 2 - проверка на ВМ. Запустить Linux-ВМ с доступом в интернет, установить пакет ipcalc, прогнать через него все посчитанные вручную подсети и свериться с расчётом; найденные расхождения - исправить.
Отчёт: результаты расчётов Части 1 в табличной форме (по каждому варианту: IP-сеть/маска, количество IP-адресов в сети, начальный/конечный адрес для портов маршрутизаторов и компьютеров) плюс понятийный минимум (IP-адрес, mask, IP-сеть, IP-broadcast, определение границ сети по адресу и маске).
Куда сдавать: edu-net@yandex.ru, тема письма - №группы ФИО(латиницей) №работы, срок - 4 недели с момента выдачи.
Все файлы решения
| Файл | Что это |
|---|---|
| verify_with_ipcalc.sh | Часть 2: ставит ipcalc и прогоняет его по всем 20 подсетям (4 варианта × 5 сетей) |
| otchet_lab2.pdf | Готовый отчёт (PDF) - расчёт всех 4 вариантов уже вставлен |
Как устроен адрес и маска
IPv4-адрес - 32 бита, маска - тоже 32 бита: единицы маски отмечают часть адреса, которая определяет сеть, нули - часть, которая определяет узел внутри этой сети. Запись через слэш (/24) - это просто число единиц в маске: 255.255.255.0 = 11111111.11111111.11111111.00000000, первые 24 бита сеть, оставшиеся 8 - узел.
Адрес сети получается из IP-адреса и маски побитовым AND - обнулить всё, что относится к полю узла:
IP 194.85.32.19 = 11000010.01010101.00100000.00010011
mask 255.255.255.0 = 11111111.11111111.11111111.00000000
AND -----------------------------------------------------------
net 194.85.32.0 = 11000010.01010101.00100000.00000000
Broadcast-адрес - та же сеть, но с единицами вместо нулей в поле узла: для 194.85.32.0/24 это 194.85.32.255. И адрес сети, и broadcast входят в диапазон подсети, но ни один из них нельзя назначить конкретному устройству - отсюда формула полезных адресов 2^n − 2, где n - число нулевых битов маски (число бит под узел).
Сколько адресов нужно каждой локальной сети
Методичка даёт прямую подсказку: "порт маршрутизатора, подключённый к локальной сети, имеет IP-адрес" - то есть считать нужно не просто число компьютеров, а компьютеры + 1 (порт маршрутизатора тоже расходует адрес из этой же подсети). Дальше это число нужно округлить вверх до ближайшей степени двойки минус 2, потому что подсети бывают только "степень двойки" по размеру - следствие того, что маска обязана быть непрерывным блоком единиц.
Пример: сеть на 18 компьютеров.
нужно адресов: 18 + 1 (порт роутера) = 19
/28 → 16 адресов, 14 полезных - не хватает
/27 → 32 адреса, 30 полезных - хватает → берём /27
Сети с 0-1 "компьютером" в задании (как Сеть 2/3 в варианте 3) обычно означают не пользовательскую локалку, а линк точка-точка между двумя маршрутизаторами - там нужно ровно 2 адреса, по одному на порт с каждой стороны. Классически под такие линки берут минимальную подсеть /30 (4 адреса, 2 полезных). Это допущение, а не буквальная строчка методички - если преподаватель ожидает другую трактовку (например, /31 для линков), формула и расчёт по ней в verify_with_ipcalc.sh легко пересчитываются заново.
Правило VLSM: сначала большие, потом маленькие
Подсеть обязана начинаться на границе, кратной своему размеру (опять же следствие того, что маска - непрерывный блок единиц). Если начать нарезку с маленьких подсетей, можно случайно раздробить адресное пространство так, что для более крупной подсети не останется непрерывного блока нужного размера. Поэтому правило VLSM жёсткое: выделять подсети по убыванию размера, ставя их подряд от начала общей сети без дырок.
Разбор всех 4 вариантов
Вариант 1 - 194.85.32.19 / 255.255.255.0 (база 194.85.32.0/24)
Сеть 5 (100 ПК) → 194.85.32.0/25 128 адресов (126 польз.) 194.85.32.1 – 194.85.32.126
Сеть 4 (18 ПК) → 194.85.32.128/27 32 адреса (30 польз.) 194.85.32.129 – 194.85.32.158
Сеть 1 (10 ПК) → 194.85.32.160/28 16 адресов (14 польз.) 194.85.32.161 – 194.85.32.174
Сеть 2 (6 ПК) → 194.85.32.176/28 16 адресов (14 польз.) 194.85.32.177 – 194.85.32.190
Сеть 3 (1 ПК) → 194.85.32.192/30 4 адреса (2 польз.) 194.85.32.193 – 194.85.32.194
Использовано 196 из 256 адресов, резерв 194.85.32.196–255.
Вариант 2 - 10.12.12.15 / 255.255.254.0 (база 10.12.12.0/23)
Маска /23 - не круглый байт: третий октет базы получается из 12 AND 254 = 12, поэтому сеть растягивается на два соседних третьих октета (10.12.12.* и 10.12.13.*) и даёт 512 адресов, а не 256.
Сеть 3 (240 ПК) → 10.12.12.0/24 256 адресов (254 польз.) 10.12.12.1 – 10.12.12.254
Сеть 4 (117 ПК) → 10.12.13.0/25 128 адресов (126 польз.) 10.12.13.1 – 10.12.13.126
Сеть 1 (25 ПК) → 10.12.13.128/27 32 адреса (30 польз.) 10.12.13.129 – 10.12.13.158
Сеть 2 (16 ПК) → 10.12.13.160/27 32 адреса (30 польз.) 10.12.13.161 – 10.12.13.190
Сеть 5 (1 ПК) → 10.12.13.192/30 4 адреса (2 польз.) 10.12.13.193 – 10.12.13.194
Использовано 452 из 512 адресов, резерв 10.12.13.196–255.
Вариант 3 - 212.24.15.199 / 255.255.255.192 (база 212.24.15.192/26)
Сеть 1 (7 ПК) → 212.24.15.192/28 16 адресов (14 польз.) 212.24.15.193 – 212.24.15.206
Сеть 4 (11 ПК) → 212.24.15.208/28 16 адресов (14 польз.) 212.24.15.209 – 212.24.15.222
Сеть 5 (10 ПК) → 212.24.15.224/28 16 адресов (14 польз.) 212.24.15.225 – 212.24.15.238
Сеть 2 (0 ПК) → 212.24.15.240/30 4 адреса (2 польз.) 212.24.15.241 – 212.24.15.242
Сеть 3 (0 ПК) → 212.24.15.244/30 4 адреса (2 польз.) 212.24.15.245 – 212.24.15.246
Использовано 56 из 64 адресов, резерв 212.24.15.248–255.
Вариант 4 - 120.13.120.120 / 255.255.255.224 (база 120.13.120.96/27)
Сеть 1 (5 ПК) → 120.13.120.96/29 8 адресов (6 польз.) 120.13.120.97 – 120.13.120.102
Сеть 2 (2 ПК) → 120.13.120.104/29 8 адресов (6 польз.) 120.13.120.105 – 120.13.120.110
Сеть 3 (2 ПК) → 120.13.120.112/29 8 адресов (6 польз.) 120.13.120.113 – 120.13.120.118
Сеть 4 (1 ПК) → 120.13.120.120/30 4 адреса (2 польз.) 120.13.120.121 – 120.13.120.122
Сеть 5 (1 ПК) → 120.13.120.124/30 4 адреса (2 польз.) 120.13.120.125 – 120.13.120.126
Использовано ровно 32 из 32 адресов - самый плотный из четырёх вариантов, сеть заполнена без резерва вообще.
Каждая следующая подсеть в любом варианте начинается сразу после конца предыдущей. Если бы порядок нарезки был не по убыванию размера, крупный блок мог бы уже не влезть в оставшееся пространство без дырок - вот ради чего именно строгий порядок "от большого к малому", а не просто удобство подсчёта.
Проверка расчёта без своих рук
ipcalc <адрес>/<маска> печатает готовый разбор - адрес сети, маску, broadcast, диапазон хостов, число адресов - то есть даёт возможность свериться с ручным (двоичным) расчётом программой, а не только "на глаз". Именно это и делает verify_with_ipcalc.sh по очереди для всех 20 подсетей всех 4 вариантов:
ipcalc 194.85.32.0/25
Address: 194.85.32.0
Netmask: 255.255.255.128 = 25
Network: 194.85.32.0/25
HostMin: 194.85.32.1
HostMax: 194.85.32.126
Broadcast: 194.85.32.127
Hosts/Net: 126
На реальной практике никто не считает подсети в столбик - расчёт руками (как выше) важен один раз, чтобы понимать, откуда берутся эти числа, а дальше для скорости и проверки на ошибки всегда используется калькулятор вроде ipcalc или его питоновский эквивалент - модуль ipaddress (ipaddress.ip_network("194.85.32.0/25")), которым все 20 подсетей выше и были перепроверены перед тем, как попасть в отчёт.
Что в отчёте и что ещё нужно сделать руками
otchet_lab2.pdf - таблицы по всем 4 вариантам (из раздела выше) уже вставлены, плюс понятийный минимум по теме. Дожить до отправки нужно руками:
- Титульный лист - ФИО, группа, дата вместо
[ЗАПОЛНИТЬ]. - Вывод ipcalc - прогнать verify_with_ipcalc.sh на ВМ и вставить в отчёт реальный вывод по всем 20 подсетям, сверив с таблицами выше.