Конвертер диапазонов IP и CIDR

Введите начальный и конечный IP-адрес, чтобы получить наименьший набор CIDR-блоков, точно покрывающий этот диапазон (или CIDR-блок, чтобы развернуть его обратно в первый и последний адрес), объедините список CIDR-блоков в минимальный эквивалентный набор и проверьте, входит ли заданный IP в заданную подсеть — всё считается прямо в браузере, данные никуда не отправляются.

Диапазон ↔ CIDR

Конвертер диапазонов IP и CIDR

Эта страница — для сетевого инженера, у которого есть произвольный диапазон IP-адресов — из лога файрвола, запроса на добавление в allowlist или опубликованного адресного блока облачного провайдера — и который нужно выразить как CIDR, или наоборот. Не каждый диапазон — это один CIDR-блок: размер CIDR-блока должен быть степенью двойки, а его начальный адрес должен приходиться на соответствующую границу, поэтому произвольный диапазон вроде 203.0.113.10–203.0.113.37 (28 адресов, начинается в середине блока) требует нескольких блоков разного размера, состыкованных так, чтобы покрыть его точно, без непокрытых адресов и без выхода за любую из границ.

Конвертер выше находит такой минимальный набор, каждый раз беря самый большой блок, который одновременно начинается точно в текущей позиции и ещё помещается до конца диапазона, затем повторяя с того места, где закончился этот блок. Для 203.0.113.10–203.0.113.37 получаются 5 блоков (.10/31, .12/30, .16/28, .32/30, .36/31) вместо 28 отдельных маршрутов /32 на каждый хост — тот же принцип минимального покрытия, который маршрутизатор использует при сжатии таблицы маршрутизации, и та же причина, по которой allowlist в виде CIDR обычно намного короче, чем в виде списка отдельных адресов. Таблица маршрутизации, набор правил файрвола или ACL с меньшим числом более крупных записей быстрее обрабатывается и проще для человека при аудите, чем список, раздутый записями на один хост.

Инструмент агрегации ниже решает смежную, но другую задачу: имея несколько CIDR-блоков, которые у вас уже есть (не сырой диапазон), объединить любые смежные или пересекающиеся блоки в меньшее число более крупных. 10.0.0.0/25 и 10.0.0.128/25 — смежные половины одного /24 и объединяются в 10.0.0.0/24; два блока, которые просто пересекаются (например, 10.0.0.0/24 и 10.0.0.128/25), объединяются так же, оставляя только покрывающее объединение. Объединённый интервал редко сам по себе выровнен по границе CIDR, поэтому агрегатор заново разбивает каждый объединённый отрезок на минимальные CIDR-блоки тем же алгоритмом, что и конвертер диапазонов выше — два инструмента используют общую арифметику, не только страницу.

Проверка «входит ли IP в подсеть» напрямую отвечает на более узкий, но очень частый вопрос: «входит ли 10.0.0.130 в 10.0.0.0/24, и если да, то каковы адрес сети и broadcast-адрес этой подсети?» — полезно, чтобы быстро подтвердить, что правило файрвола или маршрут действительно соответствует ожидаемому адресу, включая легко упускаемый краевой случай, когда проверяемый адрес — это сам адрес сети или broadcast (он всё равно «входит в подсеть» по определению, просто не является доступным адресом хоста).

Агрегация списка CIDR

Вставьте небольшой, вручную составленный список CIDR-блоков (через запятую или с новой строки), чтобы объединить любые пересекающиеся или смежные записи в минимальный эквивалентный набор. Для суммирования большого вставленного списка множества адресов см. инструмент для массовых списков IP (скоро).

Входит ли этот IP в эту подсеть?

Введите IP-адрес и CIDR-блок, чтобы проверить, входит ли адрес в него, а также узнать адрес сети и broadcast-адрес этой подсети.

Глоссарий

Минимальное покрывающее множество
Наименьший возможный список CIDR-блоков, которые вместе точно покрывают заданный диапазон адресов, без пропусков и без адресов за пределами исходного диапазона.
Выравнивание блока
Начальный адрес CIDR-блока должен быть кратен его собственному размеру (в адресах) — 10.0.0.64/26 выровнен (64 кратно 64), а блок размера /26, начинающийся с 10.0.0.32, вообще не является допустимым CIDR-блоком.
Смежные блоки
Два CIDR-блока, где broadcast-адрес одного непосредственно предшествует адресу сети другого (10.0.0.0/25 и 10.0.0.128/25) — их можно объединить в один более крупный блок, даже если они не пересекаются.
Агрегация / суммаризация маршрутов
Замена нескольких меньших, смежных или пересекающихся CIDR-блоков меньшим числом более крупных, покрывающих то же адресное пространство — уменьшает размер таблицы маршрутизации или ACL, не меняя, какие адреса совпадают.
Принадлежность подсети
Адрес считается принадлежащим подсети, если он находится между адресом сети и broadcast-адресом этой подсети включительно — это включает и сам адрес сети, и broadcast-адрес, хотя они и не являются доступными адресами хостов.

Часто задаваемые вопросы

Почему небольшой диапазон разбивается на несколько CIDR-блоков?
Начальный адрес CIDR-блока должен приходиться на границу, кратную его размеру, а размер должен быть степенью двойки. Произвольный диапазон редко начинается и заканчивается на таких границах, поэтому для точного покрытия обычно нужно несколько блоков разного размера, а не один.
В чём разница между этим инструментом и инструментом для массовых списков IP?
Этот агрегатор — для небольшого, вручную введённого или вставленного списка CIDR-блоков, которые у вас уже есть. Будущий инструмент для массовых списков IP — для классификации большого вставленного списка отдельных адресов (частные, bogon, CGNAT и т. д.) — другой масштаб и другая задача.
Меняет ли агрегация то, какие адреса покрыты?
Нет — агрегированный результат всегда покрывает ровно объединение адресов входных блоков, не больше и не меньше. Меняется только то, как это же множество адресов выражено (меньшим числом более крупных блоков вместо большего числа мелких).
Считается ли сам адрес сети или broadcast-адрес «входящим в подсеть»?
Да. Принадлежность подсети охватывает каждый адрес от адреса сети до broadcast-адреса включительно — просто эти два граничных адреса не являются доступными адресами хостов на подсети.
Отправляет ли этот инструмент мои диапазоны или список CIDR куда-либо?
Нет. Любой расчёт на этой странице — конвертер диапазон/CIDR, агрегатор и проверка вхождения в подсеть — выполняется полностью в вашем браузере обычной арифметикой; ничего из введённого здесь не отправляется на наши серверы или куда-либо ещё.
Поддерживает ли список CIDR IPv6?
Нет — конвертер диапазонов, агрегатор и проверка вхождения в подсеть на этой странице работают только с IPv4; записи, похожие на IPv6-адрес или CIDR-блок, показываются как ошибка.

API-эквивалент

Арифметика диапазонов/CIDR выше полностью выполняется на вашем устройстве — эта страница не делает ни одного сетевого запроса для расчёта результата. Если вам нужно вместо этого получить сетевые/реестровые факты о реальном, маршрутизируемом IP-адресе на стороне сервера как часть более крупного запроса, группа network нашего основного API возвращает такие же факты:

curl
curl "https://ip.xakki.pro/api/v1/ip?ip=203.0.113.10&include=network"

Пример ответа (сокращённо):

{
  "schemaVersion": 15,
  "status": "ok",
  "ip": "203.0.113.10",
  "version": 4,
  "network": {
    "asn": 65536,
    "prefix": "203.0.113.0/24",
    "registry": "arin"
  }
}

Читать полную документацию по API

Понравился инструмент? Бесплатный аккаунт нашего API даёт 1000 запросов в день.Смотреть документацию API →