Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

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

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

console(config)# user-defined offset 1 l3 9

console(config)# user-defined offset 2 l3 16

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

2) Вторым шагом требуется создать правила в ACL для входящего трафика, которые в дальнейшем потребуется повесить на порт.
Разберем пример mac access-list extended 1. Для начала отфильтруем все IGMP-пакеты: 1 байт в offset 1 будет равен 02 (2 в HEX) с маской ff (маска ff отвечает за строгое определение фильтруемого байта). 10 байт в данном примере не несёт информационной нагрузки, поэтому задаём значение 00 и маску 00, что означает, что в этом байте пакета может быть любое значение.
В offset 2 указываются первые 2 байта DST IP = 239.4. Переведя их в HEX, получаем EF04; используем маску ffff для строгого определения фильтруемого байта.
В offset 3 указываются вторые 2 байта DST IP = 4.0. При этом третий байт может принимать значения 4-7 (в соответствии с указанной маской /22), что соответствует прямой маске fc (в двоичной системе счисления 3 байт маски выглядит как 11111100, что соответствует 252 в DEC или FC в HEX). Последующий за ним 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)# permit any any vlan 10 user-defined offset1 0x0200 0xff00 offset2 0xEF04 0xffff offset3 0x0400 0xfC00

console(config)# mac access-list extended 2

console(config-ext-macl)# permit any any vlan 10 user-defined offset1 0x0200 0xff00 offset2 0xE000 0xffff offset3 0x0002 0xffff

console(config-ext-macl)# exit

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

console(config)# interface gigabitethernet 0/1

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

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


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



  • Нет меток