Фильтрация маршрутной информации представляет собой фундаментальный механизм управления сетевым трафиком в современных системах. В условиях экспоненциального роста сетевой инфраструктуры и увеличения сложности маршрутизации, эффективный контроль над распространением маршрутов становится не просто опциональной возможностью, а критически важной необходимостью. Этот механизм выполняет тройную функцию: обеспечивает сетевую безопасность, предотвращая распространение нежелательных или ошибочных маршрутов; оптимизирует использование ресурсов, отсекая избыточную маршрутную информацию; и реализует бизнес-политики, направляя трафик по предопределенным путям в соответствии с операционными требованиями. В контексте динамической маршрутизации, где протоколы наподобие OSPF, BGP и EIGRP автоматически обмениваются информацией о сетевой топологии, фильтрация выступает в роли интеллектуального фильтра, позволяющего администраторам тонко настраивать поведение сети, балансировать нагрузку, обеспечивать отказоустойчивость и защищать от непреднамеренных конфигурационных ошибок, которые могут привести к масштабным сетевым инцидентам.
ACL позволяют реализовать механизм простой фильтрации маршрутной информации на основе ip адресов и масок. После создания, ACL можно использовать в других контекстах.
# Синтаксис
access-list NAME seq NUMBER {permit|deny} SOURCE [WILDCARD]
access-list NAME seq NUMBER {permit|deny} PREFIX/LEN
# Примеры
access-list 100 seq 5 permit 192.168.1.0/24
access-list 100 seq 10 deny any
Для создания списка доступа ACL необходимо подключиться к устройству по протоколу ssh и перейти в интерпретатор ffrouting с помощью команды “vtysh”. В новом терминале необходимо перейти в режим конфигурирования с помощью команды “configure terminal” и задать команды для создания списка доступа.
Diamond VPN-FW Next:~# vtysh
Hello, this is FRRouting (version 10.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
Diamond VPN-FW Next# configure terminal
Diamond VPN-FW Next(config)#
# Стандартный ACL
Diamond VPN-FW Next(config)# access-list 10 seq 5 permit 192.168.1.0/24
Diamond VPN-FW Next(config)# access-list 10 seq 10 deny any
# Расширенный ACL
Diamond VPN-FW Next(config)# access-list 150 seq 5 permit ip 10.0.0.0 0.255.255.255 any
Diamond VPN-FW Next(config)# access-list 150 seq 10 deny ip any any
# Для OSPF фильтрации
Diamond VPN-FW Next(config)# access-list OSPF-FILTER seq 5 permit 172.16.1.0/24
Diamond VPN-FW Next(config)# access-list OSPF-FILTER seq 10 permit 172.16.2.0/24
Prefix list позволяет реализовать оптимизированный механизм фильтрации префиксов с гибкостью по маскам.
ge (greater or equal) - минимальная длина маски
le (less or equal) - максимальная длина маски
# Синтаксис с поддержкой диапазонов масок
ip prefix-list NAME seq NUMBER {permit|deny} PREFIX/LEN [ge VALUE] [le VALUE]
# Примеры
ip prefix-list CUSTOMER-ROUTES seq 5 permit 192.168.0.0/16 ge 24 le 28
ip prefix-list INTERNET-ROUTES seq 10 deny 0.0.0.0/0
Для создания Prefix list необходимо подключиться к устройству по протоколу ssh и перейти в интерпретатор ffrouting с помощью команды “vtysh”. В новом терминале необходимо перейти в режим конфигурирования с помощью команды “configure terminal” и задать команды для создания списка доступа.
Diamond VPN-FW Next:~# vtysh
Hello, this is FRRouting (version 10.3).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
Diamond VPN-FW Next# configure terminal
Diamond VPN-FW Next(config)#
# Точное совпадение маски
Diamond VPN-FW Next(config)# ip prefix-list EXACT seq 5 permit 192.168.1.0/24
# Диапазон масок
Diamond VPN-FW Next(config)# ip prefix-list RANGE seq 5 deny 10.0.0.0/8 le 32
Diamond VPN-FW Next(config)# ip prefix-list RANGE seq 10 permit 0.0.0.0/0 le 32
# Комбинация ge/le
Diamond VPN-FW Next(config)# ip prefix-list SPECIFIC seq 5 permit 172.16.0.0/16 ge 24 le 28
# Фильтрация маршрутов по умолчанию
Diamond VPN-FW Next(config)# ip prefix-list DEFAULT seq 5 permit 0.0.0.0/0
# Запрет слишком специфичных маршрутов
Diamond VPN-FW Next(config)# ip prefix-list NO-HOSTS seq 5 deny 0.0.0.0/0 ge 31 le 32
Diamond VPN-FW Next(config)# ip prefix-list NO-HOSTS seq 10 permit 0.0.0.0/0 le 30
Route map позволяет реализовать механизм обработки маршрутной информации с условиями и действиями.
# Многоэтапная обработка с условиями
route-map NAME [permit|deny] SEQUENCE
match CONDITIONS
set ACTIONS
# Пример
route-map BGP-POLICY permit 10
match ip address prefix-list IMPORTANT-ROUTES
match as-path 100
set local-preference 200
set community 65001:100
Ниже представлены варианты для “Условия (match)" и “Действия (set)”.
Условия match
# По IP адресу
match ip address {ACL|PREFIX-LIST}
# По интерфейсу
match interface INTERFACE_NAME
# По метрике
match metric VALUE
# Для BGP - по AS Path
match as-path AS_PATH_LIST
# По next-hop
match ip next-hop {ACL|PREFIX-LIST}
# По тегу
match tag VALUE
Действия (set)
# Изменение атрибутов BGP
set as-path prepend AS_NUMBER
set local-preference VALUE
set metric VALUE
set community COMMUNITY_VALUE
set origin {igp|egp|incomplete}
#Для OSPF
set metric TYPE VALUE
set tag VALUE
Для создания Route map необходимо подключиться к устройству по протоколу ssh и перейти в интерпретатор ffrouting с помощью команды “vtysh”. В новом терминале необходимо перейти в режим конфигурирования с помощью команды “configure terminal” и задать команды для создания списка доступа.
# Простая фильтрация по prefix-list
route-map BASIC-FILTER permit 10
match ip address prefix-list ALLOWED-ROUTES
# Фильтрация с множественными условиями
route-map COMPLEX-FILTER permit 10
match ip address prefix-list INTERNAL-NETS
match interface eth0
set metric 100
# BGP route-map с изменением атрибутов
route-map BGP-IN permit 10
match as-path 100
set local-preference 200
set community 65001:100
#Route-map с разными последовательностями
route-map MULTI-STAGE deny 10
match ip address prefix-list PRIVATE-NETS
route-map MULTI-STAGE permit 20
match ip address prefix-list CUSTOMER-ROUTES
set metric 50
route-map MULTI-STAGE permit 30
match ip address prefix-list PEERING-ROUTES
set metric 200