Filter-map
Для фильтрации трафика на уровнях L2 и L3 в EcoRouterOS применяются списки доступа (filter-map), содержащие правила.
В EcoRouterOS общая логика при создании filter-map следующая:
- Собственно создание filter-map при помощи команды
filter-map {ethernet | ipv4} <FILTER_MAP_NAME> [<SEQUENCE_NUMBER>]
. - Задание правила вида
match <CONDITION>
, где<CONDITION>
— условие или условия для проверки пакетов (подробнее см. в соответствующих разделах). - Задание действия вида
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
— включает применение карты фильтров к локальному (производимому самим маршрутизатором) трафику.