Урок 3 — Маски подсети и CIDR
Когда ты увидишь 10.0.0.0/24 или 192.168.1.0/16, ты должен понимать это сразу, без расчётов. Это один из «обязательных навыков» DevOps — без него ты не спроектируешь облачную сеть.
- Зачем сеть делят на подсети
- Что такое маска подсети
- CIDR-нотация — современный способ
- Таблица «префикс → адресов» (которую можно запомнить)
- Разбор примеров
- Спецадреса в подсети: сеть, broadcast, шлюз
- Как DevOps проектирует подсети
- Калькулятор в голове + команды
- Чек-лист «понимаю это»
- Задачи с ответами
IPv4-адрес — это 4 октета по 8 бит: 192.168.1.42 внутри компьютера выглядит как
32 нуля-единицы. Октет — число от 0 до 255. Если биты подзабылись — вернись к разделу «Биты,
байты и октеты» урока 2: сегодня мы будем резать адрес по битам, и без этого фундамента маска
останется магией.
1. Зачем сеть делят на подсети
В прошлом уроке мы говорили про адреса вроде 192.168.1.42. Но в реальности у компании, провайдера или AWS-аккаунта не один IP — у них тысячи и миллионы. Чтобы управлять таким хозяйством, сеть нужно разделить на куски — подсети.
Зачем делить?
- Безопасность. Можно сказать «из этой подсети — нельзя в ту». Так отделяют публичные сервисы от приватных БД.
- Маршрутизация. Роутерам и облаку проще обслуживать пакеты, когда сеть структурирована.
- Минимизация «шума». Некоторые служебные пакеты (broadcast, ARP) рассылаются всем в одной сети. Если сеть огромная — она перегружена.
- Отказоустойчивость. Падение в одной подсети не валит остальные.
Подсеть = подъезд в большом доме
Представь огромный жилой комплекс с адресом «улица Ленина, 1». Внутри 10 подъездов, в каждом по 50 квартир. Когда курьер несёт пиццу в «подъезд 3, квартира 15», он не ходит по всем 500 квартирам — он сразу идёт в подъезд 3.
Так же роутер сразу видит: «адрес из подсети 10.0.3.0/24 — отдаю в маршрут подсети 3». Это эффективная адресация.
2. Что такое маска подсети
Маска говорит компьютеру: «вот эта часть IP — адрес сети, а вот эта — адрес конкретного устройства». Они «слипаются» в один IP, и маска — это разделитель.
Пример. У тебя адрес 192.168.1.42 с маской 255.255.255.0:
Прочесть это нужно так: «адрес сети — 192.168.1.0, в ней хост номер 42».
Маска всегда выглядит как «слева подряд единицы, потом подряд нули». Нельзя написать маску 11110110 — порядок строгий.
3. CIDR-нотация — современный способ
Писать каждый раз 255.255.255.0 неудобно. Поэтому придумали короткую запись — CIDR (Classless Inter-Domain Routing). Она выглядит так:
192.168.1.0/24
Цифра после / — это сколько битов отведено под адрес сети. Остальные — под хосты. /24 = первые 24 бита это сеть, последние 32-24 = 8 бит — это хосты.
4. Таблица «префикс → адресов»
Эту таблицу запомни. Она нужна КАЖДЫЙ день, когда планируешь сеть.
| CIDR | Маска | Хостов | Применение |
|---|---|---|---|
/8 | 255.0.0.0 | ~16,7M | Историческое: «класс A». Сейчас — гигантская корпоративная сеть |
/12 | 255.240.0.0 | ~1M | Например, весь приватный диапазон 172.16.0.0/12 |
/16 | 255.255.0.0 | 65 534 | Стандартный размер VPC в AWS |
/20 | 255.255.240.0 | 4 094 | Большая подсеть в VPC |
/24 | 255.255.255.0 | 254 | Классическая подсеть («Class C»). Самая частая в проектах |
/26 | 255.255.255.192 | 62 | Средняя подсеть |
/28 | 255.255.255.240 | 14 | Маленькая подсеть — например, для NAT-gateway или management |
/30 | 255.255.255.252 | 2 | Двухточечный канал между двумя устройствами |
/32 | 255.255.255.255 | 1 | Один-единственный хост (для firewall-правил) |
Чем больше цифра в /N, тем меньше сеть. Это контринтуитивно. Запомни: «префикс = насколько строго мы зафиксировали биты». Чем больше зафиксировано — тем меньше осталось места для хостов.
Каждый шаг префикса на +1 сокращает количество адресов в 2 раза. /24 → 256, /25 → 128, /26 → 64, /27 → 32, /28 → 16…
5. Разбор примеров
Пример 1: 10.0.0.0/24
- Префикс /24 — первые 24 бита (= первые 3 октета) фиксированы
- «Сеть» —
10.0.0, последний октет — это адрес хоста - Диапазон:
10.0.0.0—10.0.0.255 - Всего адресов: 256. Полезных для устройств: 254 (минус сетевой и broadcast — см. ниже)
Пример 2: 10.0.0.0/16
- Префикс /16 — первые 16 бит (первые 2 октета) фиксированы
- «Сеть» —
10.0, последние 2 октета — адреса хостов - Диапазон:
10.0.0.0—10.0.255.255 - Всего адресов: 65 536. Полезных: 65 534.
Пример 3: «А это адрес лежит в этой сети?»
Часто задача звучит так: «Хост 10.0.5.42 принадлежит сети 10.0.0.0/16?»
Простой способ ответить: «сравни первые N бит». /16 — это первые 2 октета. У 10.0.0.0 они 10.0. У 10.0.5.42 — тоже 10.0. Да, принадлежит.
А 10.1.0.0/16? У него первые 2 октета — 10.1. У 10.0.5.42 — 10.0. Не совпадают — не принадлежит.
Пример 4: «Сколько /24-подсетей помещается в /16?»
Если /16 — это первые 16 бит, а /24 — первые 24, то на «дополнительные» 24-16 = 8 бит остаётся свободы. 28 = 256 подсетей /24 внутри одной /16. На этом часто построены проекты в AWS: один VPC /16 → 256 подсетей /24, по штуке в каждую зону доступности.
6. Спецадреса в подсети
В любой подсети есть 3 «зарезервированных» адреса, которые ты НЕ можешь назначить устройству:
Network address
Первый адрес в диапазоне (все хостовые биты = 0). Идентифицирует саму сеть, не устройство.
Для 10.0.0.0/24: 10.0.0.0
Broadcast address
Последний адрес (все хостовые биты = 1). Пакет на него получают все хосты в сети.
Для 10.0.0.0/24: 10.0.0.255
Default gateway
Часто (по соглашению) — первый «полезный» адрес. Это IP роутера, через который сеть выходит наружу.
Для 10.0.0.0/24: обычно 10.0.0.1
Cloud-резерв
AWS, GCP резервируют ещё несколько адресов в каждой подсети (для DNS, future use). Поэтому в облачной подсети /24 «полезных» не 254, а ~251.
7. Как DevOps проектирует подсети
Когда ты создаёшь VPC в AWS, ты должен сразу подумать на 5 лет вперёд. Поправить потом — почти невозможно (точнее, очень больно).
Чек-лист «правильный VPC»
- Бери /16, а не /24. Места «на вырост» должно быть много.
/16= 65k адресов, чего достаточно почти всем. - Разные среды — разные диапазоны. Не пересекающиеся. Пример:
10.10.0.0/16— prod,10.20.0.0/16— staging,10.30.0.0/16— dev. - Не пересекайся с офисом. Если у вас в офисе
192.168.0.0/16, в VPC выбирай 10.x — иначе VPN не поднимется. - Резервируй на зоны доступности. /16 → нарежь на 3-4 /20 (по одной на каждую availability zone), внутри каждой — /24 для приложений, БД, NAT.
- Документируй. Заведи markdown-таблицу «какой CIDR — для чего». Через 6 месяцев забудешь.
Типичный план небольшой компании:
# Прод
10.10.0.0/16 # VPC
10.10.1.0/24 public-az-a # открытые сервисы, ALB
10.10.2.0/24 public-az-b
10.10.10.0/24 private-az-a # приложения
10.10.11.0/24 private-az-b
10.10.20.0/24 data-az-a # RDS, кэш — недоступны из интернета
10.10.21.0/24 data-az-b
# Стейджинг
10.20.0.0/16
# Dev
10.30.0.0/16
8. Калькулятор в голове + команды
Быстрый трюк: маска /24 — 30
/24= 256 адресов/25= 128/26= 64/27= 32/28= 16/29= 8/30= 4
Запомни /24 → 256. Каждый +1 к префиксу — ровно вдвое меньше. Всё, для большинства задач хватит.
Команды
# Свой адрес и CIDR — Linux
ip -br addr # краткий формат — увидишь что-то вроде 192.168.1.42/24
# Все маршруты
ip route
# Покажет, в какие сети куда отправлять пакеты. Default — твой шлюз
# Проверить, в одной ли подсети два хоста
# (грубый способ — смотрим, что они отвечают через ARP без роутера)
ip neigh
Командно-строчные калькуляторы CIDR
# Установи ipcalc — кросс-платформенный
sudo apt install ipcalc # Ubuntu/Debian
brew install ipcalc # macOS
ipcalc 10.0.0.0/16
# Address: 10.0.0.0 00001010.00000000. 00000000.00000000
# Netmask: 255.255.0.0 = 16 11111111.11111111. 00000000.00000000
# Network: 10.0.0.0/16
# HostMin: 10.0.0.1
# HostMax: 10.0.255.254
# Broadcast: 10.0.255.255
# Hosts/Net: 65534
Запоминай ipcalc — он сэкономит тебе мозг. В реальной работе мало кто считает в уме — все запускают калькулятор.
9. Чек-лист «понимаю это»
Не отметил — вернись.
- ☐ Объясню, зачем сеть делят на подсети
- ☐ Понимаю, что маска — это разделитель «сеть/хост»
- ☐ Знаю наизусть:
/24= 256 адресов,/16= 65k,/8= 16M - ☐ Могу для адреса
10.0.5.7сказать: «в /24 — это10.0.5.0/24» - ☐ Помню про network address, broadcast, gateway
- ☐ Понимаю, почему две сети не должны пересекаться
- ☐ Запустил
ipcalcи поиграл с разными CIDR
10. Задачи — реши сам (это тренировка, не пропускай!)
Подсети — навык счётный: он появляется только от решения задач, как таблица умножения. Реши все шесть на бумаге, потом раскрывай ответы. Застрял — перечитай разделы 3–6 и вернись.
Задача 1. Разминка: сколько адресов в /25, /27 и /30? Сколько из них можно раздать устройствам?
/25 → 128 адресов (126 хостам), /27 → 32 (30 хостам), /30 → 4 (2 хостам). Правило: каждый +1 к префиксу делит сеть пополам; минус 2 служебных (network + broadcast).
Задача 2. Устройство: 192.168.10.77/26. Найди адрес сети, broadcast и диапазон для хостов.
/26 → блоки по 64: .0–.63, .64–.127, .128–.191, .192–.255. Наш .77 попадает во второй блок. Сеть 192.168.10.64, broadcast 192.168.10.127, хосты .65 – .126 (62 устройства).
Задача 3. В офис нужно подключить 40 устройств. Хватит ли сети /26? А /27?
/26 даёт 62 хоста — хватит (и запас на рост). /27 даёт всего 30 — не хватит. Всегда считай с запасом: сеть «впритык» закончится в самый неудобный момент.
Задача 4. 10.0.5.200/24 и 10.0.6.10/24 — соседи по одной подсети? А 10.0.5.200/16 и 10.0.6.10/16?
При /24 сетевая часть — три октета: 10.0.5 ≠ 10.0.6 — разные
сети, общаются только через роутер. При /16 сетевая часть — два октета: 10.0 =
10.0 — одна сеть, напрямую. Мораль: без маски адрес ни о чём не
говорит — «в одной ли мы сети» решает именно она.
Задача 5. Сервер: адрес 192.168.1.100, маска /25. Шлюз: 192.168.1.1. Пинг до шлюза не идёт, физика в порядке. Найди подвох.
/25 делит сеть на .0–.127 и .128–.255. Сервер (.100) — в первой половине, и шлюз (.1) — тоже… стоп, тогда всё должно работать! Проверь внимательнее: а какая маска на шлюзе? Если на сервере /25, а на шлюзе /24 — они считают границы сети по-разному, и связь может быть «однобокой». Маски должны совпадать у всех в подсети — это проверяют первым делом. (А если бы сервер был .200 — он оказался бы вообще в другой половине, чем шлюз.)
Задача 6. Тебе выдали 10.50.0.0/16 и попросили нарезать 4 равные подсети для 4 отделов. Какие?
Делим дважды пополам: /16 → два /17 → четыре /18. Блоки по 16 384 адреса:
10.50.0.0/18, 10.50.64.0/18, 10.50.128.0/18,
10.50.192.0/18 (третий октет шагает по 64). Проверь себя в ipcalc —
именно так планируют VPC в облаке.
/, тем меньше сеть. /24 — самый частый размер, 256 адресов. В каждой подсети 2 служебных адреса (network + broadcast). Не пересекай свои CIDR с чужими — потом не подружишь.
Итак, пакет умеет находить нужный компьютер: адрес + маска + шлюз. Но на компьютере одновременно работают браузер, мессенджер, игра и ещё десяток программ. Пакет пришёл — а кому из них его отдать? Для этого есть вторая половина адресации — порты. А заодно узнаешь, чем TCP отличается от UDP и что такое «рукопожатие».