Поиск...

среда, 19 октября 2011 г.

Настройка BGP на cisco

Доброго времени суток!!!

Как то увлекся я оборудованием безопасности (ASA, IPS/IDS) и совсем забыл, что не закончил обзор настроек протоколов маршрутизации на оборудовании cisco :). Остановились мы в прошлый раз на протоколе OSPF (часть 1 и часть 2). Сегодня, я решил исправить это и предлагаю рассмотреть протокол динамической маршрутизации – BGP (Border Gateway Protocol). Хоть он и используется, в основном, в интернете, но обойтись без него в корпоративных сетях (в большей степени на границе) иногда не получается. Конечно, рассматривать его мы будем не со всех сторон, но основные настройки обязательно посмотрим.
Итак, кто заинтересовался, добро пожаловать под кат…


Не хочу вас загружать теорией. Её с легкостью можно найти на просторах интернета :). Если по ходу повествования нужны будут пояснения, то, конечно, я их сделаю.
Предлагаю сегодня рассмотреть основные принципы работы BGP. Затронуть, так же, основные настройки для организации связи, рассмотреть различные способы добавления сетей в BGP и что-нибудь еще :).
Основывается BGP на так называемых автономных системах (AS – Autonomous System). Условно говоря, каждая группа сетевых устройств, принадлежащая к той или иной организации, помещается в свою уникальную автономную систему, внутри которой используется Interior BGP (внутренний BGP, IBGP) для обмена маршрутной информацией между роутерами. Для обмена маршрутной информацией между автономными системами используется External BGP (внешний BGP, EBGP).
Для лучшего понимания процесса соберем следующую схему:


Небольшая легенда. Существует корпоративная сеть, в которой есть 4-ре роутера. Для сетевой доступности между ними настроен протокол OSPF. Они относятся к автономной системе BGP AS 1100. Существует сеть провайдера ISP. В ней находится роутер R5 и относится она к автономной системе BGP AS 2200. Необходимо настроить связь по протоколу BGP между корпоративной сетью и провайдером. Причем, внутри корпоративной сети необходимо настроить соседство BGP между R1 и R4, которые не имеют непосредственной связи друг с другом (запускать BGP на R2 и R3 тоже будем, но позже).
Успешным завершением конфигурации будем считать наличие маршрутов на роутере R1 к loopback интерфейсам роутера R5, полученным по протоколу BGP и успешное выполнение команды ping на эти адреса.
Я буду показывать конфигурацию частями с пояснениями, но в конце покажу полную конфигурацию роутеров для ориентировки.
Начнем с роутера R5. Заходим на него:
  • R5>en
    R5#conf t
    R5(config)#hostname R5
    R5(config)#interface loopback 1
    R5(config-if)#ip address 100.1.1.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface loopback 2
    R5(config-if)#ip address 100.1.2.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface loopback 3
    R5(config-if)#ip address 100.1.3.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface loopback 4
    R5(config-if)#ip address 100.1.4.1 255.255.255.0
    R5(config-if)#exit/br> R5(config-if)#interface loopback 5
    R5(config-if)#ip address 100.1.5.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface loopback 6
    R5(config-if)#ip address 100.1.6.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface loopback 7
    R5(config-if)#ip address 50.50.50.1 255.255.255.0
    R5(config-if)#exit
    R5(config)#interface serial 0/2
    R5(config-if)#ip address 10.1.14.2 255.255.255.252
    R5(config-if)#no shutdown
    R5(config-if)#exit
    R5(config)#router bgp 2200 – включаем процесс BGP на роутере для автономной системы AS 2200. Роутер может работать только в одной AS
    R5(config-router)#neighbor 10.1.14.1 remote-as 1100 – прописываем «соседа» вручную. Указываем IP – адрес и автономную систему, в которой находится «сосед»
    R5(config-router)#exit
    R5(config)#exit
    R5#wr
Остановимся ненадолго и посмотрим, что у нас получилось на данный момент:


Видно, что процесс BGP запущен и «сосед» присутствует, но пока не отвечает, так как не настроен. В отличие от других протоколов динамической маршрутизации, «соседство» в BGP необходимо настраивать вручную. Так что, если вы будете его настраивать с поставщиком услуг (ISP), то необходимо взаимодействие с обеих сторон.
Продолжим и теперь зайдем на роутер R4:
  • R4>en
    R4#conf t
    R4(config)#hostname R4
    R4(config)#int loopback 4
    R4(config-if)#ip address 4.4.4.4 255.255.255.255
    R4(config-if)#exit
    R4(config)#int serial 0/0
    R4(config-if)#ip address 10.1.12.2 255.255.255.252
    R4(config-if)#no shutdown
    R4(config-if)#exit
    R4(config)#int serial 0/1
    R4(config-if)#ip address 10.1.13.2 255.255.255.252
    R4(config-if)#no shutdown
    R4(config-if)#exit
    R4(config)#int serial 0/2
    R4(config-if)#ip address 10.1.14.1 255.255.255.252
    R4(config-if)#no shutdown
    R4(config-if)#exit
    R4(config)#router bgp 1100
    R4(config-router)#neighbor 10.1.14.2 remote-as 2200
    R4#wr
    R4#
    *Mar 1 00:11:21.411: %BGP-5-ADJCHANGE: neighbor 10.1.14.2 Up – «соседство» установилось R4#
Остановимся снова и посмотрим, что у нас получилось на роутере R4:


Видно, что «соседство» EBGP между AS 1100 и AS 2200 установилось. Но таблица маршрутизации BGP пуста. Это мы настроим немного позднее.
Сейчас я предлагаю настроить связь между роутерами корпоративной сети и установить «соседство» IBGP между роутером R1 и R4. Возвращаемся на роутер R4 и продолжаем настройку:
  • R4(config)#router bgp 1100
    R4(config-router)#neighbor 1.1.1.1 remote-as 1100 – добавляем второе «соседство». В этот раз прописываем ту же автономную систему, в которой находится R4 и IP - адрес loopback интерфейса R1. Тем самым настраивается соединение IBGP
Поясню, зачем в этот раз мы взяли loopback интерфейс роутера R1. Дело в том, что если взглянуть на схему, то видно, что у нас есть избыточность в соединениях. Другими словами, можно организовать взаимодействие между роутерами R1 и R4 через несколько интерфейсов по отказоустойчивой схеме. Следовательно, какой интерфейс выбрать? Выберем один интерфейс, а он, допустим, выйдет из строя и тогда IBGP «соседство» остановится, выберем другой – может произойти то же самое. Два интерфейса нельзя выбрать. Тут и приходит на помощь использование loopback интерфейса.
  • R4(config-router)#neighbor 1.1.1.1 update-source loopback 4 – указываем какой интерфейс (IP – адрес) будет выступать в качестве источника обновлений таблицы маршрутизации для R1
Сделаю немного пояснений. Если этого не сделать (смотри команду), то при отправке обновлений маршрутной информации роутеру R1, роутер R4 подставит в качестве source address один из своих физических интерфейсов (10.1.13.2 или 10.1.12.2). Но роутер R1 будет «дружить» с R4 по адресу loopback интерфейса 4.4.4.4 (далее мы это настроим) и, следовательно, он их просто не примет из-за того, что он не знает «соседа» с такими адресами.
  • R4(config-router)#exit
    R4(config)#router ospf 1 – включаем OSPF для внутренней связи между роутерами
    R4(config-router)#network 4.4.4.4 0.0.0.0 area 0
    R4(config-router)#network 10.1.12.2 0.0.0.3 area 0
    R4(config-router)#network 10.1.13.2 0.0.0.3 area 0
    R4#wr
    Building configuration...
    R4#
Переходим на роутер R2:
  • R2>en
    R2#conf t
    R2(config)#hostname R2
    R2(config)#int loopback 2
    R2(config-if)#ip address 2.2.2.2 255.255.255.255
    R2(config-if)#exit
    R2(config)#int serial 0/0
    R2(config-if)#ip address 10.1.12.1 255.255.255.252
    R2(config-if)#no shutdown
    R2(config-if)#exit
    R2(config)#int serial 0/1
    R2(config-if)#ip address 10.1.11.2 255.255.255.252
    R2(config-if)#no shutdown
    R2(config-if)#exit
    R2(config)#router ospf 1
    R2(config-router)#network 10.1.11.2 0.0.0.3 area 0
    R2(config-router)#network 10.1.12.1 0.0.0.3 area 0
    R2(config-router)#network 2.2.2.2 0.0.0.0 area 0
    *Mar 1 00:02:47.187: %OSPF-5-ADJCHG: Process 1, Nbr 4.4.4.4 on Serial0/0 from LOADING to FULL, Loading Done
    R2(config-router)#exit
    R2(config)#exit
    R2#wr
    R2#
Теперь на роутер R3:
  • R3>en
    R3#conf t
    R3(config)#hostname R3
    R3(config)#int loopback 3
    R3(config-if)#ip address 3.3.3.3 255.255.255.255
    R3(config-if)#exit
    R3(config)#interface serial 0/0
    R3(config-if)#ip address 10.1.10.2 255.255.255.252
    R3(config-if)#no shutdown
    R3(config-if)#exit
    R3(config)#interface serial 0/1
    R3(config-if)#ip address 10.1.13.1 255.255.255.252
    R3(config-if)#no shutdown
    R3(config-if)#exit
    R3(config)#router ospf 1
    R3(config-router)#network 10.1.10.2 0.0.0.3 area 0
    R3(config-router)#network 10.1.13.1 0.0.0.3 area 0
    R3(config-router)#network 3.3.3.3 0.0.0.0 area 0
    *Mar 1 00:03:32.783: %OSPF-5-ADJCHG: Process 1, Nbr 4.4.4.4 on Serial0/1 from LOADING to FULL, Loading Done
    R3(config-router)#^Z
    R3#wr
    R3#
Вот мы и добрались до роутера R1:
  • R1>en
    R1#conf t
    R1(config)#hostname R1
    R1(config)#interface loopback 1
    R1(config-if)#ip address 1.1.1.1 255.255.255.255
    R1(config-if)#exit
    R1(config)#interface serial 0/0
    R1(config-if)#ip address 10.1.10.1 255.255.255.252
    R1(config-if)#no shutdown
    R1(config-if)#exit
    R1(config)#interface serial 0/1
    R1(config-if)#ip address 10.1.11.1 255.255.255.252
    R1(config-if)#no shutdown
    R1(config-if)#exit
    R1(config)#router ospf 1
    R1(config-router)#network 10.1.10.1 0.0.0.3 area 0
    R1(config-router)#network 10.1.11.1 0.0.0.3 area 0
    R1(config-router)#network 1.1.1.1 0.0.0.0 area 0
    *Mar 1 00:03:03.503: %OSPF-5-ADJCHG: Process 1, Nbr 3.3.3.3 on Serial0/0 from LOADING to FULL, Loading Done
    *Mar 1 00:03:19.079: %OSPF-5-ADJCHG: Process 1, Nbr 10.1.12.1 on Serial0/1 from LOADING to FULL, Loading Done
    R1(config-router)#exit
    R1(config)#router bgp 1100
    R1(config-router)#neighbor 4.4.4.4 remote-as 1100
    R1(config-router)#neighbor 4.4.4.4 update-source loopback 1
    *Mar 1 00:04:52.143: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up
    R1(config-router)#exit
    R1(config)#exit
    R1#wr
    R1#
Остановимся в очередной раз и посмотрим, что у нас происходит на роутере R1:


На роутере R4:


    где
  • 1 – роутер R1;
  • 2 – роутер R5.
Все работает. «Соседство» IBGP с R1 и EBGP с R5 установлено, OSPF в корпоративной сети работает. Теперь можно перейти к роутеру R5 и добавить сети, для объявления их в BGP.
Добавлять сети в процесс BGP можно несколькими способами. Первый, это использовать команду network как и в других протоколах. Второй, это применение редистрибуции, потренируемся как раз еще и с route-map :). Следует также учитывать, что при редистрибуции в IOS до версии 12.2(8)T по умолчанию включена автосуммаризация (auto-summary), так что будьте внимательны. Рассмотрим сразу два варианта, для этого у нас имеется 7 loopback интерфейсов на R5.Итак, заходим на него:
  • R5(config)#router bgp 2200
    R5(config-router)#network 50.50.50.0 mask 255.255.255.0 – добавляем сеть, в которой находится loopback интерфейс
Немного пояснений. В BGP можно добавлять несколькими способами. Первый, это использовать сети класса А, как в RIP (в нашем случае это была бы команда R5(config-router)#network 50.0.0.0) Тогда будут добавлены все интерфейсы (сети), подпадающие под этот диапазон, что не совсем грамотно. Второй вариант, это указать конкретную сеть с маской (как в примере выше). Но стоит учитывать, что нужно указывать именно конкретный адрес сети с конкретной маской, присутствующий на роутере. Другими словами, мы не смогли бы добавить нашу сеть 50.50.50.0/24 командой R5(config-router)#network 50.50.0.0 mask 255.255.0.0 (можете попробовать :)).
Продолжим:
  • R5(config-router)#exit
    R5(config)#ip access-list extended FOR_BGP – создаем список доступа для route-map. Разрешим для примера только 4 сети (первые 4 loopback интерфейса)
    R5(config-ext-nacl)#permit ip 100.1.1.0 0.0.0.255 any
    R5(config-ext-nacl)#permit ip 100.1.2.0 0.0.0.255 any
    R5(config-ext-nacl)#permit ip 100.1.3.0 0.0.0.255 any
    R5(config-ext-nacl)#permit ip 100.1.4.0 0.0.0.255 any
    R5(config-ext-nacl)#deny ip any any
    R5(config-ext-nacl)#exit
    R5(config)#route-map FILTER_NETWORK – создаем route-map
    R5(config-route-map)#match ip address FOR_BGP – привязываем созданный ранее список доступа
    R5(config-route-map)#exit
    R5(config)#router bgp 2200
    R5(config-router)#redistribute connected route-map FILTER_NETWORK – включаем редистрибуцию directly connected интерфейсов, причем попадать в BGP будут только те, которые разрешены в route-map
    R5(config-router)#exit
    R5(config)#exit
    R5#wr
Ну что же, теперь посмотрим, что у нас получилось.
Роутер R5:


Роутер R4:


Все нормально, маршруты присутствуют как в таблице маршрутизации BGP, так и в общей таблице. Теперь, что мы видим на R1:


А видно, что что-то не так. Маршруты присутствуют в таблице маршрутизации BGP, но нет маркера «>», который обозначает лучший путь (то есть, маршрутов фактически нет). И вообще нет этих маршрутов в общей таблице маршрутизации.
Все это связано с еще одной особенностью протокола BGP, а именно с BGP синхронизацией. Она обозначает приблизительно следующее:
- не использовать и не объявлять маршруты, полученные через IBGP, пока эти же маршруты не будут получены через внутренний протокол маршрутизации (в нашем случае OSPF).
Применительно к нашей схеме получается такая ситуация, что, допустим, какой-то хост, находящийся за роутером R1, хочет попасть в сеть 100.1.1.0/24. Роутер R1 отошлет этот запрос дальше на роутер R2 или R3. Но ни один из этих роутеров не знает об этой сети и, следовательно, этот запрос будет сброшен.
Следует так же отметить, что BGP синхронизация ВКЛЮЧЕНА по умолчанию на версиях IOS до 12.2(8)T и ВЫКЛЮЧЕНА по умолчанию в версиях, начиная с 12.2(8)T. Выключение синхронизации в более новых версиях IOS связано с тем, что предполагается работа BGP на всех устройствах корпоративной сети. Другими словами, нам следовало бы запустить BGP и на роутерах R2 и R3. Но я специально не делал этого, чтобы показать вам эту особенность.
Но это не единственная особенность, которая мешает попаданию маршрутов в таблицу маршрутизации. Если вы посмотрите на картинку выше, вы заметите, что «Next hop» IP адрес у нас стоит роутера R5, о котором R1 тоже ничего не знает. И это следующий момент в BGP.
Правило гласит приблизительно следующее:
- для EBGP «соседей» менять «Next Hop» IP адрес на свой при объявлении маршрутов далее (касаемо нашей схемы это означает, что если роутер R1 объявляет маршруты роутеру R4, а тот в свою очередь роутеру R5, то R4 поменяет «Next Hop» адрес роутера R1 на свой).
- для IBGP «соседей» НЕ менять «Next Hop» IP адрес на свой при объявлении маршрутов далее (касаемо нашей схемы это означает, что при объявлении маршрутов роутером R5 роутеру R4, и далее роутеру R1, роутер R4 не поменяет «Next Hop» IP адрес на свой, что мы и видим на роутере R1).
Сделано это на тот случай, когда роутеры подключены в один сегмент (например Frame Ralay), но соседство установлено не «каждый с каждым». Тогда, чтобы исключить лишние скачки (Hops), и применяется это правило.
Решением проблемы в нашем случае может стать добавление IP адреса (сети) роутера R5 (10.1.14.2/30) в OSPF, но добавление внешних IP адресов во внутренний протокол маршрутизации это не грамотное решение и оно не применяется.
Итак, для решения нашей проблемы нам необходимо выключить BGP синхронизацию и заставить роутер R4 подставлять свой «Next Hop» IP адрес.
Заходим на R4:
  • R4(config)#router bgp 1100
    R4(config-router)#no synchronization – выключаем BGP синхронизацию
    R4(config-router)#neighbor 1.1.1.1 next-hop-self – задаем правило выставления себя в качестве «Next Hop» для роутера R1
    R4(config-router)#exit
    R4(config)#exit
    R4#wr
    R4#
Теперь отключим синхронизацию на роутере R1:
  • R1#conf t
    R1(config)#router bgp 1100
    R1(config-router)#no synchronization
    R1(config-router)#exit
    R1(config)#exit
    R1#wr
    R1#
Теперь проверим, что у нас получилось, и попробуем сделать ping на один из loopback интерфейсов роутера R5 с роутера R1:


Что мы имеем :). Видно, что маршруты у нас появились в общей таблице маршрутизации и приняты в таблице маршрутизации BGP. Но команда ping не проходит. Связано это с тем, что, несмотря на выключение BGP синхронизации и настройки замены «Next Hop» IP адреса, роутеры R2 и R3 все еще не знают о сетях 100.1.1.0/24, 10.1.2.0/24 и так далее.
По большому счету, для окончательной и грамотной настройки BGP нам необходимо включить и настроить этот процесс на всех роутерах Corporate network (надо создать full mesh топологию). Не делал я этого с начала поста, так как хотел показать особенности BGP.
Эту настройку я оставил напоследок, чтобы рассказать про еще одну возможность настройки BGP на роутерах, находящихся в одной автономной системе.
Это использование так называемых BGP peer groups. Они очень удобны, когда вам необходимо настроить IBGP соседство с несколькими роутерами с одинаковыми параметрами.
Итак, приступаем к заключительной части :). Начнем настройку с роутера R1:
  • R1#conf t
    R1(config)#router bgp 1100
    R1(config-router)#neighbor BGP_PEERS peer-group – создаем группу
    R1(config-router)#neighbor BGP_PEERS remote-as 1100 – задаем автономную систему (AS)
    R1(config-router)#neighbor BGP_PEERS update-source loopback 1 – делаем источником обновлений loopback интерфейс
    R1(config-router)#neighbor BGP_PEERS next-hop-self – задаем условие, чтобы роутер подставлял свой IP адрес в качестве «Next Hop»
    R1(config-router)#neighbor 2.2.2.2 peer-group BGP_PEERS – добавляем «соседей» и привязываем к ним конфигурацию группы
    R1(config-router)#neighbor 3.3.3.3 peer-group BGP_PEERS
    R1(config-router)#neighbor 4.4.4.4 peer-group BGP_PEERS
    *Mar 1 02:42:37.191: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Down Member added to peergroup
    R1(config-router)#network 1.1.1.1 mask 255.255.255.255 – чуть не забыл. Надо сделать так, чтобы роутер R5 знал, куда отсылать ответ на команду ping. Для этого добавляем IP адрес loopback интерфейса в процесс BGP
    R1(config-router)#exit
    *Mar 1 02:42:39.283: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up
    R1(config)#exit
    R1#wr
    R1#
Если осталась индивидуальная конфигурация для какого-нибудь соседа, подпадающая под настройки группы, то ее можно смело убрать. Теперь все эти же действия необходимо произвести на остальных роутерах (R2, R3 и R4). Надеюсь, вы сможете это сделать уже сами. Делайте то же самое, только подставляйте соответствующие IP адреса.
Приведу команды show на роутерах R2, R3, R4 после выполнения настроек:




Все в порядке. Пусть вас не пугает маршрут с маркером «r». Это обозначает лишь то, что роутер не может добавить этот маршрут в таблицу маршрутизации, так есть маршрут с меньшей административной дистанцией (AD), а именно, полученный через OSPF.
Из рисунков видно, что соседство установлено «каждый с каждым». Здесь следует отметить еще одну особенность BGP. Это правило «BGP Split horizon». Оно звучит приблизительно так:
- не объявлять маршруты, полученные через IBGP, другим соседям IBGP. Другими словами, если R2 получит маршруты от R4, то он уже не будет их рассылать дальше роутерам R1 и R3, так как они являются IBGP соседями.
Вот по этой причине мы и реализовали схему «каждый с каждым» (full mesh). В противном случае, если бы у R1 не было бы соседства с R4, то и маршрутов от R5 мы бы не увидели. Можете проверить, если хотите :).
И теперь команда ping с роутера R1:


Я использовал так называемый расширенный режим команды ping, так как необходимо, чтобы источником (source IP) был 1.1.1.1. Все прошло успешно!!!
Как и обещал, приведу конфигурации роутеров для ориентировки и сверки (приведу только то, что настроено для экономии места):

Роутер R1:

hostname R1
interface Loopback1
ip address 1.1.1.1 255.255.255.255
interface Serial0/0
ip address 10.1.10.1 255.255.255.252
clock rate 2000000
interface Serial0/1
ip address 10.1.11.1 255.255.255.252
clock rate 2000000
router ospf 1
log-adjacency-changes
network 1.1.1.1 0.0.0.0 area 0
network 10.1.10.0 0.0.0.3 area 0
network 10.1.11.0 0.0.0.3 area 0
router bgp 1100
no synchronization
bgp log-neighbor-changes
network 1.1.1.1 mask 255.255.255.255
neighbor BGP_PEERS peer-group
neighbor BGP_PEERS remote-as 1100
neighbor BGP_PEERS update-source Loopback1
neighbor BGP_PEERS next-hop-self
neighbor 2.2.2.2 peer-group BGP_PEERS
neighbor 3.3.3.3 peer-group BGP_PEERS
neighbor 4.4.4.4 peer-group BGP_PEERS
no auto-summary


Роутер R2:

hostname R2
interface Loopback2
ip address 2.2.2.2 255.255.255.255
interface Serial0/0
ip address 10.1.12.1 255.255.255.252
clock rate 2000000
interface Serial0/1
ip address 10.1.11.2 255.255.255.252
clock rate 2000000
router ospf 1
log-adjacency-changes
network 2.2.2.2 0.0.0.0 area 0
network 10.1.11.0 0.0.0.3 area 0
network 10.1.12.0 0.0.0.3 area 0
router bgp 1100
no synchronization
bgp log-neighbor-changes
neighbor BGP_PEERS peer-group
neighbor BGP_PEERS remote-as 1100
neighbor BGP_PEERS update-source Loopback2
neighbor 1.1.1.1 peer-group BGP_PEERS
neighbor 3.3.3.3 peer-group BGP_PEERS
neighbor 4.4.4.4 peer-group BGP_PEERS
no auto-summary


Роутер R3:

hostname R3
interface Loopback3
ip address 3.3.3.3 255.255.255.255
interface Serial0/0
ip address 10.1.10.2 255.255.255.252
clock rate 2000000
interface Serial0/1
ip address 10.1.13.1 255.255.255.252
clock rate 2000000
router ospf 1
log-adjacency-changes
network 3.3.3.3 0.0.0.0 area 0
network 10.1.10.0 0.0.0.3 area 0
network 10.1.13.0 0.0.0.3 area 0
router bgp 1100
no synchronization
bgp log-neighbor-changes
neighbor BGP_PEERS peer-group
neighbor BGP_PEERS remote-as 1100
neighbor BGP_PEERS update-source Loopback3
neighbor 1.1.1.1 peer-group BGP_PEERS
neighbor 2.2.2.2 peer-group BGP_PEERS
neighbor 4.4.4.4 peer-group BGP_PEERS
no auto-summary


Роутер R4:

hostname R4
interface Loopback4
ip address 4.4.4.4 255.255.255.255
interface Serial0/0
ip address 10.1.12.2 255.255.255.252
clock rate 2000000
interface Serial0/1
ip address 10.1.13.2 255.255.255.252
clock rate 2000000
interface Serial0/2
ip address 10.1.14.1 255.255.255.252
clock rate 2000000
router ospf 1
log-adjacency-changes
network 4.4.4.4 0.0.0.0 area 0
network 10.1.12.0 0.0.0.3 area 0
network 10.1.13.0 0.0.0.3 area 0
router bgp 1100
no synchronization
bgp log-neighbor-changes
neighbor BGP_PEERS peer-group
neighbor BGP_PEERS remote-as 1100
neighbor BGP_PEERS update-source Loopback4
neighbor BGP_PEERS next-hop-self
neighbor 1.1.1.1 peer-group BGP_PEERS
neighbor 2.2.2.2 peer-group BGP_PEERS
neighbor 3.3.3.3 peer-group BGP_PEERS
neighbor 10.1.14.2 remote-as 2200
no auto-summary


Роутер R5:

hostname R5
interface Loopback1
ip address 100.1.1.1 255.255.255.0
interface Loopback2
ip address 100.1.2.1 255.255.255.0
interface Loopback3
ip address 100.1.3.1 255.255.255.0
interface Loopback4
ip address 100.1.4.1 255.255.255.0
interface Loopback5
ip address 100.1.5.1 255.255.255.0
interface Loopback6
ip address 100.1.6.1 255.255.255.0
interface Loopback7
ip address 50.50.50.1 255.255.255.0
interface Serial0/2
ip address 10.1.14.2 255.255.255.252
clock rate 2000000
router bgp 2200
no synchronization
bgp router-id 10.1.14.2
bgp log-neighbor-changes
network 50.50.50.0 mask 255.255.255.0
redistribute connected route-map FILTER_NETWORK
neighbor 10.1.14.1 remote-as 1100
no auto-summary
ip access-list extended FOR_BGP
permit ip 100.1.1.0 0.0.0.255 any
permit ip 100.1.2.0 0.0.0.255 any
permit ip 100.1.3.0 0.0.0.255 any
permit ip 100.1.4.0 0.0.0.255 any
deny ip any any
route-map FILTER_NETWORK permit 10
match ip address FOR_BGP


Ну что же, на этом хочу закончить этот пост. Сегодня получилось много текста, но, надеюсь, пост не был для вас скучным и вы вынесли из него что то полезное для себя :). Возможно в следующих постах я расскажу о различных аспектах тюнинга BGP. Так что не уходите далеко и заходите почаще :).
Источником вдохновения послужили уроки из курса BCSI CBT Nuggets.

По всем возникающим вопросам обращайтесь ко мне через комментарии или лично. Координаты можно найти вот тут.


С нетерпением жду вас в следующих постах!!!

С уважением, Ant0ni0n

55 комментариев:

  1. Спасибо огромное за ваши статьи. Хотелось бы увидеть еще статьи по QOS или системам мониторинга!

    ОтветитьУдалить
  2. Спасибо за теплый отзыв :)
    Ок, в ближайших планах написать про систему мониторинга Cacti, ну и про QoS не забуду :)
    Так что не уходите далеко и заходите почаще :)

    С уважением, Ant0ni0n

    ОтветитьУдалить
  3. Спасибо за пост! довольно доступно все описано.
    bugtrackt@mail.ru. Есть что нибудь по сбору статистики о траффике, какой коллектор лучше и т.д. ))

    ОтветитьУдалить
  4. ОТличная статья! Быстрого тебе пинга, Чувак! :)

    ОтветитьУдалить
  5. Спасибо за теплый отзыв!!!
    Буду стараться и дальше :)

    С уважением, Ant0ni0n

    ОтветитьУдалить
  6. Огромное спасибо , очень полезно !
    Чёткое , подробное и грамотное объяснение.
    Прояснил до селе туманные аспекты.

    ОтветитьУдалить
  7. Спасибо! Статья супер!
    есть предложение о продолжении на тему полносвязной топологии с избыточными соединениями, в исполнении на IBGP и/или OSPF на 4-6 L3 или роутерах, думаю не только мне было бы интересно...

    ОтветитьУдалить
    Ответы
    1. Пожалуйста!!! Рад, что понравилось!!!
      Насчет предложения, принимается. Думаю в ближайшее время что-нибудь интересное придумаю и опишу (просто пишу сейчас другой пост).
      А если вы набросаете схемку или опишите подробнее что бы вы хотели увидеть, то мне было бы проще, так как уже точно знал о чем писать :)

      С уважением, Ant0ni0n

      Удалить
  8. Лаба очень помогла в подготовке к CCNP Route! Спасибо! Очень бы хотелось увидеть нестандартные топологии для свитчинга и настройки STP

    ОтветитьУдалить
  9. Спасибо огромное!.Перерыл кучу инфы и нигде небыло нормального пояснения для bgp/ospf/rip.Во всех гайдах описание не для новичков, а для про которые итак всё знают

    ОтветитьУдалить
  10. Подскажите в чем может быть причина, не устанавливаeтся соседство между R1 и R4 по IBGP, хотя все вроде бы сделал как написано. IOS 14.4

    R1#sh ip bgp summary
    4.4.4.4 4 1100 0 0 0 0 0 never Active

    R1#sh ip bgp - ничего не выдает

    ОтветитьУдалить
    Ответы
    1. Доброо времени суток!!!
      Отправьте мне на почту или выложите здесь sh run роутеров, а то так с ходу и не ответишь, в чем у вас может быть проблема.

      Удалить
  11. Замечательная статья. Единственное что заинтересовало это что пинг c R1 производится через source 1.1.1.1 соответсвенно если мы заотим подцепить к R1 еще один роутер который не будет состоять ни в OSPF ни в BGP а будет с прописаным маршрутом статикой нам на R1 надо будет поднимать NAT с outside интерфейсом 1.1.1.1 ?? Или можно включить сеть нового роутера в OSPF или BGP не включая на нем самом динамической маршрутизации?

    ОтветитьУдалить
    Ответы
    1. Прошу прощения время позднее затупил :) все рашилось добавлением net 192.168.1.0 mask 255.255.255.0 на R1 ))на днях на свежую голову попробуюс NAT провернуть вариант

      Удалить
  12. Огромное спасибо!
    Все понятно, доступно. Прекрасный подсобный материал.

    ОтветитьУдалить
    Ответы
    1. Спасибо за теплый отзыв!!!
      Заходите еще :)

      Удалить
  13. классные статьи, молодец, ты просто спасаешь)

    ОтветитьУдалить
  14. Анонимный5 мая 2012 г., 09:05

    Спасибо за статью!
    с помощью какого эмулятора вы построили эту схему?

    ОтветитьУдалить
    Ответы
    1. Спасибо за отзыв!
      Все схемы, которые вы видите в этом блоге, реализованы в программе GNS3. Если требовались компьютеры для проверок, то они реализовывались с помощью VMware workstation или VirtualBox, иногда с помощью встроенного функционала GNS3 - qemuHost.

      Удалить
  15. Анонимный6 июля 2012 г., 16:05

    Помогите, пожалуйста, у меня роутерах по два свободных fa0/0 fa0/1 какой иос выбрать чтобы было их больше?? для лабы из как минимум нужно три фаста.

    ОтветитьУдалить
    Ответы
    1. А вы пробовали добавлять slot-ы в настройках роутеров (Правая кнопка мыши по устройству -- Configure)?
      Там есть закладка "Slots" и там из выпадающего меню добавьте (в свободные места) нужные интерфейсы.
      Как это делать можете посмотреть тут: http://go-to-easyit.blogspot.com/2011/04/gns3.html
      Если не получится, то напишите мне вашу версию IOS. Если он будет отличаться, то я могу поделиться своим.

      Удалить
  16. А есть ли действительная необходимость использования OSPF, почему не сделать все на BGP? Тогда мы не сможем настроить соседство через лупбэки(ну если статикой не пропишем) или есть какие то нюансы еще которые вынуждают использовать OSPF вместе с BGP?

    ОтветитьУдалить
  17. Ага, вот такой же вопрос, почему мы не можем обойтись одним ИБГП вместо того же самого ОСПФа...Спасибо Огромное за статью! За деньги гайд ССНП купил, но здесь инфа намного круче расписана!

    ОтветитьУдалить
    Ответы
    1. Добрый день!
      Мы можем обойтись и без OSPF. Я писал в посте, что использовал OSPF для того, чтобы показать "фичи" BGP (синхронизацию и так далее). В конце поста я уже включил BGP на всех роутерах и после этого можно фактически выключить OSPF.
      Но протокол BGP медленнее чем OSPF и поэтому, лучше использовать во внутренней сети именно OSPF.
      Повторюсь, здесь я показал использование BGP и OSPF одновременно, но можно оставить только BGP. Тогда в процесс BGP надо включить и анонсы внутренних сетей для обеспечения сетевой доступности.

      Удалить
    2. Но без дополнительной маршрутизации нельзя будет настроить соседство между loopback интерфейсами маршрутизаторов? Или есть какой-нибудь выход??
      P.S.: Прошу прощения за много вопросов, просто сейчас готовлюсь к CCNA Security и самостоятельно углубляться в BGP нет времени но любопытство побеждает.

      Удалить
    3. Выход всегда есть!!! :)
      Я писал в предыдущем ответе, что просто надо будет внутренние сети ( в том числе и IP-адреса loopback интерфейсов) "запихнуть" в BGP, т.е. добавить командой например network 1.1.1.1 mask 255.255.255.255 и так далее добавить все внутренние сети.

      Удалить
  18. Не получается.
    Если мы в соседях укажем только лупбэки и не укажем физические порты, которые будут находится в одной локальной сети с роутером, то роутеры не смогут вещать маршрутную информацию на соседей т.к. соседи будут фактически находиться в другой неизвестно сети.
    Пример связности R1 и R2. Адресация ваша. Конфиг настройки BGP
    ====R1=====
    router bgp 100
    no synchronization
    bgp log-neighbor-changes
    network 1.1.1.1 mask 255.255.255.255
    network 10.1.10.0 mask 255.255.255.252
    network 10.1.11.0 mask 255.255.255.252
    neighbor BGP peer-group
    neighbor BGP remote-as 100
    neighbor BGP update-source Loopback1
    neighbor BGP next-hop-self
    neighbor 2.2.2.2 peer-group BGP
    neighbor 3.3.3.3 peer-group BGP
    neighbor 4.4.4.4 peer-group BGP
    no auto-summary
    =========
    =====R2=====
    router bgp 100
    no synchronization
    bgp log-neighbor-changes
    network 2.2.2.2 mask 255.255.255.255
    network 10.1.11.0 mask 255.255.255.252
    network 10.1.12.0 mask 255.255.255.252
    neighbor BGP peer-group
    neighbor BGP remote-as 100
    neighbor BGP update-source Loopback2
    neighbor BGP next-hop-self
    neighbor 1.1.1.1 peer-group BGP
    neighbor 3.3.3.3 peer-group BGP
    neighbor 4.4.4.4 peer-group BGP
    no auto-summary
    ======
    Вот с таким конфигом связности нет, чтобы появилась необходимо в соседей прописать адреса физических интерфейсов соседствующий локальных роутеров.
    Есть ли какой-нибудь вариант не делать этого?

    ОтветитьУдалить
    Ответы
    1. Хм.... Интересный вопросик :)
      Может можно попробовать вот такую команду:
      ====
      neighbor ttl-security hops 2
      ====
      Просто так как мы устанавливаем соседство на loopback интерфейс, то там уже получается отнимается значение TTL. Или попробовать добавить эту команду в настройки peer-group, чтобы не писать для каждого neighbor-а.

      Удалить
    2. neighbor ttl-security hops 2
      Эта опция для EBGP
      Данный вопрос у меня имеет чисто лабораторный интерес, в принципе построение BGP поверх OSPF криминалом не считаю, отнюдь. Исключительно образовательный интерес.

      Удалить
  19. При вводе команды
    R4(config)#router bgp 1100
    R4(config-router)#neighbor 1.1.1.1 remote-as 1100

    Ошибка:
    %Packet Tracer does not support internal BGP in this version. Only external neighbors are supported.

    ОтветитьУдалить
    Ответы
    1. А на каком этапе конфигурирования? Что настраивали, что уже сделали и так далее. Очень мало информации, чтобы дать какой то однозначный ответ

      Удалить
    2. Очевидно же, что PT не поддерживает внутренний BGP.
      Михаил, РТ очень ограниченный в функционале эмулятор, в связи с тем, что предназначен для тренировки при обучении на уровень CCNA, данный блог и данный топик в частности выходят за рамки CCNA.
      Рекомендую вам обратиться к эмулятору GNS3, тем более в этом блоге есть детальное и понятное описание установки и первичной настройки этого инструмента.

      Удалить
    3. Спасибо, Алексей!!!
      Как то не заметил в ошибке, что используется Packet Tracer :).

      Удалить
    4. Этот комментарий был удален автором.

      Удалить
  20. Этот комментарий был удален автором.

    ОтветитьУдалить
  21. почему у меня на моей кошке пишет ::
    46.174.199.138 4 61052 0 0 0 0 0 never Active

    а на его
    46.174.199.1 4 61052 0 0 0 0 0 never Idle

    ОтветитьУдалить
    Ответы
    1. Наиль, вы думаете этой информации достаточно? :) Это как спросить:" у меня не работает винда, что мне делать?" :) Извините что шучу, но нужно давать полную информацию: что настраивали, как настраивали, на каком шаге остановились и так далее. + желательно выкладывать или присылать конфигурацию...

      Удалить
  22. Ответы
    1. Михаил, MPLS было, еть и будет!!! :)
      Посмотрите в "Содержание". Есть 2 поста по этой теме (http://www.go-to-easyit.com/2012/03/mpls-cisco-1.html и http://www.go-to-easyit.com/2012/04/mpls-cisco-2.html)

      Удалить
  23. Все здорово. Одно маленькое замечание: я люблю запускать процесс OSPF непосредственно на интерфейсе (cofig-if# ip ospf 100 area 0 например). Таким образом можно не искать, на каком интерфейсе отключить updates (passive-interface) OSPF, о котором Вы забыли. Это мелочь в приведенной Вами топологии, но ведь бывает посложнее, и тогда не засорять трафф очень важно.
    Access-list можно было упростить:
    R5(config-ext-nacl)#permit ip 100.1.1.0 0.0.7.0 any
    R5(config-ext-nacl)#deny ip any any
    Вот как-то так:)

    ОтветитьУдалить
  24. а можно было использовать OSPF где R1-R4 а тока на R5 BGP?так как он у нас с другой автономной системы.поясните этот момент

    ОтветитьУдалить
    Ответы
    1. Нет нельзя. Для твоего варианта на R1-R4 OSPF на R4 bgp одной автономной системы на R5 другой. На R4 либо редистрибуцию из и в OSPF либо объявит сети непосредственно в BGP.

      Удалить
  25. то есть R1-R3(OSPF),R4(OSPF и BGP) а R5(BGP)так правильно?

    ОтветитьУдалить
  26. Добрый день! Спасибо за отличное и очень подробное описание работы BGP на русском языке. Всё запустилось и заработало.
    Мне, как и Анониму выше система показалась слегка избыточной (два протокола маршрутизации). Я сделал следующим образом - на R4 для процесса BGP добавил настройки:
    redistribute ospf 1 match internal
    redistribute ospf 1 match connected

    Для протокола OSPF, напротив, прописал рассылку маршрутов, полученных от R5 через BGP.
    redistribute BGP 1100 subnets (если не добавлять ключ subnets, то из BGP берутся только classful маршруты).

    Такие настройки позволили не настраивать BGP - соседей между всеми маршрутизаторами системы (только между R4-R5).

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

    ОтветитьУдалить
    Ответы
    1. Стал размышлять дальше над материями протокола BGP. Доразмышлялся до следующей конфигурации http://prntscr.com/2dbsvz
      Внутри квадратов OSPF и EIGRP маршрутизация только по соответственным протоколам. BGP используется только между AS.

      Вопрос вдогонку прошлому посту: Какие преимущества от использования BGP для передачи маршрутов по BGP между граничными маршрутизаторами одной системы. В моем случае при настройке BGP-линка между R1 и R3, промежуточный маршрутизатор (R2) об этих маршрутах не подозревал и беззаботно отбрасывал пакеты.

      Получается, что либо делать схему соседства все со всеми, либо только между AS. Или я ошибаюсь?

      Удалить
  27. Анонимный18 июня 2014 г., 11:55

    Добрый день. Спасибо за отличные статьи. Сделал, все как в вашей статье, используя расширенный пинг с R1 до R5 пинг проходит. Но не пингуется 50.50.50.1 с маршрутизатора R3 или R2. Почему? В таблицах маршрутизации все маршруты от R5 есть, но они не пингуются.

    ОтветитьУдалить
    Ответы
    1. Анонимный18 июня 2014 г., 12:03

      Добавил redistribute ospf1 и все заработало.

      Удалить
  28. Отличная статья, добротно так.~~ Благодарю автора за труд.

    ОтветитьУдалить
  29. Внесу свои 5 коп. благодарности)
    статья отличная. Особенно помог момент что в bgp командой network НЕЛЬЗЯ объединить подсети (например несколько /32 loopback в одну /27).
    Но вот я сейчас бодаюсь с топологией, что по OSPF и IBGP у меня должна быть внутренняя маршрутизация, то есть vlan управления устр-ми, vlan клиентский в котором гуляют серые IP и выходят во вне через NAT (pool /27 адресов). +филиалы.
    НО: во вне должны глядеть только внешние адреса.
    Вот как то так ))

    ОтветитьУдалить
  30. Спасибо большое за отличную статью, которая даёт понимание работы BGP

    ОтветитьУдалить
  31. как настроить EBGP между двумя AS с IGP OSPF и EIGRP?

    вот пример: https://ibb.co/faqajS

    ОтветитьУдалить