Урок 3 — Маски подсети и CIDR

Когда ты увидишь 10.0.0.0/24 или 192.168.1.0/16, ты должен понимать это сразу, без расчётов. Это один из «обязательных навыков» DevOps — без него ты не спроектируешь облачную сеть.

В этом уроке
  1. Зачем сеть делят на подсети
  2. Что такое маска подсети
  3. CIDR-нотация — современный способ
  4. Таблица «префикс → адресов» (которую можно запомнить)
  5. Разбор примеров
  6. Спецадреса в подсети: сеть, broadcast, шлюз
  7. Как DevOps проектирует подсети
  8. Калькулятор в голове + команды
  9. Чек-лист «понимаю это»
  10. Задачи с ответами
Вспомни из прошлого урока

IPv4-адрес — это 4 октета по 8 бит: 192.168.1.42 внутри компьютера выглядит как 32 нуля-единицы. Октет — число от 0 до 255. Если биты подзабылись — вернись к разделу «Биты, байты и октеты» урока 2: сегодня мы будем резать адрес по битам, и без этого фундамента маска останется магией.

1. Зачем сеть делят на подсети

В прошлом уроке мы говорили про адреса вроде 192.168.1.42. Но в реальности у компании, провайдера или AWS-аккаунта не один IP — у них тысячи и миллионы. Чтобы управлять таким хозяйством, сеть нужно разделить на куски — подсети.

Зачем делить?

Аналогия

Подсеть = подъезд в большом доме

Представь огромный жилой комплекс с адресом «улица Ленина, 1». Внутри 10 подъездов, в каждом по 50 квартир. Когда курьер несёт пиццу в «подъезд 3, квартира 15», он не ходит по всем 500 квартирам — он сразу идёт в подъезд 3.

Так же роутер сразу видит: «адрес из подсети 10.0.3.0/24 — отдаю в маршрут подсети 3». Это эффективная адресация.

2. Что такое маска подсети

Маска говорит компьютеру: «вот эта часть IP — адрес сети, а вот эта — адрес конкретного устройства». Они «слипаются» в один IP, и маска — это разделитель.

Пример. У тебя адрес 192.168.1.42 с маской 255.255.255.0:

IP-адрес делится на «сеть» и «хост» IP 192.168.1.42 11000000 10101000 00000001 00101010 Mask 255.255.255.0 11111111 11111111 11111111 00000000 ↑ адрес сети (где маска = 1) ↑ адрес хоста (где = 0) 192.168.1.0 .42
Маска — это разделитель. Где маска=1, то часть IP принадлежит «адресу сети». Где маска=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 бит — это хосты.

32 бита IPv4 → префикс /N означает «N бит на сеть» 24 бита = сеть 8 бит = хост 28 = 256 возможных адресов хостов в этой сети (минус 2 служебных — см. ниже — итого 254 для устройств)
CIDR /24 — первые 24 бита идентифицируют сеть, оставшиеся 8 — конкретный хост.
биты сети (фиксированы) биты хоста (меняются)

4. Таблица «префикс → адресов»

Эту таблицу запомни. Она нужна КАЖДЫЙ день, когда планируешь сеть.

CIDRМаскаХостовПрименение
/8255.0.0.0~16,7MИсторическое: «класс A». Сейчас — гигантская корпоративная сеть
/12255.240.0.0~1MНапример, весь приватный диапазон 172.16.0.0/12
/16255.255.0.065 534Стандартный размер VPC в AWS
/20255.255.240.04 094Большая подсеть в VPC
/24255.255.255.0254Классическая подсеть («Class C»). Самая частая в проектах
/26255.255.255.19262Средняя подсеть
/28255.255.255.24014Маленькая подсеть — например, для NAT-gateway или management
/30255.255.255.2522Двухточечный канал между двумя устройствами
/32255.255.255.2551Один-единственный хост (для firewall-правил)
Правило в голове

Чем больше цифра в /N, тем меньше сеть. Это контринтуитивно. Запомни: «префикс = насколько строго мы зафиксировали биты». Чем больше зафиксировано — тем меньше осталось места для хостов.

Каждый шаг префикса на +1 сокращает количество адресов в 2 раза. /24 → 256, /25 → 128, /26 → 64, /27 → 32, /28 → 16…

5. Разбор примеров

Пример 1: 10.0.0.0/24

Пример 2: 10.0.0.0/16

Пример 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.4210.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.

Сеть 10.0.0.0/24 — кто есть кто .0 сеть .1 шлюз .2 .42 .200 .255 broadcast .1—.254 — здесь живут устройства (254 шт.) Из 256 адресов 2 служебных, остальные — твои

7. Как DevOps проектирует подсети

Когда ты создаёшь VPC в AWS, ты должен сразу подумать на 5 лет вперёд. Поправить потом — почти невозможно (точнее, очень больно).

Чек-лист «правильный VPC»

  1. Бери /16, а не /24. Места «на вырост» должно быть много. /16 = 65k адресов, чего достаточно почти всем.
  2. Разные среды — разные диапазоны. Не пересекающиеся. Пример: 10.10.0.0/16 — prod, 10.20.0.0/16 — staging, 10.30.0.0/16 — dev.
  3. Не пересекайся с офисом. Если у вас в офисе 192.168.0.0/16, в VPC выбирай 10.x — иначе VPN не поднимется.
  4. Резервируй на зоны доступности. /16 → нарежь на 3-4 /20 (по одной на каждую availability zone), внутри каждой — /24 для приложений, БД, NAT.
  5. Документируй. Заведи 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. Каждый +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. Чек-лист «понимаю это»

Не отметил — вернись.

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.510.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 в облаке.

Маска / CIDR-префикс делят IP-адрес на «адрес сети» и «адрес хоста». Чем больше число после /, тем меньше сеть. /24 — самый частый размер, 256 адресов. В каждой подсети 2 служебных адреса (network + broadcast). Не пересекай свои CIDR с чужими — потом не подружишь.
Мост к следующему уроку

Итак, пакет умеет находить нужный компьютер: адрес + маска + шлюз. Но на компьютере одновременно работают браузер, мессенджер, игра и ещё десяток программ. Пакет пришёл — а кому из них его отдать? Для этого есть вторая половина адресации — порты. А заодно узнаешь, чем TCP отличается от UDP и что такое «рукопожатие».

← Назад
Урок 2: IP-адреса