Списки доступа EcoRouter Documentation / Списки доступа
- Policy-filter-list
- Префиксные списки (prefix-list)
- Filter-map
- Настройка L2 filter-map
- Настройка L3 filter-map
- Команды просмотра L2 filter-map
- Команды просмотра L3 filter-map
- Настройка политики для абонентской сессии
В EcoBNGOS используются различные списки доступа. Списки доступа представляют собой набор текстовых выражений-инструкций, которые позволяют "заглянуть" внутрь фрейма/пакета, сопоставить текстовое правило списка с данными в этом сообщении и на основании этого принять решение, что делать с этим фреймом/пакетом далее. В EcoBNGOS применяются следующие списки доступа (краткая характеристика ниже, более подробно о работе с каждым в соответствующих разделах настоящего руководства):
- Policy-filter-list;
- Filter-map;
- Prefix-list.
Policy-filter-list применяются при фильтрации маршрутных политик в различных протоколах юникастовой и мультикастовой маршрутизации, их рекламе, редистрибуции, добавлении специальных правил при работе с маршрутной информацией. Они НЕ МОГУТ применяться для блокировки или разрешения прохождения трафика через маршрутизатор.
Filter-map применяются для блокировки или разрешения прохождения транзитного трафика через маршрутизатор. Они также применимы в сценариях QoS, PBR и HTTP-редиректа.
Prefix-list по функциональности аналогичны Policy-filter-list с той лишь разницей, что позволяют пользователю более гибко управлять масками подсетей. Эти списки широко применяются при конфигурировании BRAS.
Policy-filter-list
Policy-filter-list - функционал, позволяющий создавать списки правил для фильтрации, редистрибуции, суммаризации и управления маршрутными политиками в различных протоколах маршрутизации.
Сущность policy-filter-list представляет из себя вариант списка доступа, где можно указать лишь IP-адрес и инверсную маску.
Списки фильтров создаются в конфигурационном режиме. В одном списке фильтров может существовать несколько правил. Адрес сети, который передается в маршрутном обновлении, указывается с wildcard.
Синтаксис создания и добавления правил в policy-filter-list: policy-filter-list <PFL_NAME> [deny | permit] <ADDRESS> <WILDCARD>.
Для policy-filter-list можно задать описание командой: policy-filter-list <PFL_NAME> remark <DESCRIPTION>.
Параметры policy-filter-list описаны в таблице ниже.
Параметр | Описание |
---|---|
PFL_NAME | Номер списка фильтрации. Нумерация списков осуществляется из диапазона от 1 до 99 и от 1300 до 1999 |
permit | deny | Тип правила: разрешить (permit) или запретить (deny) |
ADDRESS | IP-адрес сети, задается в виде A.B.C.D. Если под правило должны попадать все адреса, значение параметра должно быть any |
WILDCARD | Инверсная маска, задается в виде A.B.C.D |
После создания списка фильтров, он должен быть применен к определенному процессу маршрутизации на устройстве.
Команды добавления фильтров различаются в зависимости от протокола.
Команда | Описание |
---|---|
Distribute-list <номер> | Команда добавления списка фильтров в контекст маршрутизации OSPF |
In | Указание променять список фильтров на вход |
Out | Указание применять список фильтров на выход |
Базовая конфигурация списка фильтров
ecorouter(config)#policy-filter-list 99 permit 172.168.1.0 0.0.0.255
где 99 — имя данного списка фильтров,
permit 172.168.1.0 0.0.0.255 — аргумент, указывающий, что маршрутное обновление о данной сети разрешено.
После создания списка фильтров он должен быть применен к определенному процессу маршрутизации на устройстве.
Команды добавления фильтров различаются в зависимости от протокола.
Настройка фильтрации маршрутной информации в BGP
Настройка списков фильтрации делается аналогично OSPF.
Применение списка фильтрации отличается.
Для фильтрации маршрутных обновлений BGP список фильтров применяется к определенному соседу с указанием направления.
Пример настройки
Создан список фильтров, который отфильтровывает все сети, начинающиеся на 192.
policy-filter-list 99 permit 192.0.0.0 0.255.255.255
Сконфигурирован процесс маршрутизации BGP, объявлены сети и соседи.
router bgp 100
network 10.1.1.0/24
network 10.2.0.0/16
network 172.64.1.0/24
network 172.64.2.0/24
network 172.64.3.0/24
network 192.1.1.0/24
network 192.1.2.0/24
network 192.2.3.0/24
network 192.128.1.0/30
network 192.129.1.0/30
neighbor 10.0.0.13
remote-as 200
Список фильтров применяется к соседу с указанием номера списка и направления фильтрации.
neighbor 10.0.0.13 distribute-list 99 out
Таким образом, сосед 10.0.0.13 получит в маршрутных обновлениях только следующие сети:
network 192.1.1.0/24
network 192.1.2.0/24
network 192.2.3.0/24
network 192.128.1.0/30
network 192.129.1.0/30
Настройка фильтрации маршрутной информации в IS-IS
Между маршрутизаторами 1, 2 и 3 настроена динамическая маршрутизация с помощью протокола IS-IS.
В протоколе IS-IS фильтрация может осуществляться только в процессе редистрибуции.
Текущая конфигурация на маршрутизаторах следующая.
Маршрутизатор 1 работает на первом уровне как маршрутизатор внутри зоны.
EcoRouter_1#show run
router isis 1
is-type level-1
net 49.0001.0000.0000.0001.00
!
interface e2
ip mtu 1500
ip address 192.168.1.1/24
ip router isis 1
!
interface e1
ip mtu 1500
ip address 10.10.10.1/30
ip router isis 1
!
!
port te0
mtu 9728
service-instance 1
encapsulation untagged
no rewrite
connect ip interface e1
Маршрутизатор 2 работает на уровне 1 и 2.
EcoRouter_2#show run
router isis 1
net 49.0001.0000.0000.0002.00
!
interface e2
ip mtu 1500
ip address 10.10.10.5/30
ip router isis 1
!
interface e1
ip mtu 1500
ip address 10.10.10.2/30
ip router isis 1
!
port te0
mtu 9728
service-instance 1
encapsulation untagged
no rewrite
connect ip interface e1
!
port te1
mtu 9728
service-instance 1
encapsulation untagged
no rewrite
connect ip interface e2
Маршрутизатор 3 работает только на 2 уровне.
EcoRouter_3#show run
router isis 1
is-type level-2-only
net 49.0001.0000.0000.0003.00
!
interface e2
ip mtu 1500
ip address 172.16.10.1/24
ip router isis 1
!
interface e1
ip mtu 1500
ip address 10.10.10.6/30
ip router isis 1
!
port te0
mtu 9728
service-instance 1
encapsulation untagged
no rewrite
connect ip interface e1
Вывод таблиц маршрутизации для топологии.
EcoRouter_1#sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
C 10.10.10.0/30 is directly connected, e1
i L1 10.10.10.4/30 [115/20] via 10.10.10.2, e1, 00:00:21
C 192.168.1.0/24 is directly connected, e2
EcoRouter_2#sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
C 10.10.10.0/30 is directly connected, e1
C 10.10.10.4/30 is directly connected, e2
i L2 172.16.10.0/24 [115/20] via 10.10.10.6, e2, 00:00:02
i L1 192.168.1.0/24 [115/20] via 10.10.10.1, e1, 00:00:03
EcoRouter_3#sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
i L2 10.10.10.0/30 [115/20] via 10.10.10.5, e1, 00:00:09
C 10.10.10.4/30 is directly connected, e1
C 172.16.10.0/24 is directly connected, e2
i L2 192.168.1.0/24 [115/30] via 10.10.10.5, e1, 00:00:09
Создание списка фильтров для ограничения маршрутного обновления о сети 192.168.1.0/24 от EcoRouter_1 к EcoRouter_3.
EcoRouter_3(config)#policy-filter-list 20 deny 192.168.1.0 0.0.0.255
где 20 - номер списка фильтров,
deny - запрещающий аргумент,
192.168.1.0 0.0.0.255 - сеть, маршрутное обновление о которой ограничено.
После этого следует размещение списка фильтров в контекст маршрутизации граничного маршрутизатора.
EcoRouter_2(config)#router isis 1
EcoRouter_2(config-router)#redistribute isis level-1 into level-2 distribute-list 20
где redistribute - команда перераспределения маршрутов,
isis level-1 into level-2 - аргумент, указывающий, что маршрут забирается из isis внутри зоны и передается за границы зоны,
distribute-list 20 - аргумент, указывающий на созданный список фильтров с именем.
Результатом выполнения данной команды будет отсутствие информации о данной сети на EcoRouter 3.
EcoRouter_3#sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
i L2 10.10.10.0/30 [115/20] via 10.10.10.5, e1, 01:35:24
C 10.10.10.4/30 is directly connected, e1
C 172.16.10.0/24 is directly connected, e2
Настройка фильтрации маршрутной информации в OSPF
Между маршрутизаторами 1 и 2 настроена динамическая маршрутизация с помощью протокола OSPF.
Текущая конфигурация на маршрутизаторах следующая:
EcoRouter 1 | EcoRouter 2 |
---|---|
EcoRouter_1#show run ! interface e2 port te0 | EcoRouter_2#show run router ospf 1 |
Вывод таблицы маршрутизации на EcoRouter_1 и EcoRouter_2.
EcoRouter 1 | EcoRouter 2 |
---|---|
EcoRouter_1#show ip route | EcoRouter_2#sh ip route Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default IP Route Table for VRF "default" C 10.10.10.0/24 is directly connected, e1 C 172.168.1.0/24 is directly connected, e2 O 192.168.1.0/24 [110/20] via 10.10.10.1, e1, 00:18:47 Gateway of last resort is not set |
Настройка фильтрации получения анонсов маршрутной информации от Ecorouter 2 на маршрутизаторе Ecorouter 1.
EcoRouter_1(config)#policy-filter-list 10 remark FilterForER2
Создание списка фильтров с номером 10. Добавление комментария для этого списка фильтров.
EcoRouter_1(config)#policy-filter-list 10 deny 172.168.1.0 0.0.0.255
Создание правила списка фильтров, которое запрещает помещение маршрута в сеть 172.168.1.0/24 с таблицей маршрутизации.
После создания список фильтров нужно применить к процессу маршрутизации. До применения фильтр работать не будет.
EcoRouter_1(config)#router ospf 1
EcoRouter_1(config-router)#distribute-list 10 in
В контексте конфигурации протокола маршрутизации следует указать номер нужного списка фильтров и направление.
Для OSPF использование списков фильтров возможно только во входящем направлении, так как в этом направлении не фильтруются LSA, а фильтруются маршруты, которые помещаются в таблицу маршрутизации.
EcoRouter_1#sh ip route
Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP
O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default
IP Route Table for VRF "default"
C 10.10.10.0/24 is directly connected, e1
C 192.168.1.0/24 is directly connected, e2
Gateway of last resort is not set
В таблице маршрутизации данная сеть отсутствует.
EcoRouter_1#sh ip ospf database
OSPF Router with ID (192.168.1.1) (Process ID 1 VRF default)
Router Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum Link count
172.168.1.1 172.168.1.1 1552 0x80000007 0x8c39 2
192.168.1.1 192.168.1.1 1556 0x80000006 0x4447 2
Net Link States (Area 0.0.0.0)
Link ID ADV Router Age Seq# CkSum
10.10.10.1 192.168.1.1 1556 0x80000001 0x1fcd
EcoRouter_1#
Информация о этой сети присутствует в базе состояния каналов OSPF.
Префиксные списки (prefix-list)
Префиксные списки (prefix-list) представляют собой альтернативу policy-filter листам, применяемым во многих командах фильтрации маршрутов, и обладают рядом преимуществ. Префиксные списки в меньшей степени загружают процессор, что повышает производительность маршрутизаторов.
Команды просмотра списков префиксов
Команды show ip prefix-list <имя> и show ip prefix-list summary выводят общую информацию о списке префиксов, а show ip prefix-list detail <имя> выдает статистику по совпадениям в списке префиксов (hit count) и по совпадению в приложениях (route-map), где используется список префиксов (refcount).
Команда | Описание |
---|---|
show ip prefix-list <имя> | Просмотр определенного списка префиксов |
show ip prefix-list summary | Просмотр всех списков |
show ip prefix-list detail <имя> | Просмотр статистики по совпадениям со списком префиксов (hit count), по совпадению в приложениях (route-map), где используется префикс лист (refcount) |
Настройка префиксных списков
Префиксные списки проверяются по порядку, строка за строкой, до тех пор, пока не будет обнаружено соответствие тому или иному критерию. Как только соответствие обнаруживается, начинается обработка пакета. По умолчанию все пакеты, в явном виде не разрешенные в списке префиксов, запрещены (неявный оператор deny all для всех пакетов, которые не удовлетворяют ни одному из критериев).
Для создания префиксного списка требуется в режиме конфигурации ввести команду ip prefix-list, после которой должно быть указано имя списка. Можно воспользоваться нумерацией операторов, для чего употребляется ключевое слово seq с указанием после него номера, который присваивается записи. Запись может иметь любой номер из диапазона <1-4294967295> (чем меньше номер, тем раньше проверяется запись). Если номер первой записи 10, а последней 15, то в любое время в список можно будет добавить записи с номерами 11,12,13,14. Если в новом списке не указать номер первой записи, то по умолчанию он будет назначен равным 5. Последующие записи автоматически будут нумероваться с шагом 5. Для отключения режима автоматического присвоения номера записям используется команда no ip prefix-list sequence-number. Для определения сети, информация о которой должна передаваться другим маршрутизаторам, служит ключевое слово permit, для запрета - deny, соответственно. Таким образом, команда приобретает следующий вид:
ip prefix-list <имя> seq <номер> (permit | deny) <подсеть/маска> (ge | le | eq <значение>).
Для префиксного списка можно указать description (до 80 символов) командой: ip prefix-list <имя> description <текст>.
Помимо указания конкретной подсети и маски, гибкость префиксных списков позволяет отбирать подсети с учетом длины масок с помощью операторов ge, le, eq. Параметр ge применяется для отбора префиксов, длина которых больше, чем указанное значение в поле «значение». С помощью ключевого слова le можно отобрать префиксы, длина которых меньше, чем указанное значение. Ключевое слово eq точно определяет значение маски для префикса. Если не введены ни ge, ни le, ни eq, это соответствует условию точного совпадения префикса с тем, который указывается в списке. Приведем пример для 6 указанных подсетей:
1. 10.0.0.0/8
2. 10.128.0.0/9
3. 10.1.1.0/24
4. 10.1.2.0/24
5. 10.128.10.4/30
6. 10.128.10.8/30
Соответствие префиксных списков
Команда | Номера подсетей, соответствующие условию |
---|---|
ip prefix-list permit 10.0.0.0/8 | 1 |
ip prefix-list permit 10.128.0.0/9 | 2 |
ip prefix-list permit 10.0.0.0/8 ge 9 | 2,3,4,5,6 |
ip prefix-list permit 10.0.0.0/8 eq 24 | 3,4 |
ip prefix-list permit 10.0.0.0/8 le 28 | 1,2,3,4 |
ip prefix-list permit 0.0.0.0/0 | Нет совпадений |
ip prefix-list permit 0.0.0.0/0 le 32 | Все подсети. В этом случае вместо 0.0.0.0/0 le 32 при конфигурировании префикс-листа можно указать параметр any |
Пример команды только для рекламы подсетей 10.0.0.0 с масками от 10 до 20 может выглядеть следующим образом:
ip prefix-list TEST seq 5 permit 10.0.0.0/8 ge 10 le 20
ip prefix-list TEST seq 10 deny all
ВНИМАНИЕ:
Для удаления префиксного списка служит команда no ip prefix-list <имя>.
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.
Настройка 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_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_MAC | MAC-адрес источника, задается в одном из трех форматов:
Если под правило должны попадать все адреса, значение параметра должно быть any. Если под правило должен подпадать единственный адрес, в значении параметра указывается host <MAC-адрес>. |
SRC_WILDCARD | Инверсная маска источника, задается в одном из трех форматов:
|
DESTINATION_MAC | MAC-адрес назначения, задается в одном из трех форматов:
Если под правило должны попадать все адреса, значение параметра должно быть any. Если под правило должен подпадать единственный адрес, в значении параметра указывается host <MAC-адрес>. |
DST_WILDCARD | Инверсная маска назначения, задается в одном из трех форматов:
|
ETHERTYPE | Значение поля ethertype. Может быть указано шестнадцатеричное значение поля в диапазоне (0x600 - 0xffff) или одно из следующих обозначений:
|
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, соответствующее протоколу arp. Filter-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
Настройка L3 filter-map
Для управления трафиком разных направлений для L3 интерфейса могут применяться списки доступа filter-map. Под направлением в данном случае подразумевается момент, когда пакеты, проходящие через интерфейс, будут обработаны списком доступа: при "входе" в интерфейс – указание направления in, при "выходе" – направление out. На одном интерфейсе может быть применено несколько списков доступа в одном направлении. Каждый список доступа может быть применен к нескольким интерфейсам одновременно.
Использование filter-map производится в два этапа.
- Создание и наполнение правилами.
- Привязка к интерфейсу.
Создание filter-map производится в конфигурационном режиме. Для создания filter-map требуется выполнить следующие действия (в результате будет создан filter-map, содержащий одно правило):
- Первая строка. Ввести команду filter-map ipv4 <FILTER_MAP_NAME> [<SEQUENCE_NUMBER>], где <FILTER_MAP_NAME> - имя списка доступа, <SEQUENCE_NUMBER> - порядковый номер правила в списке доступа. Подробнее параметры описаны в таблице ниже.
- Вторая строка. Указать правило, на соответствие которому будут проверяться пакеты, следующего вида: match <PROTOCOL> <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS>[<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>]. Подробнее параметры описаны в таблицах ниже.
- Третья строка. Указать действие, которое будет применяться к пакетам, удовлетворяющим условиям правила, следующего вида set <ACTION>. Подробнее параметры описаны в таблице ниже.
Список доступа может содержать несколько правил. Для добавления правила в существующий список доступа следует повторить шаги, описанные выше. В качестве <FILTER_MAP_NAME> следует указывать имя списка доступа, куда правило должно быть добавлено. Правило должно иметь уникальный номер <SEQUENCE> в рамках одного filter-map.
В конце любого filter-map ipv4 в неявном виде встроено запрещающее правило any any reject.
Общие параметры filter-map ipv4 описаны в таблице ниже.
Параметр | Описание |
---|---|
FILTER_MAP_NAME | Имя списка фильтрации, может принимать любое значение |
SEQUENCE_NUMBER | Номер приоритета выполнения, допустимые значения 0-65535. Если значение не задано, то параметр для созданного filter-map ethernet автоматически получит последующее свободное значение с шагом 10 |
PROTOCOL | Значение поля protocol. Может быть указано значение поля в диапазоне (0-255) или одно из следующих обозначений:
|
SRC_ADDRESS | IP-адрес источника, задается в одном из следующих форматов:
|
DST_ADDRESS | IP-адрес назначения, задается в одном из следующих форматов:
|
DSCPVALUE | Значение DSCP (Differentiated Services Code Point) для проверки пакета, целое число от 0 до 63 |
set <ACTION> | |
set accept | Разрешить |
set discard | Запретить без отправки ICMP-уведомления |
set reject | Запретить с отправкой ICMP-уведомления |
set nexthop <A.B.C.D> | Указать IP-адрес next hop. Пакеты, попавшие под действие правила, отсылаются на адрес next-hop c учётом существующих маршрутов в RIB |
set class-map <NAME> | Пакетам, попавшим под действие правила, присваивается указанный класс трафика class-map. Класс должен быть заранее создан (подробнее см. QoS) |
set vrf <VRF_NAME> [<A.B.C.D>] | Для пакетов, попавших под действие правила, будет использоваться таблица маршрутизации vrf, где VRF_NAME – имя необходимого vrf. Для данного vrf можно при необходимости указать IP-адрес next hop |
При указании протокола udp вторая строка команды создания filter-map будет иметь следующий вид: match udp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>].
Дополнительные параметры при указании udp описаны в таблице ниже.
Параметр | Описание |
---|---|
PORT_CONDITION | Условие для значения порта. Может быть указано одно из следующих значений: {{eq | gt | lt} {tftp | bootp | <0-65535>} | range <0-65535> <0-65535>} |
Значения PORT_CONDITION | |
eq | Номер порта равен |
gt | Номер порта больше, чем |
lt | Номер порта меньше, чем |
tftp | UDP(69) |
bootp | UDP(67) |
<0-65535> | Точный номер порта, любое значение из указанного диапазона |
range <0-65535> <0-65535> | Номер порта входит в диапазон |
При указании протокола tcp вторая строка команды создания filter-map будет иметь следующий вид: match tcp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>].
Дополнительные параметры при указании tcp описаны в таблице ниже.
Параметр | Описание |
---|---|
PORT_CONDITION | Условие для значения порта. Может быть указано одно из следующих значений: {{eq | gt | lt} {ftp | ssh | telnet | www | <0-65535>} | range <0-65535> <0-65535>} |
FLAG | Значения флага, по которым может производиться обработка пакетов. Может быть указано одно из следующих значений (префикс not- означает, что указанный флаг не установлен): ack | not-ack | fin | not-fin | psh | not-psh | rst | not-rst | syn | not-syn | urg | not-urg
Можно перечислить несколько флагов через пробел. При этом правило сработает, если в пакете будут установлены все перечисленные флаги. Например, правило not-rst syn ack сработает, если пакет содержит флаги SYN и ACK, но не содержит RST |
Значения PORT_CONDITION | |
eq | Номер порта равен |
gt | Номер порта больше, чем |
lt | Номер порта меньше, чем |
ftp | TCP(21) |
ssh | TCP(22) |
telnet | TCP(23) |
www | TCP(HTTP-80) |
<0-65535> | Точный номер порта, любое значение из указанного диапазона |
range <0-65535> <0-65535> | Номер порта входит в диапазон |
Пример создания списка доступа и добавления правил в него
Создание списка доступа производится в конфигурационном режиме:
ecorouter(config)#filter-map ipv4 example 10
match udp 10.10.10.0/24 20.20.20.0/24 eq 22
set accept
Здесь:
- example – имя списка доступа,
- 10 - номер последовательности правила в списке доступа,
- udp – указание на ожидаемый протокол,
- 10.10.10.0/24 – указание сети-источника пакетов с префиксом, трафик из которой разрешается для прохождения,
- 20.20.20.0/24 – указание сети назначения с префиксом, трафик в которую разрешается для прохождения,
- eq 22 – аргумент, указывающий на точный номер порта назначения,
- accept – разрешающий аргумент (трафик, удовлетворяющий условиям правила будет пропускаться).
Добавление правила к данному списку доступа (для пакетов, удовлетворяющих правило, также будет выполняться accept, правило будет проверяться вторым в списке доступа с именем example). Правило добавляет условие для проверки. Действие для всего списка выполняется одно и то же. Проверка правил внутри списка доступа производится в соответствии с указанными для них значениями <SEQUENCE>.
ecorouter(config)#filter-map ipv4 example 20
match 1 host 122.168.1.15 host 172.20.100.1
Здесь:
- example – имя списка доступа,
- 20 - номер последовательности правила в списке доступа,
- 1 – указание на протокол, в данном случае ICMP,
- host 122.168.1.15 – аргумент, указывающий на конкретный IP-адрес источник пакетов (указание маски не требуется),
- host 172.20.100.1 – аргумент, указывающий на конкретный IP-адрес назначения пакетов (указание маски не требуется).
Добавление правила к данному списку доступа (для пакетов, удовлетворяющих правило, также будет выполняться accept, правило будет проверяться третьим в списке доступа с именем example).
ecorouter(config)#filter-map ipv4 example 30
match ospf 192.168.32.0 0.0.7.255 any
Здесь:
- example – имя списка доступа,
- 30 - номер последовательности правила в списке доступа,
- ospf – указание на протокол, в данном случае ospf,
- 192.168.32.0 0.0.7.255 – аргумент, указывающий на IP-адрес источника пакетов с инверсной маской,
- any - аргумент, указывающий на все IP-адреса назначения пакетов.
Просмотр filter-map
Для просмотра созданных списков доступа L3 служит команда show filter-map ipv4. Она показывает только списки доступа без указания их привязок к интерфейсам.
ecorouter#show filter-map ipv4
Filter map example
Filter 10
match udp 10.10.10.0/24 20.20.20.0/24 eq 22
match 1 host 192.168.1.15 host 172.20.100.1
match ospf 192.168.32.0 0.0.7.255 any
set accept
Filter map TEST
Filter 20
match any host 10.210.10.151 any
set accept
Для назначения списка доступа на интерфейс используется команда контекстного режима настройки интерфейса set filter-map {in | out} <FILTER_MAP_NAME> [<SEQUENCE>] . К одному интерфейсу можно привязать несколько filter-map. Здесь параметр <SEQUENCE> в явном виде задается для каждого filter-map (а не для входящих в него правил!). Все привязанные к интерфейсу filter-map будут выполняться в порядке увеличения значений <SEQUENCE>. Неявное правило "запретить все" будет размещено после правил из всех привязанных filter-map.
Пример привязки filter-map к интерфейсу
ecorouter(config)#interface e20
ecorouter(config-if)#set filter-map in example 10
ecorouter(config-if)#set filter-map out TEST 20
Если при привязке filter-map к интерфейсу не указывать значение <SEQUENCE>, то для каждого привязываемого списка доступа его значение будет присваиваться автоматически с инкрементом 10.
Один и тот же список доступа может быть назначен на несколько интерфейсов одновременно.
В EcoRouterOS может быть создано до 64 тысяч filter-map. Однако существует ограничение на количество "активных" экземпляров filter-map, то есть, назначенных на L3 интерфейс. Можно настроить не более 64-х привязок списков доступа к интерфейсам. Это ограничение не зависит от количества созданных списков доступа или интерфейсов.
Управление списками доступа может осуществляться как из основного маршрутизатора, так и из виртуальных. При этом списки доступа виртуального маршрутизатора будут действовать только в его пределах, а списки доступа основного - соответственно, только в пределах основного.
Просмотр привязанных к интерфейсу списков доступа производится, например, при помощи команды show counters interface <INTERFACE_NAME> filter-map {in | out}.
show counters interface e20 filter-map out
Interface e20
Filter map TEST
Filter 10 [0 packets]
match any host 10.210.10.151 any
set accept
Команды просмотра L2 filter-map
Для просмотра информации по всем созданным L2 спискам фильтрации используется команда режима администрирования show filter-map ethernet [<FILTER_NAME>]
, где FILTER_NAME - название списка фильтрации.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show filter-map ethernet | Вывести информацию обо всех списках фильтрации L2 |
Filter map FILTER Filter 10 match host 0000.0000.0001 host 0000.0000.0004 match host 0000.0000.0001 any 0x806 set accept Filter map test Filter 10 match host 0000.0000.0001 any 0x806 set discard | Вывод информации обо всех списках фильтрации L2 |
ecorouter#show filter-map ethernet FILTER | Вывести информацию о списке фильтрации с именем FILTER |
Filter map FILTER Filter 10 match host 0000.0000.0001 host 0000.0000.0004 match host 0000.0000.0001 any 0x806 set accept | Вывод информации о списке с именем FILTER |
Просмотр счетчиков
Для просмотра показателей счетчиков для L2 списков фильтрации используется команда режима администрирования show counters port <NAME> filter-map {in | out}
.
Параметры команды описаны в таблице ниже.
Название | Описание |
---|---|
<NAME> | Название порта (см. Виды интерфейсов) |
in out | Направление трафика |
Счетчики отображаются по каждому блоку filter-map, но не по каждому правилу.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show counters port te0 filter-map in | Вывести значения счетчиков filter-map для порта te0 по входящему трафику |
Service instance 1 Filter map FILTER Filter 10 [5 packets] match host 0000.0000.0001 host 0000.0000.0004 match host 0000.0000.0001 any 0x806 set accept Filter 20 [6 packets] match host 0000.0000.0002 any set discard | Вывод команды |
Для того чтобы узнать, какие списки фильтрации привязаны к данному порту, используется команда режима администрирования show port <NAME>, где <NAME> - название порта.
Пример:
Консоль | Комментарий |
---|---|
ecorouter#show port te0 | Вывести информацию по порту te0 |
10 Gigabit Ethernet [none] port te0 is up MTU: 9728 LACP priority: 32767 Input packets 13, bytes 3308, errors 0 Output packets 10, bytes 1340, errors 0 Service instance te0.1 is up ingress encapsulation untagged ingress rewrite none egress encapsulation untagged egress none Connect bridge test symmetric filter-map in FILTER Input packets 13, bytes 3308 Output packets 10, bytes 1340 | Вывод команды |
Команды просмотра L3 filter-map
Просмотр всех созданных списков доступа L3 осуществляется при помощи команды административного режима show filter-map ipv4.
ecorouter#show filter-map ipv4
Filter map NAME
Filter 10
match any any any
set discard
Filter map TEST
Filter 10
match any host 10.210.10.151 any
set accept
Для просмотра определенного списка доступа L3 команда вводится с именем списка: show filter-map ipv4 <NAME>.
ecorouter#show filter-map ipv4 TEST
Filter map TEST
Filter 10
match any host 10.210.10.151 any
set accept
Просмотр всех присоединенных списков доступа L3 на определенном интерфейсе осуществляется командой show counters interface <NAME> filter-map {in | out}.
ecorouter#show counters interface EXAMPLE
filter-map in
Interface EXAMPLE
Filter map TEST
Filter 10 [0 packets]
match any any any
set discard
Настройка политики для абонентской сессии
Для фильтрации трафика в рамках абонентской сессии (subscriber-service) применяются политики subscriber-policy. Для одной сессии может быть назначено до 10 таких политик. Трафик последовательно будет обрабатываться в соответствии с каждой политикой в соответствии с ее порядковым номером.
Создание subscriber-policy производится в конфигурационном режиме при помощи команды subscriber-policy <NAME>, где <NAME> - имя создаваемой сущности.
ecorouter(config)#subscriber-policy ?
SUBSCRIBER_POLICY Subscriber policy name
После создания subscriber-policy автоматически производится переход в контекстный режим редактирования ее параметров.
ecorouter(config)#subscriber-policy subspolname
ecorouter(config-sub-policy)#
Параметры subscriber-policy приведены в таблице ниже.
Параметр | Описание |
---|---|
<BANDWIDTH> | Ширина полосы пропускания в Мбит/сек от 1 до 200 |
<DESCRIPTION> | Текстовое описание политики |
Каждой политике subscriber-policy пользователь может назначить 2 разных правила обработки (filter-map policy): одно для входящего (in) и одно для исходящего (out) трафика. Если filter-map policy не назначен на направление, то трафик соответствующего вида политикой не обрабатывается и не претерпевает никаких изменений. Внимание: без задания filter-map policy с ограничениями и привязки его к тому же направлению для subscriber-policy трафик до заданной полосы пропускания ограничиваться не будет!
Назначение для политики subscriber-policy на выбранное направление трафика (in или out) нужной filter-map policy производится в контекстном режиме редактирования параметров subscriber-policy при помощи команды set filter-map {in | out} <NAME>, где <NAME> - имя filter-map policy.
Пример настройки subscriber-policy (в данном примере предполагается, что filter-map policy с именем FMPname уже создана и настроена; создание и настройка filter-map policy описаны ниже).
ecorouter(config)#subscriber-policy subspolname
ecorouter(config-sub-policy)#description Testsubscrpolicy
ecorouter(config-sub-policy)#bandwidth in 200
ecorouter(config-sub-policy)#set filter-map in FMPname
Создание и настройка filter-map policy
Создание filter-map policy производится при помощи команды конфигурационного режима filter-map policy ipv4 <NAME>, где <NAME> - имя создаваемой сущности.
ecorouter(config)#filter-map policy ipv4 ?
FILTER_MAP_POLICY_IPV4 Filter map name
После создания filter-map policy автоматически производится переход в контекстный режим редактирования ее параметров.
ecorouter(config)#filter-map policy ipv4 FMPname
ecorouter(config-filter-map-policy-ipv4)#
Для настройки filter-map policy требуется выполнить следующие действия (в результате внутри filter-map policy будет создано одно правило):
- Первая строка. Ввести команду filter-map policy ipv4 <FILTER_MAP_NAME> [<SEQUENCE_NUMBER>], где <FILTER_MAP_NAME> - имя списка доступа, <SEQUENCE_NUMBER> - порядковый номер правила в списке доступа. Подробнее параметры описаны в таблице ниже.
- Вторая строка. Указать правило, на соответствие которому будут проверяться пакеты, следующего вида: match <PROTOCOL> <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS>[<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>]. Подробнее параметры описаны в таблицах ниже.
- Третья строка. Указать действие, которое будет применяться к пакетам, удовлетворяющим условиям правила, следующего вида set <ACTION>. Подробнее параметры описаны в таблице ниже.
Список доступа может содержать несколько правил. Для добавления правила в существующий список доступа следует повторить шаги, описанные выше. В качестве <FILTER_MAP_NAME> следует указывать имя списка доступа, куда правило должно быть добавлено. Правило должно иметь уникальный номер <SEQUENCE> в рамках одной filter-map policy.
Общие параметры filter-map policy описаны в таблице ниже.
Параметр | Описание |
---|---|
DIRECTION | Направление трафика, in - входящий трафик, out - исходящий трафик |
FILTER_MAP_NAME | Имя списка фильтрации, может принимать любое значение |
SEQUENCE_NUMBER | Номер приоритета выполнения, допустимые значения 0-65535. Если значение не задано, то параметр для созданного filter-map ethernet автоматически получит последующее свободное значение с шагом 10 |
PROTOCOL | Значение поля protocol. Может быть указано значение поля в диапазоне (0-255) или одно из следующих обозначений:
|
SRC_ADDRESS | IP-адрес источника, задается в одном из следующих форматов:
|
DST_ADDRESS | IP-адрес назначения, задается в одном из следующих форматов:
|
DSCPVALUE | Значение DSCP (Differentiated Services Code Point) для проверки пакета, целое число от 0 до 63 |
set <ACTION> | |
set accept | Разрешить. Если в subsriber-policy, где используется данная filter-map policy, задана полоса пропускания (параметр bandidwth), то для этого типа трафика будет применено ограничение скорости до указанных в bandwidth значений |
set discard | Запретить без отправки ICMP-уведомления |
set nexthop <A.B.C.D> | Указать IP-адрес next hop. Пакеты, попавшие под действие правила, отсылаются на адрес next-hop c учётом существующих маршрутов в RIB |
set redirect <REDIRECTNAME> | Перенаправить HTTP GET на указанный <REDIRECTNAME>, где <REDIRECTNAME> - имя заранее заданного URL (адрес для перенаправления должен начинаться с http://). Пример настройки перенаправления приведен ниже. |
set reject | Запретить с отправкой ICMP-уведомления |
set vrf <VRF_NAME> [<A.B.C.D>] | Для пакетов, попавших под действие правила, будет использоваться таблица маршрутизации vrf, где VRF_NAME – имя необходимого vrf. Для данного vrf можно при необходимости указать IP-адрес next hop |
При указании протокола udp вторая строка команды создания filter-map policy будет иметь следующий вид: match udp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>].
Дополнительные параметры при указании udp описаны в таблице ниже.
Параметр | Описание |
---|---|
PORT_CONDITION | Условие для значения порта. Может быть указано одно из следующих значений: {{eq | gt | lt} {tftp | bootp | <0-65535>} | range <0-65535> <0-65535>} |
Значения PORT_CONDITION | |
eq | Номер порта равен |
gt | Номер порта больше, чем |
lt | Номер порта меньше, чем |
tftp | UDP(69) |
bootp | UDP(67) |
<0-65535> | Точный номер порта, любое значение из указанного диапазона |
range <0-65535> <0-65535> | Номер порта входит в диапазон |
При указании протокола tcp вторая строка команды создания filter-map policy будет иметь следующий вид: match tcp <SRC_ADDRESS> [<PORT_CONDITION>] <DST_ADDRESS> [<PORT_CONDITION>] [dscp <DSCPVALUE>] [<FLAG>].
Дополнительные параметры при указании tcp описаны в таблице ниже.
Параметр | Описание |
---|---|
PORT_CONDITION | Условие для значения порта. Может быть указано одно из следующих значений: {{eq | gt | lt} {ftp | ssh | telnet | www | <0-65535>} | range <0-65535> <0-65535>} |
FLAG | Значения флага, по которым может производиться обработка пакетов. Может быть указано одно из следующих значений (префикс not- означает, что указанный флаг не установлен): ack | not-ack | fin | not-fin | psh | not-psh | rst | not-rst | syn | not-syn | urg | not-urg
Можно перечислить несколько флагов через пробел. При этом правило сработает, если в пакете будут установлены все перечисленные флаги. Например, правило not-rst syn ack сработает, если пакет содержит флаги SYN и ACK, но не содержит RST |
Значения PORT_CONDITION | |
eq | Номер порта равен |
gt | Номер порта больше, чем |
lt | Номер порта меньше, чем |
ftp | TCP(21) |
ssh | TCP(22) |
telnet | TCP(23) |
www | TCP(HTTP-80) |
<0-65535> | Точный номер порта, любое значение из указанного диапазона |
range <0-65535> <0-65535> | Номер порта входит в диапазон |
Задание адреса для перенаправления
ecorouter(config)#redirect-url SITEREDIRECT
ecorouter(config-redirect-url)#url http://forredirect.org
Пример настроек для обработки трафика в абонентской сессии
В данном примере настроен статический IPoE.
В результате выполнения приведенных ниже настроек на вход (применяется filter-map policy NAME1) будет отбрасываться весь icmp-трафик, udp-трафик будет ограничен до 20 Мбит/сек, tcp-трафик будет пропускаться без изменений.
Трафик на выход (применяется filter-map policy NAME2) будет ограничен до 5 Мбит/сек, tcp-трафик порта 80 будет перенаправлен на адрес http://forredirect.org.
!
filter-map policy ipv4 NAME1 10
match icmp any any
set discard
filter-map policy ipv4 NAME1 20
match udp any any
set accept
filter-map policy ipv4 NAME2 10
match tcp any any eq 80
set redirect SITEREDIRECT
filter-map policy ipv4 NAME2 20
match any any any
set accept
!
subscriber-policy NAME
bandwith in 20
set filter-map in NAME1 10
bandwith out 5
set filter-map out NAME2 10
!
subscriber-service NAME
set policy NAME
!
ip prefix-list NAME seq 5 permit 10.10.10.100/32 eq 32
!
subscriber-map NAME 10
match static prefix-list NAME
set service NAME
!
interface ipoe.1
ip mtu 1500
ip address 10.10.10.1/24