Filter-map

Для фильтрации трафика на уровнях L2 и L3 в EcoRouterOS применяются списки доступа (filter-map), содержащие правила.

В EcoRouterOS общая логика при создании filter-map следующая:

  1. Собственно создание filter-map при помощи команды filter-map {ethernet | ipv4} <FILTER_MAP_NAME> [<SEQUENCE_NUMBER>].
  2. Задание правила вида match <CONDITION>, где <CONDITION> — условие или условия для проверки пакетов (подробнее см. в соответствующих разделах).
  3. Задание действия вида set <ACTION>, где ACTION — действие, которое будет применено к пакетам, удовлетворяющим критериям из CONDITION (подробнее см. в соответствующих разделах).

Правила в зависимости от протоколов и условий могут задаваться по-разному.

Для каждого filter-map правила проверяются последовательно, в том порядке, в котором они присутствуют в выводе команды show filter-map ipv4 или show filter-map ethernet соответственно.

Если в самом правиле присутствуют несколько признаков трафика одновременно, это эквивалентно логической операции “И”, то есть, правило будет применено только, если пакет удовлетворяет всем признакам, перечисленным в правиле.

Пример:

filter-map ipv4 example01 10
match tcp 10.0.0.0/24 eq 40 any eq 179 not-rst syn ack
set discard

Этот filter-map example01 запрещает TCP-пакеты c IP-адресами источника (10.0.0.0-10.0.0.255) и 40 портом до любого IP-адреса получателя с портом 179, который содержит флаги SYN, ACK и не содержит RST.

Для реализации логической операции “ИЛИ” необходимо создать несколько правил. Тогда к пакету будет применено то правило, условиям которого он удовлетворяет.

Например, если необходимо разрешить любой TCP-пакет c флагaми SYN и ACK или пакет с флагом FIN, то конструкция списка будет состоять из следующих записей:

filter-map ipv4 example02 10
match tcp any any syn ack
match tcp any any fin
set accept

В конце каждого filter-map есть неявное правило, запрещающее всё, что не разрешено в данном списке доступа: any any discard.

При большом количестве фильтрующих правил, для оптимизации построения списка контроля доступа (ACL) и снятия нагрузки с нулевого (зарезервированного) ядра используйте команду filter-map optimize. Наибольшую эффективность команда приобретает в сочетании с командой hw reserved-cores {0 | 10} которая позволяет зарезервировать больше ядер процессора для плоскости управления (control-plane).

filter-map localy-generated — включает применение карты фильтров к локальному (производимому самим маршрутизатором) трафику.