Калькулятор wildcard-маски

Введите длину префикса CIDR, маску подсети или wildcard-маску в стиле Cisco — калькулятор сразу вернёт все три эквивалентные формы плюс готовые строки access-list и OSPF network statement. Всё считается прямо в браузере, данные никуда не отправляются.

Калькулятор wildcard-маски

Эта страница — для сетевого инженера, который пишет или читает список контроля доступа (ACL) Cisco IOS или OSPF network statement, где адреса сопоставляются с помощью wildcard-маски вместо обычной маски подсети. Wildcard-маска — это побитовое дополнение маски подсети: там, где у маски подсети бит 1 (значит «этот бит должен совпадать точно»), у wildcard-маски бит 0; там, где у маски подсети бит 0 (значит «любое значение здесь относится к той же подсети»), у wildcard-маски бит 1 (значит «неважно, подходит что угодно»). Маска подсети 255.255.255.0 для /24 превращается в wildcard-маску 0.0.0.255 — это те же самые 32 бита, просто инвертированные.

Почему Cisco инвертировала маску вместо того, чтобы напрямую использовать обычную маску подсети? Wildcard-маски появились раньше CIDR-подобного сопоставления в ACL и были задуманы так, чтобы выражать и несмежные шаблоны совпадения, не имеющие формы префикса — биты маски не обязаны образовывать один непрерывный участок, как у маски подсети. Wildcard-маска вроде 0.0.0.254 (совпадение только для чётных значений последнего октета) или маска с битами 1, разбросанными в середине, не имеет эквивалента в виде маски подсети или CIDR-префикса вообще. Этот калькулятор намеренно поддерживает только распространённый, непрерывный случай — тот, у которого ЕСТЬ эквивалент в виде длины префикса — поскольку он покрывает практически каждую реальную строку ACL и OSPF; действительно несмежная wildcard-маска показывается как некорректная на вкладках маски подсети/префикса, а не молча неправильно конвертируется.

Разобранный пример: строка «access-list 10 permit 10.0.0.0 0.0.0.255» разрешает любой исходный адрес, у которого первые 3 октета точно равны 10.0.0, а последний октет — любой от 0 до 255 — то же самое множество из 256 адресов, которое описала бы маска подсети /24, просто сформулированное как «это совпадает, это неважно» вместо «столько-то старших бит должны быть одинаковыми». Записи ACL обрабатываются сверху вниз с неявным запретом в конце списка, поэтому wildcard-маска, которая шире, чем задумано (лишний бит 1 там, где должен быть 0), молча разрешает намного больше трафика, чем планировалось — одна из самых частых реальных ошибок конфигурации ACL, и одна из причин, почему стоит потратить лишнюю минуту и перепроверить арифметику wildcard-маски вручную (или с помощью такого калькулятора) перед выкладкой изменения.

Строка OSPF «network 10.0.0.0 0.0.0.255 area 0» использует тот же самый синтаксис wildcard-маски, чтобы сказать «включить OSPF на любом интерфейсе, чей адрес попадает в этот диапазон, и поместить его в area 0» — та же логика инвертированной маски, другой контекст конфигурации Cisco. Обе примерные строки выше обновляются вживую в зависимости от того, какой префикс, маску подсети или wildcard-маску вы вводите в калькуляторе, используя 10.0.0.0 как привычную заглушку из частного диапазона, чтобы строки было легко адаптировать под собственную адресацию.

Глоссарий

Wildcard-маска
Побитовое дополнение маски подсети, используется в ACL Cisco IOS и OSPF network statement — бит 0 означает «должен совпадать», бит 1 означает «неважно».
Маска подсети (netmask)
Десятично-точечное число (255.255.255.0), чьи биты 1 отмечают сетевую часть адреса — обычное дополнение wildcard-маски.
Список контроля доступа (ACL)
Упорядоченный список правил permit/deny, которые устройство Cisco применяет к трафику сверху вниз; трафик, не совпавший ни с одним правилом, попадает под неявный запрет в конце.
Несмежная wildcard-маска
Wildcard-маска, чьи биты 1 не образуют один непрерывный участок (например, 0.0.0.254) — не имеет эквивалента в виде маски подсети или CIDR-префикса и не поддерживается вкладками маски подсети/префикса этого калькулятора.
OSPF network statement
Строка конфигурации маршрутизатора («network <адрес> <wildcard> area <id>»), включающая OSPF на любом интерфейсе, чей адрес совпадает с заданной парой адрес/wildcard, в заданной area.
Неявный запрет (implicit deny)
Каждый ACL Cisco заканчивается невидимым правилом «запретить всё» — трафик, не совпавший ни с одной явной строкой permit, по умолчанию отбрасывается.

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

Почему wildcard-маска — это инверсия маски подсети?
Сопоставление в ACL Cisco появилось раньше CIDR-подобного сопоставления по префиксу и было построено на логике «это совпадает / это неважно», а не «столько-то старших бит — это сеть». Инвертирование маски позволяет тем же синтаксисом выражать и несмежные шаблоны совпадения, которые обычная маска подсети выразить не может.
Можно ли любую wildcard-маску преобразовать в маску подсети?
Нет — эквивалент в виде маски подсети/префикса есть только у непрерывной wildcard-маски (её биты 1 образуют один участок). Несмежная маска вроде 0.0.0.254 допустима в ACL, но не имеет CIDR-префикса; этот калькулятор показывает такие маски как некорректные, а не подбирает ближайшее совпадение.
Что будет, если моя wildcard-маска шире, чем я планировал?
Лишний бит 1 в wildcard-маске заставляет правило совпадать с большим числом адресов, чем задумано, поскольку бит 1 означает «неважно». Поскольку ACL обрабатываются сверху вниз с неявным запретом в конце, слишком широкое правило permit может молча разрешить трафик, который должен был быть запрещён — распространённая реальная ошибка конфигурации ACL.
Является ли wildcard-маска просто маской подсети «наоборот»?
Для обычного непрерывного случая — да, побитово wildcard-маска это в точности маска подсети с каждым инвертированным битом. Разница важна прежде всего для несмежных шаблонов, которые маска подсети никогда не может выразить, и чтобы не путать, какое значение («должен совпадать» или «неважно») соответствует биту 0 в каждой из них.
Отправляет ли этот инструмент мою подсеть или план ACL куда-либо?
Нет. Любой расчёт на этой странице — конвертация префикс/маска подсети/wildcard-маска и примерные строки ACL/OSPF — выполняется полностью в вашем браузере обычной арифметикой; ничего из введённого здесь не отправляется на наши серверы или куда-либо ещё.
Какая wildcard-маска у /0 и /32?
У /0 (совпадает всё) wildcard-маска 255.255.255.255 — каждый бит «неважно». У /32 (совпадает ровно один адрес) wildcard-маска 0.0.0.0 — каждый бит должен совпадать точно, противоположная крайность.

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

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

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

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

{
  "schemaVersion": 15,
  "status": "ok",
  "ip": "10.0.0.1",
  "version": 4,
  "flags": {
    "isPrivate": true
  }
}

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

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