Обзор маски подстановки

«Маска подстановки в ACL — это инвертированная маска подсети. Её логика «0 — совпадает, 1 — игнорируется» более естественна для фильтрации диапазонов, чем прямое использование сетевых масок. Многие путают эти понятия, что приводит к неработающим правилам и уязвимостям».

Принцип работы маски подстановки

В отличие от сетевой маски, которая определяет границу между адресом сети и хоста, маска подстановки (wildcard mask) в списках доступа указывает, какие биты IP-адреса должны проверяться на совпадение, а какие — нет. Обе маски 32-битные, и обе используют бинарную операцию AND, но их логика противоположна.

  • Бит маски 0 — соответствующий бит адреса в проверяемом пакете должен точно совпасть с битом адреса, указанным в правиле ACL.
  • Бит маски 1 — соответствующий бит адреса игнорируется, может быть любым.

Это позволяет гибко описывать не только конкретные адреса или целые подсети, но и прерывистые диапазоны и группы адресов, что невозможно сделать обычной сетевой маской.

Интерпретация масок подстановки на практике

Чтобы понять, какие адреса попадают под правило, нужно анализировать маску по октетам. Её двоичное представление показывает шаблон фильтрации.

Маска подстановки Последний октет (двоичный) Логика фильтрации
0.0.0.0 00000000 Требует полного совпадения всех 32 бит. Фильтрует единственный хост.
0.0.0.63 00111111 Точное совпадение первых трёх октетов и двух старших битов последнего. Последние 6 бит последнего октета — любые.
0.0.0.15 00001111 Точное совпадение первых трёх октетов и четырёх старших битов последнего. Младшие 4 бита — любые.
0.0.0.252 11111100 Точное совпадение первых трёх октетов и двух младших битов последнего. Старшие 6 битов последнего октета игнорируются.
0.0.0.255 11111111 Точное совпадение первых трёх октетов. Весь последний октет (8 бит) игнорируется — фильтрует все адреса в подсети /24.

.

Маска подстановки для одного хоста

Сценарий: требуется разрешить трафик только от конкретного хоста 192.168.1.1. Маска подстановки должна потребовать совпадения всех битов.

access-list 10 permit 192.168.1.1 0.0.0.0
Параметр Десятичный формат Двоичный формат
IPv4-адрес в правиле 192.168.1.1 11000000.10101000.00000001.00000001
Маска подстановки 0.0.0.0 00000000.00000000.00000000.00000000
Результат Только адрес 192.168.1.1 Все 32 бита должны совпасть.

В расширенных ACL для фильтрации одного хоста часто используют ключевое слово host, которое автоматически подставляет маску 0.0.0.0: access-list 10 permit host 192.168.1.1.

Маска подстановки для подсети

Сценарий: разрешить трафик со всех хостов сети 192.168.1.0/24. Нужно совпадение первых трёх октетов и игнорирование последнего.

access-list 10 permit 192.168.1.0 0.0.0.255
Параметр Десятичный формат Двоичный формат (последний октет)
Базовый адрес в правиле 192.168.1.0 00000000
Маска подстановки 0.0.0.255 11111111
Диапазон разрешённых адресов 192.168.1.0 – 192.168.1.255 От 00000000 до 11111111

Важно: в ACL указывается адрес сети, но правило будет соответствовать всем адресам в этой подсети, включая широковещательный (192.168.1.255).

Маска подстановки для диапазона подсетей

Сценарий: разрешить трафик из подсетей 192.168.16.0/24 – 192.168.31.0/24. Это 16 последовательных подсетей. Анализ ведётся по битам третьего октета.

access-list 10 permit 192.168.16.0 0.0.15.255
Параметр Десятичный формат Двоичный формат (третий октет)
Базовый адрес в правиле 192.168.16.0 00010000
Маска подстановки (третий октет) 0.0.15.255 00001111
Разрешённые значения третьего октета От 00010000 (16) до 00011111 (31) Совпадают 4 старших бита (0001). Младшие 4 бита (XXXX) игнорируются.

.

Это мощный приём для агрегации правил, заменяющего 16 отдельных строк в ACL одной.

Типичные паттерны и подводные камни

Для стандартных сетевых блоков используются запоминающиеся шаблоны:

  • 0.0.0.0 — один хост.
  • 0.0.0.255 — подсеть /24 (класс C).
  • 0.0.255.255 — подсеть /16 (класс B).
  • 0.255.255.255 — подсеть /8 (класс A).
  • 255.255.255.255 — любой адрес (аналог ключевого слова any).

Основная ошибка — попытка использовать для фильтрации подсети обычную сетевую маску вместо её инвертированного аналога. Например, для сети /24 (255.255.255.0) маска подстановки будет 0.0.0.255. Если ошибиться, правило либо не будет работать, либо отфильтрует не тот диапазон адресов, создав брешь в политике безопасности. В протоколах маршрутизации, таких как OSPF, маски подстановки применяются по тому же принципу для объявления конкретных сетей в зонах.

Оставьте комментарий