Подсчёт подсетей IPv4 — Когда двоичная математика заставляет сомневаться в выборе карьеры

Обновлено

Объяснение подсетей IPv4 без боли. Понимание обозначения CIDR, масок подсетей, диапазонов хостов и того, почему /24 и /16 — совершенно разные вещи — с таблицей справок и онлайн-конвертером для IPv4, чтобы выполнять вычисления за вас.

Подсчёт подсетей IPv4 — когда двоичные вычисления заставляют вас сомневаться в выборе карьеры 1
Реклама · УДАЛИТЬ?

В какой-то момент в вашей карьере кто-то попросит вас «просто настроить сетевую инфраструктуру» для VPC, кластера Kubernetes или сети Docker. Вы откроете консоль AWS, увидите поле, в котором написано CIDR block, 10.0.0.0/24 и введёте

, потратив следующие 45 минут на расчёт подсети, размышляя, почему вы не можете добавить больше 254 хостов.

Вы не одиноки. Подсчёт подсетей IPv4 — одна из тем, где математика проста, но способ, которым она преподаётся — с использованием двоичного представления и терминов вроде «битовая операция AND» — заставляет разумных людей рассматривать карьеру в керамике. Данное руководство устраняет шум. К концу вы поймёте, что такое маски подсети, что такое обозначение CIDR, почему /24 и /16 — разные вещи, и как рассчитывать диапазоны хостов без перевода в двоичную систему. И когда вам нужно проверить свои вычисления, IPv4-конвертер выполняет тяжёлые расчёты адресов сети автоматически.

Что такое IPv4-адрес на самом деле

IPv4-адрес — это 32-битное число, записанное в четыре десятичных группы, называемых октетами. 192.168.1.100 означает 192 в первом октете, 168 во втором, 1 в третьем, 100 в четвёртом. Каждый октет может принимать значения от 0 до 255, поскольку каждый из них имеет ширину 8 бит (2⁸ = 256 возможных значений).

То, что вам нужно понять — без обращения к двоичной системе — заключается в том, что каждый IPv4-адрес состоит из двух логических частей: части сеть и части хост . Маска подсети показывает, где начинается одна часть и где заканчивается другая.

Маски подсети: линия разделения

Маска подсети выглядит точно так же, как и IP-адрес: 255.255.255.0 — наиболее распространённая маска, которую вы увидите. На самом деле это последовательность 1-с и 0-с в двоичной системе — те 1-с покрывают часть адреса, относящуюся к сети, а те 0-с — часть, относящуюся к хосту.

255.255.255.0 в двоичной системе — 11111111.11111111.11111111.00000000 — это 24 единицы. Примените это к 192.168.1.100 и вы говорите: первые 24 бита (192.168.1) относятся к сети. Последние 8 бит (.100) определяют конкретный хост в этой сети. Это ровно то, что означает /24 в обозначении CIDR. Вы просто считаете количество 1-с.

Обозначение CIDR: то же самое, но меньше текста

CIDR — Classless Inter-Domain Routing, которое вы сразу забудете и никогда не скажете вслух — это сокращение для адреса сети и его маски.

192.168.1.0/24 означает:

  • Адрес сети: 192.168.1.0
  • Маска подсети: 255.255.255.0 (24 бита установлены на 1)
  • Диапазон доступных хостов: 192.168.1.1 к 192.168.1.254
  • Общее количество доступных хостов: 254 (256 минус 2 — адрес сети и широковещательный адрес зарезервированы)

10.0.0.0/16 означает:

  • Адрес сети: 10.0.0.0
  • Маска подсети: 255.255.0.0 (16 бит установлены на 1)
  • Диапазон доступных хостов: 10.0.0.1 к 10.0.255.254
  • Общее количество доступных хостов: 65,534

The / число говорит о том, сколько битов закреплено как «сеть». Остальные биты свободны для хостов. Меньше закреплённых битов — больше хостов — большая подсеть.

Почему /24 не /16: практический пример

Вы создаёте VPC в AWS. Вы выбираете 10.0.0.0/24 потому что она выглядит нормально. Вы получаете 254 доступных IP-адреса. У вас есть четыре команды, каждая из которых нуждается в подсети с до 50 хостов. Вы пытаетесь разделить её на /26 подсети и… быстро истощаете пространство, чем ожидалось.

Затем ваш коллега говорит: «почему вы не использовали /16?» и исчезает.

10.0.0.0/16 даёт вам 65 534 доступных IP-адреса, которые вы можете разделить на 256 подсетей по 254 хоста или на 1024 подсети по 62 хоста. /16 — это ваша основная сеть; /24— это подсети, вырезанные из неё.

Ментальная модель: более длинное число префикса (/24, /26, /28) означает меньшую сеть с меньшим количеством хостов. Меньшее число префикса ( большую сеть с большим количеством хостов. Это кажется противоречивым до тех пор, пока оно не становится очевидным, и тогда оно остаётся очевидным навсегда./8, /16) означает меньшую сеть с меньшим количеством хостов. Меньшее число префикса ( большее сеть с большим количеством хостов. Это кажется неправдоподобным, пока не становится очевидным, и тогда становится очевидным навсегда.

Формула подсчёта хостов (без двоичных вычислений)

Формула проста:

Доступные хосты = 2^(32 − префикс) − 2

The 32 − prefix даёт количество битов хостов. Возведите 2 в эту степень для получения общего количества адресов. Отнимите 2 для адресов сети и широковещательного адреса.

  • /24: 2⁸ − 2 = 254 хоста
  • /25: 2⁷ − 2 = 126 хостов
  • /26: 2⁶ − 2 = 62 хоста
  • /28: 2⁴ − 2 = 14 хостов
  • /16: 2¹⁶ − 2 = 65 534 хоста

Вы можете это делать в уме для распространённых префиксов, или полностью пропустить этот шаг и использовать IPv4-конвертер для мгновенного получения полного расчёта.

Таблица распространённых подсетей

Сохраните это. Вы вернётесь к нему каждый раз, когда настраиваете VPC или сеть Docker.

CIDRМаска подсетиВсе адресаИспользуемые хостыОбщее использование
/8255.0.0.016,777,21616,777,214Большие частные сети
/16255.255.0.065,53665,534Основные сети VPC
/20255.255.240.04,0964,094Большие подсети AWS/GCP
/24255.255.255.0256254Стандартные LAN, малые подсети
/25255.255.255.128128126Половина /24
/26255.255.255.1926462Малые подсети команды
/27255.255.255.2243230Очень малые подсети
/28255.255.255.2401614Файрволы, шлюзы NAT
/30255.255.255.25242Связи точка-к-точке
/32255.255.255.25511 (сама по себе)Одиночные маршруты хостов

Практические паттерны: VPC, Docker, Kubernetes

VPC AWS

Стандартный паттерн — это /16 основная сеть VPC (10.0.0.0/16), разделённая на /24 подсети на каждом зоне доступности и в зависимости от назначения (публичные, приватные, данные). Это даёт до 256 подсетей с 254 доступными хостами каждая — достаточно для большинства приложений. Если ваша нагрузка велика, используйте /20 подсети и получите 4094 хоста в каждой подсети.

Одна AWS-специфическая проблема: AWS зарезервирует 5 IP-адресов на подсеть, а не стандартные 2. Первые четыре адреса и последний адрес зарезервированы для адреса сети, маршрутизатора VPC, DNS, будущего использования и широковещательного адреса соответственно. Поэтому в AWS /24 даёт 251 доступный IP-адрес, а не 254.

Сети Docker

По умолчанию Docker использует сеть bridge с 172.17.0.0/16. Когда вы создаёте собственную сеть, Docker по умолчанию выделяет адреса из диапазона 172.16.0.0/12 . Вы можете явно изменить это:

docker network create --subnet=10.10.0.0/24 my-network

The /24 — это намеренно, потому что вы не хотите, чтобы Docker использовал весь адресный пространство одной внутренней сети. Если вы запускаете несколько сетей Docker, которые должны общаться между собой или с хостами, подключёнными через VPN, убедитесь, что их диапазоны не пересекаются.

Kubernetes

Kubernetes имеет два отдельных диапазона CIDR: сеть подов подов (обычно 10.244.0.0/16 с Flannel или 192.168.0.0/16 с Calico) и сеть сервисов сервисов (обычно 10.96.0.0/12). Эти диапазоны не должны пересекаться между собой или с сетью узлов. Если они пересекаются, вы потратите время на отладку, почему поды не могут достичь сервисов и разрешение DNS несогласовано.

При планировании сетевого взаимодействия в Kubernetes используйте IPv4-конвертер для проверки того, чтобы диапазоны подов, сервисов и подсети узлов не пересекались до того, как вы напишете файл Helm values. Пять минут расчёта адресов сети до начала работы — это лучше, чем час отладки позже. kubectl exec отладка позже.

IPv4 подсчёт подсетей без страданий

Понимание концепций, описанных выше, достаточно для уверенного настройки сетей. Деталь реализации — «какой диапазон хостов у 172.31.32.0/20?» — это то, где большинство людей сталкиваются с трудностями и обращаются к подсчётчику подсетей. Это правильный инстинкт.

The IPv4-конвертер даёт вам адрес сети, широковещательный адрес, диапазон хостов, маску подсети и обозначение CIDR на основе одного ввода. Вставьте свой IP и префикс, получите всё, что нужно для настройки VPC, правил безопасности группы или списка разрешений в файрволе. Не требуется аккаунт, нет лишнего.

Сохраните его в вкладке. Вы будете использовать его чаще, чем думаете.

Хотите убрать рекламу? Откажитесь от рекламы сегодня

Установите наши расширения

Добавьте инструменты ввода-вывода в свой любимый браузер для мгновенного доступа и более быстрого поиска

в Расширение Chrome в Расширение края в Расширение Firefox в Расширение Opera

Табло результатов прибыло!

Табло результатов — это интересный способ следить за вашими играми, все данные хранятся в вашем браузере. Скоро появятся новые функции!

Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?
Реклама · УДАЛИТЬ?

новости с техническими моментами

Примите участие

Помогите нам продолжать предоставлять ценные бесплатные инструменты

Купи мне кофе
Реклама · УДАЛИТЬ?