Рассмотрим, как настроить фильтрацию маршрутов BGP на основании атрибута AS_PATH. BGP (Border Gateway Protocol) — протокол динамической маршрутизации, который является бесклассовым, и относится к категории протоколов внешней маршрутизации (Exterior Gateway Protocol, EGP), по вектору пути (Path vector). Настройка манипулирования маршрутами BGP на основании атрибута AS_PATH рассмотрена в этой статье.
Содержание:
- Топология
- Сценарий
- Настройка BGP
- Удаление частной AS
- Атрибут AS_PATH для фильтрации маршрутов
- Выводы
Топология
Исследуемая топология состоит из трех маршрутизаторов Cisco 1941 с образом Cisco IOS Release 15.4 IP Base. Допускается использование маршрутизаторов других моделей, а также других версий операционной системы Cisco IOS. В зависимости от модели устройства и версии Cisco IOS доступные команды и результаты их выполнения могут отличаться от тех, которые показаны в этой статье.
Схема топологии следующая:
Сценарий
Интернет-провайдеру Международного туристического агентства (International Travel Agency, ITA) присвоен номер автономной системы AS 300. ISP использует BGP для обмена маршрутной информацией с несколькими клиентскими сетями. Некоторым клиентским сетям назначается номер AS из частного диапазона, например AS 65000 для Company2.
Необходимо настроить маршрутизатор ISP на удаление частных номеров AS из информации о маршруте AS Company2. Также на ISP необходимо настроить запрет на распространение маршрутов, передаваемых от AS 100 Company1, на маршрутизатор клиента Company2.
Настройки маршрутизатора ISP
Настройки маршрутизатора Company1
Настройки маршрутизатора Company2
Настройка BGP
Настроим BGP на обычную работу, идентифицируем работу соседей BGP и объявляем сети loopback на каждом маршрутизаторе:
Company1:
Company2:
ISP:
Убедимся, что маршрутизаторы установили соответствующие соседские отношения, выполнив команду show ip bgp neighbors на каждом маршрутизаторе:
Маршрутизатор ISP:
Удаление частной AS
С помощью команды show ip route отобразим таблицу маршрутизации Company1, чтобы убедиться в наличии маршрутов к 10.2.2.0 и к 10.3.3.0:
Если проверить доступность сети 10.3.3.1 с помощью утилиты ping — проверка будет неудачна. Поскольку Company1 отправляет эхо-запрос через ближайший подключенный интерфейс GigabitEthernet0/0 с IP-адресом 192.168.1.5, Company2 не имеет обратного маршрута к этому интерфейсу, поэтому ответы ping не могут вернуться в Company1:
На этот раз указываем адрес источника:
Или так:
Проверим таблицу BGP на маршрутизаторе Company1. Обратите внимание на маршрут AS для сети 10.3.3.0. AS 65000 должен быть указан в маршруте к 10.3.3.0:
AS 65000 — это частная AS, которую не следует публично рекламировать в Интернете. В противном случае клиенты двух взаимосвязанных Интернет-провайдеров, имеющих один и тот же частный номер AS, увидят свою собственную AS в объявлениях о маршрутах друг друга. В результате каждый клиент будет думать, что объявления исходят от него самого, и будет игнорировать их. Настроим ISP для удаления частных номеров AS из маршрутов BGP, которыми обмениваются с Company1:
Примечание: После выполнения данных команд используйте команду clear ip bgp * на ISP, чтобы восстановить отношения BGP между тремя маршрутизаторами.
Снова проверим таблицу маршрутизации Company1:
Также можем наблюдать удачный ping 10.3.3.1, используя интерфейс loopback 0 в качестве источника эхо-запроса:
Теперь проверим таблицу BGP на Company1. AS_ PATH к сети 10.3.3.0 должен быть AS 300. У него больше нет частной AS на пути:
Атрибут AS_PATH для фильтрации маршрутов
В сложной среде этот атрибут можно использовать для принудительного применения политики маршрутизации. В этом случае ISP должен быть настроен так, чтобы он не распространял маршруты, исходящие от AS 100, на маршрутизатор клиента Company2.
Списки доступа AS_PATH читаются как обычные списки доступа (access-lists). Операторы читаются последовательно, и в конце есть неявный запрет. Вместо сопоставления адреса в каждом операторе, как в обычном списке доступа, списки доступа по атрибуту AS_PATH сопоставляются по так называемому регулярному выражению (regular expression). Регулярные выражения — это шаблоны, используемые для сопоставления последовательностей символов в строках. Укажем специальный тип access-list для сопоставления маршрутов BGP с атрибутом AS_PATH, который начинается и заканчивается числом 100:
Первая команда использует символ «^», чтобы указать, что маршрут AS должен начинаться с заданного числа 100. Символ «$» указывает, что атрибут AS_PATH также должен заканчиваться на 100. По сути, этот оператор соответствует только маршрутам, полученным из AS 100. Другие маршруты, которые могут включать AS 100 по пути, не будут соответствовать этому списку.
Вторая команда использует символ «.» — это подстановочный знак, а «*» означает повторение подстановочного символа. Вместе «. *» соответствуют любому значению атрибута AS_PATH, который фактически разрешает любое обновление, которое не было отклонено предыдущим оператором списка доступа.
Применим настроенный access-list с помощью команды neighbor с параметром filter-list. Ключевое слово out указывает, что список применяется к информации маршрутизации, отправляемой этому соседу:
Примечание: Используйте команду clear ip bgp * (clear ip bgp * out, или clear ip bgp * soft), чтобы сбросить информацию о маршрутизации. Подождите несколько секунд, а затем проверьте таблицу маршрутизации для ISP. Маршрут к 10.1.1.0 должен быть в таблице маршрутизации.
Проверим таблицу маршрутизации Company2. В ней должен отсутствовать маршрут к 10.1.1.0:
Вернёмся к маршрутизатору ISP, чтобы убедиться, что фильтр работает должным образом. Выполним команду show ip bgp regexp ^ 100 $:
Вывод команды показывает все совпадения для регулярных выражений, которые использовались в списке доступа. Путь к 10.1.1.0 соответствует списку доступа и фильтруется от обновлений Company2.
Запустим следующий сценарий Tcl на всех маршрутизаторах, чтобы проверить возможность подключения. Все эхо-запросы от ISP должны быть успешными. Copmany1 не может выполнить эхо-запрос сети Loopback 10.3.3.1 Company2 или канала WAN 172.24.1.16/30. Company2 не может выполнить эхо-запрос сети Loopback 10.1.1.1 Company1 или канала WAN 192.168.1.4/30:
Выводы
Теперь Вы умеете настраивать фильтрацию маршрутов BGP на основании атрибута AS_PATH. Спасибо за время, уделенное прочтению статьи!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.