img

Фильтрация маршрутов в EIGRP

21 ноября
20:00
Бесплатный вебинар
Введение в Docker
Ведущий — Филипп Игнатенко.
Руководитель центра разработки
Записаться
img
img

В этом материале расскажем, как можно фильтровать маршруты, анонсируемые протоколом динамической маршрутизации EIGRP. Данный материал предполагает, что у читателя есть начальные навыки работы с сетью или как минимум знания на уровне CCNA. Поэтому о том, что такое динамическая маршрутизация в этом материале не будет рассказано, так как тема достаточно большая и займет не одну страницу.

Теперь представим, что мы работаем в большой компании с сотнями серверов, десятками филиалов. Мы подняли сеть, настроили динамическую маршрутизацию и все счастливы. Пакеты ходят куда надо, как надо. Но в один прекрасный день, нам сказали, что на маршрутизаторах филиалов не должно быть маршрутов к сетям отдела производства. На рисунке ниже представлена упрощенная схема нашей вымышленной сети.

Сеть предприятия Cisco в Packet Tracer
Конфигурацию всех устройств из этой статьи (для каждой ноды) можно скачать в архиве по ссылке ниже.
Скачать конфиги тестовой лаборатории

Мы конечно можем убрать из-под EIGRP указанные сети, но в этом случае из сетей в головном офисе тоже не будет доступа к сетям отдела производства. Именно для таких случаев была придумана такая возможность, как фильтрация маршрутов. В EIGRP это делается командой distribute-list в конфигурации EIGRP.

Принцип работы distribute-list (список распределения) прост: список распределения работает по спискам доступа (ACL), спискам префиксов (prefix-list) или карте маршрутов (route-map). Эти три инструмента определяют будут ли анонсироваться указанные сети в обновлениях EIGRP или нет. В команде distribute-list также можно указать направление обновлений: входящие или исходящие. Также можно указать конкретный интерфейс, где должны фильтроваться обновления. Полная команда может выглядеть так:

distribute-list acl [in | out][interface-type interface-number]

Фильтрация маршрутов с помощью списков доступа

Первым делом рассмотрим фильтрацию с помощью ACL. Фильтрация маршрутов EIGRP с помощью списков ACL основан на разрешающих и запрещающих действиях списков доступа. То есть, чтобы маршрут анонсировался, в списке доступа он должен быть указан с действием permit, а deny, соответственно, запрещает анонсирование маршрута. При фильтрации, EIGRP сравнивает адрес источника в списке доступа с номером подсети (префиксом) каждого маршрута и принимает решение на основе действий, указанных в ACL.

Чтобы лучше узнать принцип работы приведём примеры.

Принцип фильтрации маршрутов EIGRP

Для фильтрации маршрутов, указанных на рисунке выше нужно создать ACL, где каждый указанный маршрут сопровождается командой deny, а в конце следует прописать permit any, чтобы остальные маршруты могли анонсироваться:

access-list 2 deny 10.17.32.0 0.0.1.255
access-list 2 deny 10.17.34.0 0.0.0.255
access-list 2 deny 10.17.35.0 0.0.0.127
access-list 2 deny 10.17.35.128 0.0.0.127
access-list 2 deny 10.17.36.0 0.0.0.63
access-list 2 deny 10.17.36.64 0.0.0.63
access-list 2 permit any

А на интерфейсе настройки EGRP прописываем:

distribute-list 2 out s4/0

Проверим таблицу маршрутизации до и после применения указанных команд. Фильтрацию будем проводить на WAN маршрутизаторах.

Проверка таблицы маршрутизации Cisco

Как видим все маршруты до сети отдела Производства видны в таблице маршрутизации филиала. Теперь применим указанные изменения:

Применение фильтров EIGRP

И посмотрим таблицу маршрутов роутера филиала еще раз:

ip route eigrp

Все маршруты в отдел производства исчезли из таблицы маршрутизации. Правда, можно было обойтись и одной командой в списке доступа, но для наглядности решили прописать все адреса. А более короткую версию можете указать в комментариях к этому посту. Кстати, фильтрацию в данном примере мы применили на один интерфейс, но можно применить и на все интерфейсы, на которых включен EIGRP. Для этого команду distribute-list нужно ввести без указания конкретного интерфейса.

distribute-list 2 out

Следует отметить, что для правильной работы фильтрации в нашей топологии на маршрутизаторе WAN2 нужно прописать те же настройки, что и на WAN1.


Фильтрация маршрутов с помощью списка префиксов

В Cisco IOS есть еще один инструмент, который позволяет осуществлять фильтрацию маршрутов prefix-list-ы. Может возникнуть вполне логичный вопрос: а чем не угодили списки доступа? Дело в том, что изначально ACL был разработан для фильтрации пакетов, поэтому для фильтрации маршрутов он не совсем подходит по нескольким причинам:

  • списки IP-префиксов позволяют сопоставлять длину префикса, в то время как списки ACL, используемые командой EIGRP distribution-list, нет;
  • Использование расширенных ACL может оказаться громоздким для конфигурирования;
  • Невозможность определения совпадения маски маршрута при использовании стандартных ACL;
  • Работа ACL достаточно медленна, так как они последовательно применяется к каждой записи в маршрутном обновлении;

Для начала разберёмся в принципе работы списка префиксов. Списки IP префиксов позволяют сопоставлять два компонента маршрута:

  • адрес сети (номер сети);
  • длину префикса (маску сети);

Между списками доступа и списками префиксов есть общие черты. Как и нумерованные списки доступа, списки префиксов могу состоять из одной и более команд, которые вводятся в режиме глобальной конфигурации и нет отдельного режима конфигурации. Как и в именованных списках доступа, в списках префиксов можно указать номер строки. В целом команда выглядит так:

ip prefix-list list-name [ seq seq-value ] { deny | permit prefix / prefix-length } [ ge ge-value ] [ le le-value ]

Коротко работу списка префиксов можно описать так:

  1. Адрес сети маршрута должен быть в пределах, указанных в команде ip prefix-list prefix/prefix-length.
  2. Маска подсети маршрута должна соответствовать значениям, указанным в параметрах prefix-length, ge, le.

Первый шаг работает также как и списки доступа. Например, написав ip prefix-list TESTLIST 10.0.0.0/8 мы скажем маршрутизатору, что адрес сети должен начинаться с 10. Но списки префиксов всегда проверяют и на соответствие длины маски сети указанным значениям. Ниже приведено пояснение параметров списка IP-префиксов:

Параметр prefix-list-а

Значение

Не указан

10.0.0.0/8;

Маска сети должна быть равной длине, указанной в параметре prefix/prefix-length. Все маршруты, которые начинаются с 10.

ge и le (больше чем, меньше чем)

10.0.0.0/8 ge 16 le 24

Длина маски должна быть больше 16, но меньше 24. А первый байт должен быть равен 10-ти.

le меньше чем

10.0.0.0/8 le 24

Длина маски должна быть от восьми до 24-х включительно.

ge больше чем

10.0.0.0/8 ge 24

Длина маски должна быть равна или больше 24 и до 32-х включительно.

Учтите, что Cisco требует, чтобы параметры prefix-length, ge и le соответствовали следующему равенству: prefix-length <= ge-value <= le-value (8<=10<=24).

А теперь перейдем непосредственно к настройке фильтрации с помощью списка префиксов. Для этого в интерфейсе конфигурации EIGRP прописываем distribute-list prefix prefix-name.

Воспользуемся той же топологией и введём некоторые изменения в конфигурацию маршрутизатора WAN1, точно такую же конфигурацию нужно прописать и на WAN2. Итак, наша задача:

  • отфильтровать маршруты в сети 10.17.35.0 и 10.17.36.0;
  • отфильтровать маршруты сетей точка-точка так, чтобы маршрутизаторы в филиалах и на коммутаторах ядра (Core1 и Core2) не видели сети с длиной маски /30 бит. Так как трафик от пользователей в эти сети не идет, следовательно, нет необходимости анонсировать их в сторону пользователей.

Для этого создаем prefix-list с названием FILTER-EIGRP и добавим нужные сети:

ip prefix-list FILTER-EIGRP seq 5 deny 10.17.35.0/24 ge 25 le 25
ip prefix-list FILTER-EIGRP seq 10 deny 10.17.36.0/24 ge 26 le 26
ip prefix-list FILTER-EIGRP seq 15 deny 0.0.0.0/0 ge 30 le 30
ip prefix-list FILTER-EIGRP seq 20 permit 0.0.0.0/0 le 32

Удалим из конфигурации фильтрацию по спискам доступа и проверим таблицу маршрутизации:

Удаление фильтров EIGRP

А теперь применим наш фильтр и затем еще раз проверим таблицу маршрутизации:

Применение фильтров EIGRP Проверка таблицы маршрутизации EIGRP на Cisco

Как видим из рисунка, маршрутов в сети 10.17.35.0, 10.17.36.0 и сети для соединений точка-точка между сетевыми устройствами в таблице уже нет. А теперь объясним что мы сказали маршрутизатору:

ip prefix-list FILTER-EIGRP seq 5 deny 10.17.35.0/24 ge 25 le 25

Все сети, которые начинаются на 10.17.35 и имеют длину 25 бит запретить. Под это условие попадают сети 10.17.35.0/25 и 10.17.35.128/25. Длине префикса /25 соответствует маска 255.255.255.128.

ip prefix-list FILTER-EIGRP seq 10 deny 10.17.36.0/24 ge 26 le 26

Все сети, которые начинаются на 10.17.36 и имеют длину 26 бит запретить. Под это условие попадают сети 10.17.36.0/26 и 10.17.36.64/26. Длине префикса /26 соответствует маска 255.255.255.192.

ip prefix-list FILTER-EIGRP seq 15 deny 0.0.0.0/0 ge 30 le 30

Все сети, длина префикса которых равна 30 бит - запретить. В нашей топологии под это условие попадают сети 10.1.1.0/30, 10.1.1.4/30, 10.1.2.0/30, 10.1.2.4/30 все сети которые начинаются на 10.9.2.

ip prefix-list FILTER-EIGRP seq 20 permit 0.0.0.0/0 le 32

Все сети, префикс которых имеет длину до 32-х бит разрешить. Под это условие попадают все остальные сети топологии.


Фильтрация маршрутов с помощью route-map

Далее пойдет речь о картах маршрутов или route-map-ах. В целом, в работе сети route-map-ы используются довольно часто. Этот достаточно гибкий инструмент дает возможность сетевому инженеру тонко настраивать маршрутизацию в корпоративной сети. Именно поэтому следует хорошо изучить принцип их работы, чем мы и займемся сейчас. А дальше покажем, как фильтровать маршруты с помощью этого инструмента.

Route-map применяет логику похожую на логику if, else, then в языках программирования. Один route-map может включать в себя несколько команд route-map и маршрутизатор выполняет эти команды поочередно согласно номеру строки, который система добавляет автоматически, если не был указан пользователем. После того как, система нашла соответствие маршрута условию и определила разрешить анонсирование или нет, маршрутизатор прекращает выполнение команды route-map для данного маршрута, даже если дальше указано другое условие. Каждый route-map включает в себя критерии соответствия, который задается командой match. Синтаксис route-map выглядит следующим образом:

route-map route-map-name {permit | deny} seq sequence-number
match (1st set of criteria)

Как и в случае с ACL или prefix-list, в route-map тоже можно указать порядковый номер строки для добавления или удаления соответствующего правила.

В команде match можно указать ACL или prefix-list. Но тут может возникнуть недоразумение. А связано оно с тем, как обрабатываются route-map Cisco IOS. Дело в том, что решение о запрете или допуске маршрута основано на команде deny или permit команды route-map. Другими словами, маршрут будет обработан route-map-ом если в ACL или prefix-list-е данный маршрут сопровождается командой permit. Иначе, route-map проигнорирует данную запись и перейдет к сравнению со следующим условием route-map. Поясним на примере:

access-list 101 permit 10.17.37.0 0.0.0.255
access-list 102 deny 10.17.35.0 0.0.0.127
route-map Test permit 5
match ip-address 101
route-map Test deny 10
match ip-address 102

В данном случае маршрут 10.17.37.0 будет обработан route-map 5, а маршрут 10.17.35.0 будет проигнорирован, так как в списке доступа под номером 102 он запрещён и не попадёт под критерий соответствия route-map.

Приведём ключевые пункты работы route-map при фильтрации маршрутов:

  • Команда route-map с опцией permit либо разрешит анонсирование маршрута, если он соответствует критерию, указанному в команде match, либо пропустит для обработки следующим пунктом.
  • Команда route-map с опцией deny либо запретит анонсирование маршрута, если он соответствует критерию, указанному в команде match, либо пропустит для обработки следующим пунктом.
  • Если команда match основывается на ACL или prefix-list-ы, а в ACL или prefix-list-ах указанный маршрут прописан с действием deny, то маршрут не будет отфильтрован. Это будет означать, что маршрут не соответствует критерию, указанному в команде match и его нужно пропустить для обработки следующим пунктом.
  • В конце каждого route-map существует явный запрет; чтобы пропустить все маршруты, которые не попали под критерии, нужно указать команду route-map с действием permit без опции match.

Для того чтобы задействовать route-map в фильтрации маршрутов используется та же команда distribute-list с опцией route-map route-map-name. Внесём некоторые изменения в конфигурацию маршрутизатора WAN1. Точно такие же изменения нужно будет сделать на WAN2. Используем те же префикс-листы, что и в предыдущем примере с незначительными редактированиями:

ip prefix-list MANUFACTURING seq 5 permit 10.17.35.0/24 ge 25 le 25
ip prefix-list MANUFACTURING seq 10 permit 10.17.36.0/24 ge 26 le 26
ip prefix-list POINT-TO-POINT seq 5 permit 0.0.0.0/0 ge 30 le 30
Использование префикс-листов

После внесения изменений маршрутов в сеть производства, а также в сети точка-точка таблице маршрутизации на роутерах филиалов не окажется. Также на Core1 не будет маршрута до сетей point-to-point:

Итоги работы по фильтрам

Мы рассмотрели фильтрацию маршрутов в EIGRP тремя способами. Хорошим тоном считается использование списка префиксов, так как они заточены именно под эти цели. А использование карты маршрутизации или route-map-ов неэффективно из-за большего количества команд для конфигурации.

В следующем материале рассмотрим фильтрацию в домене OSPF.

Ссылка
скопирована
Получите бесплатные уроки на наших курсах
Все курсы
Сети
Скидка 25%
Основы сетевых технологий
Стань сетевиком с нуля за 2 месяца. Веселая и дружелюбная подача информации с эмуляцией реальных задач.
Получи бесплатный
вводный урок!
Пожалуйста, укажите корректный e-mail
отправили вводный урок на твой e-mail!
Получи все материалы в telegram и ускорь обучение!
img
Еще по теме:
img
В начале 2000-х, когда идея мессенджеров только формировалась, расширяемый протокол обмена сообщениями и информацией о присутств
img
Задержка в сети, или сетевая задержка, - это временная задержка при передаче запросов или данных от источника к адресату в сетев
img
Система доменных имен (DNS – Domain Name System) обеспечивает сетевую коммуникацию. DNS может показаться какой-то невидимой сило
img
Wi-Fi это технология, которая использует радиоволны для отправки и получения сигналов от находящихся поблизости устройств, чтобы
img
BGP (Border Gateway Protocol) - это протокол граничного шлюза, предназначенный для обмена информацией о маршрутизации и доступно
img
Когда читаете данную статью, браузер подключается к провайдеру (или ISP) а пакеты, отправленные с компьютера, находят путь до се
21 ноября
20:00
Бесплатный вебинар
Введение в Docker