Настройка BGP на Cisco: пошаговое руководство по eBGP, iBGP, атрибутам и фильтрации | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Настройка BGP на Cisco: пошаговое руководство по eBGP, iBGP, атрибутам и фильтрации

07 июня 2026 11 мин. чтения

Border Gateway Protocol (BGP) - это стандартный протокол динамической маршрутизации между автономными системами (AS). В корпоративной практике его используют для двух ключевых задач: подключения к интернет-провайдерам через eBGP и организации внутренней маршрутизации в крупных сетях через iBGP. Это руководство содержит проверенные пошаговые конфигурации для Cisco IOS версий 15.x и выше, которые помогут быстро развернуть рабочее решение, обеспечить отказоустойчивость multi-homed подключений и грамотно управлять трафиком.

Что такое BGP и когда он нужен в корпоративной сети

BGP работает с маршрутами на уровне автономных систем. Автономная система (AS) - это совокупность сетей под единым техническим управлением, имеющая уникальный номер (ASN). Протокол принимает решения о выборе пути на основе атрибутов, а не метрик, что позволяет реализовать сложные политики маршрутизации.

Основные сценарии применения BGP в корпоративной среде:

  • Multi-homed подключение к двум и более интернет-провайдерам для отказоустойчивости и балансировки нагрузки.
  • Построение внутренней маршрутизации в крупных сетях с несколькими граничными и внутренними маршрутизаторами.
  • Организация пиринга в точках обмена трафиком (IX) для прямого обмена маршрутами с другими сетями.

Инструкции в этой статье проверены на актуальных версиях Cisco IOS и предназначены для практического применения.

eBGP для подключения к провайдерам vs iBGP для внутренней сети

Понимание различий между eBGP и iBGP - основа корректной настройки.

  • eBGP (External BGP) работает между разными AS. Сессии устанавливаются напрямую между вашим маршрутизатором и маршрутизатором провайдера. По умолчанию TTL=1, что требует прямого соединения. Используется для обмена маршрутами с внешним миром.
  • iBGP (Internal BGP) работает внутри одной AS. Сессии устанавливаются между маршрутизаторами внутри вашей сети, например, между двумя граничными роутерами, подключенными к разным провайдерам. Правило синхронизации и требование полной mesh-топологии (или использования Route Reflector) - ключевые особенности iBGP.

Архитектурно подключение к одному провайдеру называется single-homed, к двум и более - multi-homed. Последнее требует настройки как eBGP с провайдерами, так и iBGP между внутренними маршрутизаторами для корректного распространения внешних маршрутов.

Базовая настройка eBGP-пиринга с интернет-провайдером

Этот раздел - прямой ответ на запрос готового решения. Приведенные команды можно скопировать, подставить свои данные и применить.

Шаг 1: Подготовка данных и конфигурация базового соседства

Перед началом соберите данные:

  • Ваш номер AS (публичный или приватный, например, 65001).
  • IP-адрес пиринга на вашей стороне (например, 203.0.113.1/30).
  • IP-адрес пиринга на стороне провайдера (например, 203.0.113.2).
  • Номер AS провайдера (например, 64496).
  • Ваш публичный IP-префикс для анонса (например, 192.0.2.0/24).

Конфигурация на маршрутизаторе Cisco:

! Настройка интерфейса для пиринга
interface GigabitEthernet0/0
 ip address 203.0.113.1 255.255.255.252
 no shutdown

! Запуск процесса BGP с указанием нашего AS
router bgp 65001
 bgp router-id 192.0.2.1
 ! Объявление своей сети для анонса провайдеру
 network 192.0.2.0 mask 255.255.255.0
 ! Настройка соседа - провайдера
 neighbor 203.0.113.2 remote-as 64496
 neighbor 203.0.113.2 description Uplink to ISP-1
 ! Опционально: установка пароля для аутентификации сессии MD5
 neighbor 203.0.113.2 password secure_password_123

Команда network указывает, какой префикс мы хотим анонсировать в BGP. Маршрут для этого префикса должен присутствовать в таблице маршрутизации (через статику или IGP).

Шаг 2: Проверка установления сессии BGP (BGP State)

После настройки проверьте состояние сессии командой show ip bgp summary.

Router# show ip bgp summary
BGP router identifier 192.0.2.1, local AS number 65001
Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
203.0.113.2     4        64496      15      14        1    0    0 00:05:12        1

Ключевые поля:

  • State/PfxRcd: Должно отображать число (количество полученных префиксов), а не состояние типа Idle, Active, Connect. Число означает, что сессия в состоянии Established.
  • Up/Down: Время работы установленной сессии.

Если состояние не Established, типовые причины:

  1. Active/Idle: Неверно указан AS номер соседа, IP-адрес недоступен (проверьте ping), на пути блокируется TCP-порт 179.
  2. Connect: Проблемы с установлением TCP-сессии. Проверьте списки контроля доступа (ACL) и наличие маршрута до адреса соседа.
  3. OpenSent/OpenConfirm: Расхождения в параметрах BGP (например, разные значения AS).

Для подключения к двум провайдерам (multi-homed) просто добавьте второй блок конфигурации neighbor с данными второго провайдера в том же процессе router bgp 65001.

Управление выбором маршрута: атрибуты BGP в действии

После установки сессий BGP начинает получать от провайдеров несколько путей до одних и тех же сетей. Алгоритм выбора лучшего пути BGP рассматривает атрибуты в строгом порядке. На практике чаще всего управляют тремя: LOCAL_PREF, AS_PATH и MED.

Local Preference: управляем исходящим трафиком

Атрибут LOCAL_PREF имеет локальное значение в пределах AS и влияет на выбор исходящего трафика. Более высокое значение предпочтительнее. По умолчанию Cisco присваивает полученным от eBGP-соседей маршрутам LOCAL_PREF=100, маршрутам от iBGP-соседей - LOCAL_PREF=100 (если не изменен).

Сценарий: У нас два провайдера, ISP-1 - основной, ISP-2 - резервный. Весь исходящий трафик должен идти через ISP-1.

Решение: Повысить LOCAL_PREF для маршрутов, полученных от ISP-1.

router bgp 65001
 ! Создаем route-map для установки высокого local-preference
 route-map SET_LP_FROM_ISP1 permit 10
   set local-preference 200

 ! Применяем этот route-map к входящим маршрутам от ISP-1
 neighbor 203.0.113.2 route-map SET_LP_FROM_ISP1 in

 ! Для ISP-2 можно явно установить низкий local-preference (или оставить 100)
 route-map SET_LP_FROM_ISP2 permit 10
   set local-preference 50
 neighbor 198.51.100.2 route-map SET_LP_FROM_ISP2 in

После применения конфигурации маршрутизатор будет выбирать для исходящего трафика пути через ISP-1, так как у них LOCAL_PREF=200 против 50 или 100.

AS Path Prepending и MED: влияем на входящий трафик

Управлять входящим трафиком сложнее, так как решение принимают провайдеры. Однако можно влиять на их выбор, манипулируя атрибутами в анонсируемых им маршрутах.

AS Path Prepending - метод удлинения AS_PATH путем добавления в него лишних номеров своей AS. Более длинный AS_PATH считается менее предпочтительным. Если мы хотим, чтобы входящий трафик по умолчанию шел через ISP-1, то для ISP-2 мы можем анонсировать свой префикс с prepending.

router bgp 65001
 ! Создаем route-map для prepending
 route-map PREPEND_FOR_ISP2 permit 10
   set as-path prepend 65001 65001 65001

 ! Применяем route-map к исходящим анонсам для ISP-2
 neighbor 198.51.100.2 route-map PREPEND_FOR_ISP2 out

Теперь провайдер ISP-2 получит маршрут до 192.0.2.0/24 с AS_PATH = [64497, 65001, 65001, 65001], что выглядит длиннее, чем путь через ISP-1 (AS_PATH = [64496, 65001]).

MED (Multi-Exit Discriminator) - необязательный атрибут, который используется для указания предпочтительного пути в нашу AS, когда у провайдера несколько точек входа. Меньшее значение MED предпочтительнее. Важно: провайдеры могут игнорировать MED.

! Анонсируем свой префикс ISP-1 с MED=10, а ISP-2 с MED=50
route-map SET_MED_FOR_ISP1 permit 10
  set metric 10
route-map SET_MED_FOR_ISP2 permit 10
  set metric 50

router bgp 65001
 neighbor 203.0.113.2 route-map SET_MED_FOR_ISP1 out
 neighbor 198.51.100.2 route-map SET_MED_FOR_ISP2 out

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

Фильтрация маршрутов: prefix-list и route-map для безопасности

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

Создание и применение prefix-list

Prefix-list - это простой и эффективный инструмент для фильтрации на основе IP-префиксов и их длины.

Задача: Принимать от провайдера только его агрегированные маршруты и default route, но не тысячи конкретных /24.

! Создаем prefix-list, разрешающий только default route и крупные сети провайдера
ip prefix-list FROM-ISP1 seq 5 permit 0.0.0.0/0
ip prefix-list FROM-ISP1 seq 10 permit 203.0.113.0/24 le 32
ip prefix-list FROM-ISP1 seq 15 deny 0.0.0.0/0 le 32

! Применяем prefix-list к входящим маршрутам от соседа
router bgp 65001
 neighbor 203.0.113.2 prefix-list FROM-ISP1 in

Задача: Анонсировать провайдеру только свои публичные префиксы, но не внутренние служебные сети.

ip prefix-list TO-ISP1 seq 5 permit 192.0.2.0/24
ip prefix-list TO-ISP1 seq 10 permit 198.51.100.0/24
ip prefix-list TO-ISP1 seq 15 deny 0.0.0.0/0 le 32

router bgp 65001
 neighbor 203.0.113.2 prefix-list TO-ISP1 out

Мощь route-map: фильтрация + управление атрибутами

Route-map - более гибкий инструмент, который объединяет фильтрацию (match) и модификацию атрибутов (set).

Сценарий: Принять от провайдера только определенные префиксы и сразу назначить им низкий LOCAL_PREF, сделав их резервными.

! Сначала создаем ACL или prefix-list для match
ip prefix-list BACKUP-PREFIXES seq 5 permit 198.51.100.0/24

! Создаем route-map
route-map FILTER_AND_SET_LP permit 10
  match ip address prefix-list BACKUP-PREFIXES
  set local-preference 50
route-map FILTER_AND_SET_LP deny 20
  ! Все остальные префиксы не принимаются

! Применяем route-map входящим
router bgp 65001
 neighbor 203.0.113.2 route-map FILTER_AND_SET_LP in

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

Настройка iBGP для внутренней маршрутизации в крупной сети

В multi-homed архитектуре внешние маршруты, полученные через eBGP на одном граничном маршрутизаторе, должны быть переданы на другой граничный маршрутизатор внутри вашей AS. Для этого используется iBGP.

Архитектура iBGP Full-Mesh и ее ограничения

Правило iBGP гласит: маршрут, полученный от iBGP-соседа, не переанонсируется другому iBGP-соседу. Чтобы все iBGP-спикеры получили все маршруты, между ними должны быть установлены сессии по принципу «каждый с каждым» (full mesh).

Количество необходимых сессий рассчитывается по формуле N*(N-1)/2, где N - число маршрутизаторов, работающих в iBGP. Для 3 маршрутизаторов нужно 3 сессии, для 10 - уже 45. Это плохо масштабируется.

Пример конфигурации iBGP full-mesh между тремя маршрутизаторами с AS 65001, использующими loopback-адреса для устойчивости сессий:

! На всех трех маршрутизаторах (R1, R2, R3)
router bgp 65001
 bgp router-id <LOOPBACK_IP>
 ! Настройка iBGP соседства с двумя другими роутерами
 neighbor 10.0.0.1 remote-as 65001
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.2 remote-as 65001
 neighbor 10.0.0.2 update-source Loopback0
 neighbor 10.0.0.3 remote-as 65001
 neighbor 10.0.0.3 update-source Loopback0

Ключевые моменты: remote-as одинаковый (наш AS), update-source Loopback0 гарантирует, что сессии будут устанавливаться с устойчивых loopback-адресов, а не с адресов физических интерфейсов. Для достижимости loopback-адресов между роутерами должен работать IGP (OSPF, EIGRP).

Масштабируемое решение: Route Reflector (RR)

Route Reflector - это специальная роль маршрутизатора в iBGP, которой разрешено нарушить правило non-transit и отражать (перенаправлять) маршруты между своими клиентами. Это избавляет от необходимости full mesh.

Принцип работы: Все клиенты RR настраивают iBGP-сессию только с ним. RR, получив маршрут от клиента, отражает его всем остальным клиентам и другим не-клиентским iBGP-соседям.

Конфигурация на маршрутизаторе, выполняющем роль Route Reflector (адрес RR - 10.0.0.100):

router bgp 65001
 bgp router-id 10.0.0.100
 ! Настройка соседей-клиентов
 neighbor 10.0.0.1 remote-as 65001
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.1 route-reflector-client

 neighbor 10.0.0.2 remote-as 65001
 neighbor 10.0.0.2 update-source Loopback0
 neighbor 10.0.0.2 route-reflector-client

Конфигурация на клиенте Route Reflector (например, на граничном маршрутизаторе R1):

router bgp 65001
 bgp router-id 10.0.0.1
 ! Настраиваем сессию только с RR
 neighbor 10.0.0.100 remote-as 65001
 neighbor 10.0.0.100 update-source Loopback0
 ! eBGP сессии с провайдерами настраиваются как обычно

Для отказоустойчивости рекомендуется развертывать как минимум два Route Reflector. Для интеграции BGP с внутренними сервисами, такими как системы хранения, может быть полезен наш гайд по настройке BGP для сетей хранения.

Типовые сценарии и готовые конфигурации

Ниже приведены сводные примеры конфигураций для распространенных архитектур. Используйте их как основу, подставив свои IP-адреса и номера AS.

Сценарий 1: Single-homed подключение (1 провайдер)

! Топология: Ваша сеть AS65001, провайдер AS64496.
! Пиринг на 203.0.113.0/30. Ваш префикс 192.0.2.0/24.

interface GigabitEthernet0/0
 ip address 203.0.113.1 255.255.255.252

ip route 192.0.2.0 255.255.255.0 Null0

router bgp 65001
 bgp router-id 192.0.2.1
 network 192.0.2.0 mask 255.255.255.0
 neighbor 203.0.113.2 remote-as 64496
 neighbor 203.0.113.2 description ISP-Single-Homed

Сценарий 2: Multi-homed с балансировкой исходящего трафика

! AS65001, два провайдера: ISP1(AS64496), ISP2(AS64497).
! ISP1 - основной для исходящего трафика.

interface Gig0/0
 ip address 203.0.113.1 255.255.255.252
interface Gig0/1
 ip address 198.51.100.1 255.255.255.252

ip route 192.0.2.0 255.255.255.0 Null0

router bgp 65001
 bgp router-id 192.0.2.1
 network 192.0.2.0 mask 255.255.255.0

 ! Настройка соседей
 neighbor 203.0.113.2 remote-as 64496
 neighbor 198.51.100.2 remote-as 64497

 ! Политика: высокий local-pref для маршрутов от ISP1
 route-map LP_ISP1 permit 10
   set local-preference 200
 route-map LP_ISP2 permit 10
   set local-preference 100

 neighbor 203.0.113.2 route-map LP_ISP1 in
 neighbor 198.51.100.2 route-map LP_ISP2 in

 ! Prepending для ISP2, чтобы входящий трафик шел через ISP1
 route-map PREPEND_ISP2 out
   set as-path prepend 65001 65001
 neighbor 198.51.100.2 route-map PREPEND_ISP2 out

Сценарий 3: Крупная сеть с двумя border-роутерами и Route Reflector

! AS65001. Border1 и Border2 подключены к провайдерам.
! Внутренний маршрутизатор Core1 выступает как Route Reflector.
! Все используют OSPF для достижимости loopback-адресов (10.0.0.0/24).

! ===== Конфигурация на Route Reflector (Core1, 10.0.0.100) =====
router bgp 65001
 bgp router-id 10.0.0.100
 neighbor 10.0.0.1 remote-as 65001  ! Border1
 neighbor 10.0.0.1 update-source Loopback0
 neighbor 10.0.0.1 route-reflector-client
 neighbor 10.0.0.2 remote-as 65001  ! Border2
 neighbor 10.0.0.2 update-source Loopback0
 neighbor 10.0.0.2 route-reflector-client

! ===== Конфигурация на Border1 (10.0.0.1) =====
router bgp 65001
 bgp router-id 10.0.0.1
 ! iBGP с RR
 neighbor 10.0.0.100 remote-as 65001
 neighbor 10.0.0.100 update-source Loopback0
 ! eBGP с провайдером
 neighbor 203.0.113.2 remote-as 64496
 ! Анонс сетей
 network 192.0.2.0 mask 255.255.255.0

Эти конфигурации покрывают большинство типовых задач. Для более глубокого понимания основ маршрутизации рекомендуем ознакомиться с общим руководством по маршрутизации данных, а для тонкой настройки внутреннего IGP - с гайдом по настройке OSPF.

Помните, что тестирование конфигураций в лабораторной среде перед применением в production - обязательный шаг. Для автоматизации и экспериментов с сетевыми API может быть полезен сервис AiTunnel, агрегатор API для нейросетей, который позволяет, среди прочего, генерировать и проверять конфигурации с помощью ИИ.

Поделиться:
Сохранить гайд? В закладки браузера