Калькулятор подсетей
Вычисляйте сетевой адрес, широковещательный адрес, маску, диапазон хостов и CIDR для IPv4/IPv6 — полностью в вашем браузере.
Что такое калькулятор подсетей?
Калькулятор подсетей — это инструмент, который принимает IP-адрес вместе с префиксом CIDR или маской подсети и вычисляет структурные параметры сети: сетевой адрес, широковещательный адрес, диапазон доступных хостов, общее количество хостов и двоичную границу между сетевыми и хостовыми битами. Сетевые инженеры, системные администраторы и разработчики обращаются к нему, когда нужно спланировать распределение VLSM, написать правила брандмауэра, разобраться, «почему эти хосты не видят друг друга», или настроить таблицы маршрутизации. С точки зрения математики это побитовые операции AND/OR с маской — в теории просто, но на практике легко ошибиться, особенно при переключении между IPv4 и IPv6, адреса которых составляют 32 и 128 бит соответственно. Этот калькулятор работает целиком в вашем браузере с использованием BigInt, поэтому корректно обрабатывает полный диапазон IPv6 (от /0 до /128) без потери точности и никогда не отправляет введённый адрес на сервер.
Как пользоваться
Шаги
- Выберите IPv4 или IPv6 переключателем в верхней части.
- Введите IP-адрес в поле ввода — например, 10.0.0.42 или 2001:db8::1.
- Скорректируйте длину префикса с помощью числового поля или ползунка; результаты обновляются мгновенно.
- Нажмите на любую плитку результата, чтобы скопировать значение в буфер обмена.
- Для IPv4 при необходимости разделите сеть на меньшие подсети, задав более длинный целевой префикс.
Частые заблуждения
- Сети /31 не сломаны — RFC 3021 явно разрешает их на двухточечных каналах, где оба адреса можно использовать.
- /32 представляет одиночный хост (host route), а не пустую сеть. То же касается IPv6 /128.
- Понятия «широковещательный адрес» в IPv6 не существует; вместо него поле показывает последний адрес префикса, выполняющий ту же роль при проверках диапазона.
- Wildcard-маски (применяемые в Cisco ACL) — это просто побитовое NOT от маски подсети: 0.0.0.255 — это wildcard для 255.255.255.0.
Сценарии использования
Технический принцип
Адрес IPv4 — это 32 бита, IPv6 — 128 бит. Нотация CIDR (RFC 4632, август 2006) добавляет к адресу длину префикса /n, объявляя левые n битов идентификатором сети, а оставшиеся — идентификатором хоста. Маска подсети — это битовый шаблон из n идущих подряд единиц, за которыми следуют 32−n (или 128−n) нулей: для /24 это 11111111.11111111.11111111.00000000, или 255.255.255.0 в десятичной записи через точку. CIDR пришёл на смену классовой адресации из RFC 791 (где 0.0.0.0–127.255.255.255 относились к классу A с неявным /8, при этом 0.0.0.0/8 был зарезервирован как 'эта сеть', а 127.0.0.0/8 — для loopback; 128.0.0.0–191.255.255.255 — класс B (/16); 192.0.0.0–223.255.255.255 — класс C (/24)), которая катастрофически расходовала адреса: компании из 1000 сотрудников, получившей Класс B, доставалось 65 534 хоста, тогда как требовалось 1000, что фрагментировало пространство IPv4. CIDR разрешает любую длину префикса, что делает возможными VLSM (маска подсети переменной длины, первоначально формализовано в RFC 950 (1985)) и агрегацию маршрутов («суперсетинг»). Ключевые операции — побитовые: сеть = адрес AND маска; широковещание = сеть OR (NOT маска) = сеть OR wildcard. Для 192.168.1.100/24 адрес 0xC0A80164, AND с 0xFFFFFF00, даёт 0xC0A80100 (192.168.1.0), а OR с 0x000000FF — 0xC0A801FF (192.168.1.255). Доступных хостов в IPv4 — 2^(32−n) − 2 (вычитаются адреса сети и широковещания); это «−2» исчезает на /31 (RFC 3021 вернул его для двухточечных каналов, оба конца используются) и /32 (одиночный host route). В IPv6 широковещательного адреса нет — его заменили multicast и anycast, поэтому «последний адрес» — это просто верхняя граница диапазона префикса. Встроенные побитовые операторы JavaScript работают с 32-битными знаковыми числами, что приводит к переполнению на 0xFFFFFFFF в IPv4 (превращается в −1) и совсем не подходит для IPv6; этот калькулятор повсюду использует BigInt, обеспечивая одинаковую корректность для обеих версий. Частное адресное пространство для IPv4 определено в RFC 1918: 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. В IPv6 применяются Unique Local Addresses (RFC 4193) в fc00::/7, плюс link-local fe80::/10 для SLAAC и связи в пределах канала. Калькулятор помечает такие адреса, чтобы вы случайно не анонсировали частный диапазон в публичный BGP. Типичные ошибки, которые предотвращает этот инструмент: (1) ввод 192.168.1.100/255.255.255.0 вместо /24 — калькулятор принимает форму с префиксом и показывает маску в десятичной записи; (2) неверный подсчёт ёмкости хостов для /30 и /29 (2 против 6 хостов); (3) разбиение /24 на восемь /27 и ошибка в начале четвёртой подсети (она начинается с 192.168.1.96, а не 192.168.1.97); (4) путаница wildcard 0.0.0.255 с маской 255.255.255.0 в синтаксисе Cisco ACL. Двоичная визуализация с подсветкой сетевых битов — самый быстрый способ закрепить ту самую границу, после понимания которой все эти ошибки исчезают сами собой.
- RFC 4632 (август 2006) определяет CIDR — Classless Inter-Domain Routing — заменяя классовую схему A/B/C из RFC 791. Нотация /n задаёт длину сетевого префикса; оставшиеся биты — хостовая часть. CIDR обеспечивает VLSM (первоначально формализовано в RFC 950 (1985)) и агрегацию маршрутов, что необходимо для экономии IPv4 и устройства современной таблицы BGP.
- Сетевой адрес = IP AND маска; широковещание = сеть OR wildcard (где wildcard = NOT маска). Для /24: маска 0xFFFFFF00, wildcard 0x000000FF. Доступно хостов = 2^(32−n) − 2, кроме /31 (RFC 3021, оба адреса используются на двухточечных каналах) и /32 (одиночный host route).
- В IPv6 (128 бит) нет широковещания — его заменили multicast (ff00::/8) и anycast. Конвенциональный минимальный префикс — /64 (для SLAAC, 18 квинтиллионов адресов на подсеть); /56 или /48 на сайт; /32 на ISP. Адресное пространство IPv6 ставит во главу угла агрегацию маршрутов, а не экономию адресов.
- Зарезервированные диапазоны помимо RFC 1918: 127.0.0.0/8 — это loopback, 169.254.0.0/16 — link-local IPv4 (auto-IP / APIPA), 224.0.0.0/4 — multicast, 240.0.0.0/4 зарезервирован для экспериментального использования. В IPv6 также зарезервированы fe80::/10 для link-local SLAAC, ff00::/8 для multicast и ::1/128 для loopback. Калькулятор отличает частные диапазоны от публичных, чтобы вы с одного взгляда могли определить, маршрутизируется ли введённый адрес в публичном интернете.
- Побитовые операторы JavaScript — 32-битные знаковые: (0xFFFFFFFF & 0xFFFFFF00) возвращает −256, а не 0xFFFFFF00. Этот калькулятор повсеместно использует BigInt, чтобы обрабатывать полный диапазон IPv4 и 128-битный IPv6 без потери точности. Один и тот же путь кода считает обе версии; различается только ширина маски.
- Типичная ловушка Cisco/Juniper: синтаксис ACL принимает wildcard-маску (0.0.0.255), а не маску подсети (255.255.255.0). Операторы «network» в EIGRP и OSPF тоже используют wildcards. Инвертированная маска покрывает дополнение к нужной сети — в протоколах маршрутизации это происходит молча (соседство не устанавливается), а в ACL — с риском (пропускается чужой трафик).
- Пример VLSM: /24, разделённая на 4 равные подсети, превращается в 4 × /26 (по 64 адреса в каждой), доступно по 62 хоста на подсеть. Соседние /26 начинаются со смещений 0, 64, 128, 192 — а НЕ 0, 63, 127, 191. Инструмент разделения в калькуляторе сам формирует эти границы, чтобы их не приходилось пересчитывать в уме.
Примеры
Стандартная /24 (самая распространённая LAN)
Ввод: 192.168.1.100/24
Сеть: 192.168.1.0
Broadcast: 192.168.1.255
Маска: 255.255.255.0
Wildcard: 0.0.0.255
Хосты: 192.168.1.1 - 192.168.1.254 (доступно 254)
Класс: C, частный (RFC 1918)
Двоичный: 11000000.10101000.00000001.01100100
(сетевые биты = слева 24; биты хоста = справа 8)Двухточечный /31 (RFC 3021)
Ввод: 10.0.0.1/31
Сеть: 10.0.0.0
Broadcast: 10.0.0.1
Маска: 255.255.255.254
Хосты: 10.0.0.0 - 10.0.0.1 (доступно 2, оба конца канала)
До RFC 3021 /31 считалась «непригодной», так как 2 - 2 = 0.
Современные маршрутизаторы разрешают оба адреса для
двухточечных каналов, экономя половину адресного
пространства на транзитных сегментах.Разделение VLSM: /24 на четыре /26
Ввод: 192.168.1.0/24, разделить до /26
Подсеть 1: 192.168.1.0/26 хосты .1 - .62
Подсеть 2: 192.168.1.64/26 хосты .65 - .126
Подсеть 3: 192.168.1.128/26 хосты .129 - .190
Подсеть 4: 192.168.1.192/26 хосты .193 - .254
Обратите внимание на границы: 0, 64, 128, 192 — каждая /26
содержит 64 адреса (62 доступных). Частая ошибка — начинать
подсеть 2 с .63 (broadcast подсети 1, +1) — но .63 и есть
broadcast; следующая подсеть начинается с .64.IPv6 /64 (стандартная конечная сеть)
Ввод: 2001:db8:1234:5678::1/64
Сеть: 2001:db8:1234:5678::
Последний: 2001:db8:1234:5678:ffff:ffff:ffff:ffff
Маска: ffff:ffff:ffff:ffff::
Хосты: 18 446 744 073 709 551 616 (2^64)
Одна /64 содержит больше адресов, чем IPv4 в квадрате.
SLAAC требует /64, потому что нижние 64 бита кодируют
идентификатор интерфейса (EUI-64 или случайный по RFC 7217).Часто задаваемые вопросы
Почему /24 даёт 254 доступных хоста, а не 256?
В подсети /24 — 2^8 = 256 адресов, но два из них зарезервированы: сетевой адрес (192.168.1.0) идентифицирует саму подсеть в таблицах маршрутизации, а широковещательный адрес (192.168.1.255) используется для сообщений всем хостам подсети. Оба нельзя назначить хосту, остаётся 254 пригодных адреса. То же правило «−2» применяется ко всем префиксам IPv4 от /1 до /30. Исключения: /31 имеет 2 доступных адреса (RFC 3021, двухточечные каналы), /32 — 1 (одиночный host route).
В чём разница между маской подсети и wildcard-маской?
В маске подсети единицы стоят в сетевой части, нули — в хостовой; для /24 это 255.255.255.0. Wildcard-маска — побитовое NOT от неё, для /24 это 0.0.0.255. Access-lists Cisco IOS, EIGRP и OSPF используют wildcards, потому что в исходной реализации ACL применялась модель «don't care» (единицы в wildcard означают «этот бит может быть любым»). Другие производители и большинство современных синтаксисов Cisco также принимают форму с маской подсети, но в унаследованных конфигурациях вы будете встречать wildcards.
Есть ли у IPv6 широковещательный адрес?
Нет. В IPv6 широковещание умышленно убрали и заменили на multicast (ff00::/8) и anycast. Областью «all-nodes» служит ff02::1, который ведёт себя подобно link-local-широковещанию IPv4, но достигает только узлов, присоединившихся к multicast-группе. Поэтому для IPv6 калькулятор обозначает это значение как «Последний адрес», а не «Broadcast»; отправить туда пакеты, как на 255.255.255.255 в IPv4, нельзя — на уровне протокола нет механизма, доставляющего их каждому хосту.
Зачем нужна /31, если по старой формуле в ней «нет доступных хостов»?
Учебники до 2000-х говорили, что в /31 — 2^1 − 2 = 0 доступных хостов, и потому она недействительна. RFC 3021 (декабрь 2000) переопределил /31 для двухточечных каналов, где ровно две конечные точки и отдельный broadcast не нужен — сам канал задаёт область широковещания. Современные маршрутизаторы (IOS 12.2+, Junos, FRR, Linux) поддерживают /31. Использование /31 вместо /30 на транзитных каналах вдвое сокращает расход адресного пространства на инфраструктуре ядра, что в сумме по тысячам каналов в крупной сети даёт ощутимую экономию.
Почему все мои подсети IPv6, кажется, /64?
По соглашению, наименьшая единица IPv6, выделяемая на конечную сеть, — это /64. Нижние 64 бита зарезервированы под идентификатор интерфейса: SLAAC (RFC 4862) формирует их из MAC-адреса (EUI-64), стабильного хеша на основе сетевого префикса и секрета хоста (RFC 7217) или короткоживущих случайных значений (расширения приватности RFC 4941). Использование /126 или /127 на двухточечном канале технически работает при статической настройке, но ломает SLAAC и многие автоматические функции. /64 рекомендован для каждой подсети, где живут конечные станции; /127 применяют только на каналах между маршрутизаторами, где у вас полный контроль.
Отправляет ли этот инструмент мой IP-адрес на сервер?
Нет. Все вычисления выполняются на стороне клиента в вашем браузере с помощью JavaScript BigInt. Никакие адреса, префиксы или результаты не передаются на бэкенд. Это легко проверить: откройте вкладку Network в DevTools — во время вычислений никаких исходящих запросов нет. Это соответствует ожиданиям приватности, общим для всех браузерных утилит ToolAct.
В чём разница между /24 и 255.255.255.0?
Функционально — ни в чём, это две записи одной и той же маски. /24 (нотация CIDR, RFC 4632) считает количество ведущих единичных битов; 255.255.255.0 (десятичная маска через точку) записывает их в виде четырёх октетов. Большинство современных ОС и конфигураций маршрутизаторов принимают любую форму. Калькулятор для любого префикса показывает обе формы — копируйте ту, которую требует ваша целевая система.
Почему калькулятор отклоняет ввод вида 010.0.0.1?
Ведущие нули (010, 04, 0001) отклоняются, потому что одна и та же строка интерпретируется по-разному разными парсерами IP: исторически inet_aton в glibc трактовал октеты с ведущим нулём как восьмеричные (010 = 8), тогда как современный Python (3.9.5+) и среда выполнения JavaScript считают их десятичными (010 = 10). Это расхождение между стеками приводило к реальным уязвимостям обхода SSRF (CVE-2021-29921 и связанные с ней), когда сервис воспринимал 010.0.0.1 как 8.0.0.1 при проверке allow-list, а нижестоящая библиотека подключалась к 10.0.0.1. Чтобы не навязывать конкретную трактовку, калькулятор отклоняет любой октет с ведущими нулями — перед вставкой удалите ноль (010 → 10).