«Маска подстановки в 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, маски подстановки применяются по тому же принципу для объявления конкретных сетей в зонах.