Настройка L2 filter-map

Ещё один вид списка доступа в EcoRouterOS — это filter-map ethernet, который позволяет фильтровать фреймы по значениям полей в L2-заголовке.

По структуре правил filter-map ethernet отличается тем, что в правилах указываются MAC-адреса источника и назначения, инверсные маски (wildcard) MAC-адресов и значения поля ethertype (опционально).

filter-map ethernet создаётся в конфигурационном режиме. Для одного действия может существовать несколько правил.

Синтаксис создания filter-map ethernet, добавления правил и действий в filter-map ethernet требует указать следующие параметры:

  • имя и sequence самого filter-map ethernet — filter-map ethernet <FILTER_MAP_ETHERNET_LIST> [<SEQUENCE_NUMBER>];
  • правило — match {<SOURCE_MAC> <SRC_WILDCARD> | any | host <SOURCE_MAC>} {<DESTINATION_MAC> <DST_WILDCARD> | any | host <DESTINATION_MAC>} [<ETHERTYPE>];
  • действие — set <ACTION>.

Таблица — Параметры filter-map ethernet

ПараметрОписание
FILTER_MAP_ETHERNET_LISTИмя списка фильтрации, может принимать любое значение
SEQUENCE_NUMBERНомер приоритета выполнения, допустимые значения 0–65535. Если значение не задано, то параметр для созданного filter-map ethernet автоматически получит последующее свободное значение с шагом 10
SOURCE_MACMAC-адрес источника, задаётся в одном из трёх форматов:
- XX-XX-XX-XX-XX-XX,
- XX:XX:XX:XX:XX:XX,
- XXXX.XXXX.XXXX.
Если под правило должны попадать все адреса, значение параметра должно быть any. Если под правило должен подпадать единственный адрес, в значении параметра указывается host <MAC-адрес>.
SRC_WILDCARDИнверсная маска источника, задаётся в одном из трёх форматов:
- XX-XX-XX-XX-XX-XX,
- XX:XX:XX:XX:XX:XX,
- XXXX.XXXX.XXXX.
DESTINATION_MACMAC-адрес назначения, задаётся в одном из трёх форматов:
- XX-XX-XX-XX-XX-XX,
- XX:XX:XX:XX:XX:XX,
- XXXX.XXXX.XXXX.
Если под правило должны попадать все адреса, значение параметра должно быть any. Если под правило должен подпадать единственный адрес, в значении параметра указывается host <MAC-адрес>.
DST_WILDCARDИнверсная маска назначения, задаётся в одном из трёх форматов:
- XX-XX-XX-XX-XX-XX,
- XX:XX:XX:XX:XX:XX,
- XXXX.XXXX.XXXX.
ETHERTYPEЗначение поля ethertype. Может быть указано шестнадцатеричное значение поля в диапазоне (0x600 — 0xffff) или одно из следующих обозначений:
- 802dot1x — IEEE 802.1X Ethertype - 0x888E,
- ip4 — IPv4 Ethertype - 0x0800,
- ip6 — IPv6 Ethertype - 0x86dd,
- l2-is-is — L2 IS-IS Ethertype - 0x22F4,
- lldp — LLDP Ethertype - 0x88CC,
- mpls — MPLS Ethertype - 0x8847,
- pppoe-discovery — PPPoE Discovery Ethertype - 0x8863,
- pppoe-session — PPPoE Session Ethertype - 0x8864,
- qinq — QinQ Ethertype - 0x88A8,
- vlan — VLAN Ethertype - 0x8100.
set <ACTION>
set acceptРазрешить
set discardЗапретить без отправки ICMP-уведомления
set rejectЗапретить с отправкой ICMP-уведомления
set class-map <NAME>Пакетам, попавшим под действие правила, присваивается указанный класс трафика class-map. Класс должен быть заранее создан (подробнее см. QoS)
set port <NAME>Пакеты, попавшие под действие правила, перенаправляются в указанный порт. NAME — имя порта (обозначения портов подробнее описаны в разделе Сервисные интерфейсы)
set port <NAME> push <TAG>Пакеты, попавшие под действие правила, перенаправляются в указанный порт с добавлением VLAN-тега. Где NAME — имя порта, TAG — номер VLAN
set port <NAME> pop <NUMBER>Пакеты, попавшие под действие правила, перенаправляются в указанный порт со снятием VLAN-тегов. Где NAME — имя порта, NUMBER — количество тегов, которое необходимо снять

В конце любого filter-map ethernet в неявном виде встроено запрещающее правило any any reject .

После того как filter-map ethernet создан, наполнен правилами, и для них указано действие, его можно назначить для сервисного интерфейса с указанием направления. Под направлением в данном случае подразумевается момент, когда пакеты, проходящие через интерфейс, будут обработаны списком доступа: для filter-map ethernet возможно только направление in (при “входе” в интерфейс). На одном интерфейсе может быть применено несколько filter-map ethernet.

Для назначения filter-map ethernet на сервисный интерфейс используется команда контекстного режима настройки сервисного интерфейса set filter-map in < FILTER_MAP_ETHERNET_LIST > [<SEQUENCE>] .

Пример настройки filter-map ethernet

Задача: запретить arp-запросы от клиента с адресом 0000.0000.000c.

ecorouter(config)#filter-map ethernet primer 10
ecorouter(filter-map-ethernet)#match host 0000.0000.000c any 0x806
ecorouter(filter-map-ethernet)#set discard
ecorouter(filter-map-ethernet)#ex
ecorouter(config)#filter-map ethernet primer 15
ecorouter(filter-map-ethernet)#match 0000.0000.0010 ffff.ffff.ff00 any
ecorouter(filter-map-ethernet)#set port ge0
ecorouter(filter-map-ethernet)#ex
ecorouter(config)#filter-map ethernet primer 20
ecorouter(filter-map-ethernet)#match any any
ecorouter(filter-map-ethernet)#set accept
ecorouter(filter-map-ethernet)#ex

0x806 — значение ethertype, соответствующее протоколу arpFilter-map ethernet primer 20 разрешает весь остальной трафик, без этого правила по умолчанию сработало бы правило  any any discard .

ecorouter(config)#port te0                                                    
ecorouter(config-port)#service-instance 1                                        
ecorouter(config-service-instance)#set filter-map in primer 10
ecorouter(config-service-instance)#set filter-map in primer 15
ecorouter(config-service-instance)#set filter-map in primer 20