Калькулятор CIDR / подсетей
Вычисляет адрес сети, диапазон узлов, маски и число адресов для любого блока IPv4 или IPv6 и делит его на равные подсети.
| Сеть | 192.168.1.0/24 |
|---|---|
| Адрес сети | 192.168.1.0 |
| Широковещательный адрес | 192.168.1.255 |
| Используемый диапазон | 192.168.1.1 – 192.168.1.254 |
| Используемых адресов | 254 |
| Всего адресов | 256 |
| Маска подсети | 255.255.255.0 |
| Обратная маска | 0.0.0.255 |
Что делает этот инструмент
Блок CIDR вроде 192.168.1.0/24 — это компактный способ назвать диапазон адресов. Этот инструмент берёт такой блок и отвечает на вытекающие из него вопросы: где диапазон начинается и заканчивается, сколько адресов в нём, сколько из них можно выдать машине, как выглядит маска подсети, попадает ли внутрь конкретный адрес и что получится, если разрезать блок на части поменьше.
Он работает с IPv4 и IPv6 и принимает адрес узла так же охотно, как адрес сети: вставьте 192.168.1.57/24 прямо из ip addr, и он скажет, в каком блоке живёт этот адрес. Всё это арифметика, выполняемая в вашем браузере: никаких запросов, никакого сервера, и работает при выдернутом кабеле.
Что означает число после косой черты
Адрес IPv4 — это 32 бита. Число после косой черты — длина префикса — говорит, сколько из этих битов определяют сеть; остальные определяют узел внутри неё. /24 фиксирует первые 24 бита и оставляет 8 свободными, поэтому в нём 2^8 = 256 адресов.
192.168.1.0 # адрес 11000000.10101000.00000001.00000000 # его 32 бита 11111111.11111111.11111111.00000000 # маска /24: 24 единицы, 8 нулей
Там, где в маске стоит единица, бит принадлежит сети и одинаков у каждого адреса блока; там, где стоит ноль, бит свободен и определяет узел. Каждый дополнительный бит префикса делит блок пополам. Это соотношение и есть вся суть разбиения на подсети, и его стоит усвоить, а не заучивать таблицу:
- /24 — 256 адресов, 254 используемых. Классическая небольшая сеть.
- /25 — 128 адресов, 126 используемых. Половина /24.
- /26 — 64 адреса, 62 используемых.
- /30 — 4 адреса, 2 используемых. Традиционная двухточечная линия.
- /16 — 65 536 адресов. Это /24 двести пятьдесят шесть раз.
Почему двух адресов не хватает
В /24 256 адресов, но используемых только 254, потому что IPv4 тратит два из них. Первый адрес блока — адрес сети, он называет сам блок и не назначается ни одному интерфейсу. Последний — широковещательный адрес, достигающий всех узлов канала разом. Отсюда и знакомое 2^n − 2.
Два префикса ломают эту формулу, и большинство калькуляторов ошибается хотя бы в одном из них:
- В /31 два адреса, а формула говорит ноль используемых. RFC 3021 определяет /31 для двухточечных линий, где широковещательный адрес не нужен и оба адреса назначаются — по одному на каждый конец. Правильный ответ — 2.
- /32 — это один адрес, а формула говорит −1. /32 называет ровно один узел; именно так записывают отдельный сервер в правиле межсетевого экрана или в маршруте.
Этот инструмент следует RFC 3021 и сообщает 2 и 1 в этих случаях. Если другой калькулятор говорит вам, что у /31 нет используемых адресов, это учебная формула, применённая за пределами области, где она верна.
Маска подсети и обратная маска
Маска подсети несёт ту же информацию, что и длина префикса, записанную четырьмя октетами: биты сети — единицы, биты узла — нули. /24 — это 255.255.255.0. Старые форматы конфигурации хотят маску, новые — префикс, и они взаимозаменяемы.
Обратная маска — это инвертированная маска подсети: 0.0.0.255 для /24. Списки доступа Cisco и операторы network в OSPF пишутся именно с ней, и инверсия сбивает с толку достаточно часто, чтобы сказать об этом прямо: в обратной маске нулевой бит означает «должен совпасть», а единичный — «неважно», то есть ровно наоборот по сравнению с маской подсети.
IPv6 — та же идея с меньшим числом исключений
Адреса IPv6 занимают 128 битов вместо 32, а префикс работает точно так же: /64 фиксирует первые 64 бита. Арифметика та же; меняется то, что исчезают два усложнения IPv4.
- Широковещательного адреса нет. IPv6 заменил широковещание многоадресной рассылкой, поэтому в конце префикса ничего не зарезервировано.
- В начале тоже ничего не зарезервировано, поэтому каждый адрес блока назначаем, и число используемых совпадает с общим. (Нулевой адрес подсети — это anycast-адрес маршрутизатора подсети, соглашение маршрутизации, а не дыра в диапазоне.)
- Нет маски подсети в точечной записи. IPv6 всегда пишется длиной префикса; 128-битная маска текстом была бы нечитаемой, и её никто не просит.
/64 — стандартный размер для одного канала, потому что автоконфигурация адресов без сохранения состояния рассчитывает на 64 бита узла. Площадке обычно выделяют /48 или /56, который затем делят на /64 — по одному на VLAN или сегмент. Поэтому этот инструмент охотно разделит /48 на /64 и скажет, что их 65 536.
Числа адресов растут быстро, поэтому они показаны и степенью двойки, и полной цифрой: в /32 содержится 2^96 адресов, то есть 79 228 162 514 264 337 593 543 950 336. Степень — то, что читается; цифры — то, что копируют.
Как писать адреса IPv6 канонически
Один и тот же адрес IPv6 можно записать многими способами, из-за чего сравнивать два адреса на глаз ненадёжно. RFC 5952 задаёт единственную каноническую текстовую форму, и именно её выдаёт этот инструмент:
- Шестнадцатеричные буквы в нижнем регистре и никаких ведущих нулей внутри группы — 2001:0db8 становится 2001:db8.
- Самая длинная последовательность нулевых групп заменяется на ::, и только самая длинная. При равенстве побеждает левая.
- Одиночная нулевая группа никогда не сжимается, потому что :: ничего бы не сэкономило и создало бы второе написание.
Развёрнутая форма показана рядом, каждая группа дополнена до четырёх цифр. Она не каноническая, но именно она выравнивается в столбец, когда сравниваешь список адресов.
Разделение блока
Разрезать одну сеть на несколько равных — та операция, ради которой обычно и открывают калькулятор подсетей. Каждый дополнительный бит префикса удваивает число подсетей и вдвое уменьшает их размер: /24 превращается в два /25, четыре /26, восемь /27 и так далее.
192.168.1.0/24 -> /26 192.168.1.0/26 # адреса 0-63 192.168.1.64/26 # адреса 64-127 192.168.1.128/26 # адреса 128-191 192.168.1.192/26 # адреса 192-255
Подсети покрывают родительский блок в точности — без пропусков и наложений, и это свойство стоит проверять, когда режешь адресное пространство вручную. Учтите, что числа растут быстро: /8, разделённый на /24, — это 65 536 сетей, поэтому список здесь ограничен, а настоящий итог указан рядом, вместо того чтобы молча обрезать ответ.
Диапазоны с особым значением
Некоторые блоки зарезервированы под конкретное назначение, и сеть, оказавшаяся внутри такого блока, помечается здесь. Чаще всего встречаются эти:
- Частные (RFC 1918) — 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Маршрутизируются внутри организации, но никогда в публичном интернете.
- Петлевые — 127.0.0.0/8 в IPv4 и ::1 в IPv6. Трафик, который никогда не покидает узел.
- Link-local — 169.254.0.0/16 и fe80::/10. Назначаются самостоятельно, действительны только в пределах одного канала. Адрес IPv4 из этого диапазона обычно означает, что DHCP не сработал.
- CGNAT оператора — 100.64.0.0/10. Используется между абонентом и провайдером; увидеть его в своей сети — признак NAT на стороне провайдера.
- Документация — 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 и 2001:db8::/32. Зарезервированы для примеров, поэтому и встречаются на этой странице повсюду.
- Уникальные локальные — fc00::/7. Аналог частного пространства RFC 1918 в IPv6.
Метка ставится только тогда, когда весь блок находится внутри особого диапазона, а не просто пересекается с ним. 0.0.0.0/0 покрывает все существующие частные диапазоны, но сам частным не является, и утверждать обратное было бы хуже, чем промолчать.
Частые вопросы
- Сколько используемых узлов в /24?
- 254. В блоке 256 адресов; первый — адрес сети, последний — широковещательный, и ни один из них нельзя назначить интерфейсу. То же вычитание даёт 126 для /25, 62 для /26 и 2 для /30.
- Почему здесь у /31 два используемых адреса, а другие калькуляторы говорят, что ни одного?
- Потому что RFC 3021 определяет /31 для двухточечных линий, где широковещательный адрес не нужен, а оба адреса назначаются — по одному на каждый конец линии. Калькуляторы, сообщающие ноль, применяют формулу 2^n − 2 за пределами области, где она верна.
- Чем маска подсети отличается от обратной маски?
- Они обратны друг другу. У маски подсети на битах сети стоят единицы (255.255.255.0 для /24); у обратной маски там нули (0.0.0.255). В обратной маске ноль означает, что бит должен совпасть, а единица — что он игнорируется, то есть наоборот по сравнению с интуицией, которую формирует маска подсети.
- Можно ли вставить адрес, который не является адресом сети?
- Да, и это обычный случай. Дайте ему 192.168.1.57/24 — и он покажет, что сеть это 192.168.1.0/24, отметив, что введённый адрес является узлом внутри неё. Именно это выдают ip addr или ipconfig, так что ничего править заранее не нужно.
- Почему в IPv6 не показаны широковещательный адрес и маска подсети?
- Потому что ни того, ни другого не существует. IPv6 отказался от широковещания в пользу многоадресной рассылки, поэтому в конце префикса ничего не зарезервировано, и он всегда пишется длиной префикса, а не точечной маской. Каждый адрес блока IPv6 назначаем, поэтому число используемых совпадает с общим.
- Какого размера должен быть префикс подсети IPv6?
- /64 — почти во всех случаях. Автоконфигурация адресов без сохранения состояния предполагает 64 бита узла, поэтому меньший префикс ломает её на обычном канале. Площадкам обычно выделяют /48 или /56 и делят его на /64, по одному на сегмент: в /48 их 65 536, так что экономить незачем.
- Отправляется ли что-нибудь из введённого на сервер?
- Нет. Это арифметика, выполняемая в вашем браузере: ничего не запрашивается, не загружается и не записывается в журнал. Поэтому он продолжает работать и вовсе без подключения к сети.