Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

User-defined offset - гибкий метод фильтрации пакетов на основании выбранных байтов в пакете.

При настройке user-defined offset используется прямая битовая маска.

...

Пример настройки разрешения IGMPv2 Report сообщений на диапазон групп 239.4.4.0 /22 и IGMPv2 Leave сообщений в VLAN 10 через User-defined offset (весь остальной трафик запрещёнтребуется запретить):

1) Выделяем 9, 16, 18 байты. Расчёт ведётся с нуля Для того, чтобы произвести фильтрацию на основании заданного условия, требуется в каждом входящем пакете осуществить проверку по 9, 16 и 18 байту. 9 байт отвечает за номер протокола: для данного примера номер протокола IGMP = 2 (с номерами других протоколов можно ознакомиться по ссылке), 16 и 19 байты отвечают за Destination IP-адрес во входящих пакетах: для данного примера Destination IP-адрес = 239.4.4.0. Помимо указанного байта обязательно захватывается следующий по счёту. Например, в offset 1 будут использоваться байты 9 и следующий за ним 10. Для фильтрации произвольного байта пакета создаётся специальное правило, которое состоит из трёх параметров:
а. Номер правила;
б. Заголовок, относительно которого отсчитывается положение байта (расчёт начинается с нуля);
в. Порядковый номер байта относительно заголовка, указанного в п.2.

Конфигурация будет выглядеть следующим образом:

и начинается с L3 заголовка. Помимо указанного байта обязательно захватывается следующий по счёту. Например, в offset 1 будут использоваться байты 9, 10. В данном примере 9 байт - номер протокола (2 для IGMP), 16-19 байты - Destination IP-адрес.

...

console(config)# user-defined offset 3 l3 18

2) Разбор Вторым шагом требуется создать правила в ACL для входящего трафика, которые в дальнейшем потребуется повесить на порт.
Разберем пример mac access-list extended 1. Для начала отфильтруем все IGMP-пакеты: 1 байт в offset 1 в 1 байте берётся номер протокола IGMP 02 с маской ff, т.к не допустимо изменение данного байта. 10 байт нам не важен, поэтому выбираем значение 00 с маской 00, допуская любое значение данного байта. будет равен 02 (2 в HEX) с маской ff (маска ff отвечает за строгое определение фильтруемого байта). 10 байт в данном примере не несёт информационной нагрузки, поэтому задаём значение 00 и маску 00, что означает, что в этом байте пакета может быть любое значение.
В offset 2 указываются первые 2 байта DST IP = 239.4. Переведя их в HEX, получаем EF04. Байты изменяться не должны, поэтому ; используем маску ffff для строгого определения фильтруемого байта.
В offset 3 указываются 3 указываются вторые 2 байта DST IP = 4.0. При этом третий байт может принимать значения 4-7 (в соответствии с указанной маской /22), что соответствует прямой маске fc (в двоичной системе счисления 3 байт маски выглядит как 11111100, что соответствует 252 в DEC или FC в HEX), а 4 байт нам не важен. Последующий за ним 4 байт в данном примере может принять любое значение, поэтому выбираем значение 00 с маской 00, допуская любое значение данного байта.

Правило Правило mac access-list extended 2  расчитывается расчитывается по аналогии, только в расчёте используется DST IP 224.0.0.2 (IP-адрес, на который отправляется IGMPv2 Leave сообщение).
Конфигурация выглядит следующим образом:

console(config)# mac access-list extended 1

...

console(config-ext-macl)# exit

3) Сконфигурированные ACL назначаем на порт для входящего трафика:

console(config)# interface gigabitethernet 0/1

...

console(config-if)# mac access-group 2 in


Все Правилом по-умолчанию все не разрешённые в ACL пакеты будут отброшены.