Доступ сторонней организации с помощью BGP

Последние два года, сопровождая не малую сеть одной энергоснабжающей компании, появлялись задачи  различной сложности. Зачастую данные задачи были неожиданные и  срочные, поэтому их необходимо было решать с минимальной задержкой.
Одной из таких поставленных задач было  предоставление сторонней организации доступа к определенным  серверам, находящимся в сети 172.32.24.128/30, остальные ресурсы нашей компании (компания А), не должны быть достижимы. На первый взгляд, ничего сложного, основным условием было предоставление  высокого уровня доступности серверов.

Для решения задачи потребовалось создать несколько резервных линков. Проанализируя сложившуюся ситуацию и наши технические возможности, выбор пал на использование  протокола EBGP. Итак, имеем две различные организации , у каждой своя AS.  Для начала необходимо построить   три линка: основной 172.32.16.0.30, резервный 1 (Tun100) 172.32.16.4/30, резервный 2 (спутник) 172.32.16.8/30

Получается следующая схема:

scr1

 

В  итоге, настройку  EBGP на  маршрутизаторах А и В, можно кратко свести к следующей последовательности действий:
1) настройка трех линков и  видимости между роутерами;
2) запуск BGP;
3)  установка соседства на каждом канале;
4) анонсирование сетей;
5) применение фильтров.

RouterA#(config)interface Tunnel100
                   ip address 10.2.1.1 255.255.255.252
                   tunnel source FastEthernet1/0
                   tunnel destination 10.100.9.1

Итак, создается  туннельный интерфейс для первого резервного соединения. Возможно данный туннель  будет проходить через несколько интернет провайдеров,  так как не известно количество  пересекаемых маршрутизаторов используется команда в BGP  —  neighbor Х.Х.Х.Х ebgp-multihop 10.

RouterA#(config) interface GigabitEthernet0/0
                              ip address 172.32.16.1 255.255.255.252
                              duplex full
                              speed 1000
                              negotiation auto

Данный интерфейс является соединением  point-to-point и напрямую смотрит  в сторону соседа по EBGP и и представляет собой  основной  линк .

RouterA#(config) interface FastEthernet1/0
                                    ip address 10.100.9.2 255.255.255.252
                                   duplex auto
                                   speed auto

Интерфейс внутренней сети компании А, в EBGP  не участвует.

RouterA#(config)interface FastEthernet1/1
                                ip address 172.32.16.9 255.255.255.252
                                duplex auto
                                speed auto

Последний интерфейс, создается  как второй резервный линк, использующий для соединения   спутниковую связь.  За интерфейсом может  стоять как спутниковый терминал, так и любая другая железка, это  зависит от технологии  провайдера спутниковой связи, главное чтобы была достижима  противоположная сторона.

RouterA#(config)router eigrp 1
                                network 10.100.9.0 0.0.0.3
                                network 10.109.2.0 0.0.0.255
                                network 10.109.144.0 0.0.0.255
                                network 172.32.24.128 0.0.0.127
                                no auto-summary

Выше указан протокол динамической маршрутизации (EIGRP)  для внутреннего роутинга компании А.  Он никак не связан с EBGP. Основная задача EIGRP в  данном примере — связь между  внутренними подсетями компании А.

RouterA#(config) router bgp 65031
RouterA#(config) no synchronization
RouterA#(config) bgp router-id 172.32.16.1

Итак, начинается  настройка BGP. Первая строчка запускает сам протокол. Напоминаю, что на  роутере может работать только один экземпляр протокола. Вторая строчка отключает технологию синхронизации протоколов BGP с IGP так как она устаревшая, и в нашем примере не используется.

 RouterA#(config) network 172.32.24.128 mask 255.255.255.128
 RouterA#(config) timers bgp 5 20 20
 RouterA#(config) neighbor 10.1.1.2 remote-as 65530

 Командой network Х.Х.Х.Х  mask Х.Х.Х.Х  анонсируем нашу подсеть с серверами в протокол BGP.  Важный момент,  в данной команде указывается  подсеть строго так, как она  существует в таблице маршрутизации. Иначе BGP просто не будет ее анонсировать. Далее указываем соседа, его IP адрес и автономную систему в которой он находится.

  

RouterA#(config) neighbor 10.1.1.2 ebgp-multihop 4
 RouterA#(config) neighbor 10.1.1.2 update-source Tunnel100
 RouterA#(config) neighbor 10.1.1.2 timers 6 20

Так как, данное соседство устанавливается через туннель, необходимо командой ebgp-multihop, указать максимальное количество хопов до роутера компании партнера. В данном примере известно, что общее число маршрутизаторов не более четырех. Для установления соседства обязательно указать данный параметр. Если не указать его, EBGP просто не установит соседство. Далее командой update-source указывается  с какого интерфейса EBGP будет  принимать обновления. Меняем таймеры: keepalive и hold для снижения времени реакции при потере связи на одном из линков между соседями.

RouterA#(config) neighbor 10.1.1.2 weight 150
RouterA#(config) neighbor 10.1.1.2 soft-reconfiguration inbound
 RouterA#(config) neighbor 10.1.1.2 prefix-list BGP_IN in

В первой строчке командой weight назначается вес данного соседа. Этот атрибут является локально значимым, не транзитивным, то есть указывается локально на роутере, и является лучшим выходом из автономной системы. В нашем примере самый высокий вес имеет сосед 172.32.16.2, поэтому он будет основным линком для маршрутизации трафика между компаниями. Как только этот сосед станет недостижимым, трафик переключится на резервный линк с меньшим весом, т.е. на соседа 10.1.1.2 с весом 150.

Далее команда soft-reconfiguration, применяется при использовании роут мапов. После очередного изменения фильтрации, в нашем случае входящих маршрутов, необходимо оборвать BGP сессию с соседом, чтобы новый фильтр вступил в силу. Данная команда  заставляет наш роутер держать две базы с входящими маршрутами. Одна из них хранится в ОЗУ, другая в BGP. Так вот, разрывая связь BGP командой clear ip bgp {neighbor} soft in, роутер просто возьмет маршруты из ОЗУ, без разрыва соседства с  роутером компании партнера, следовательно без потери связи и трафика.

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

Далее конфигурация аналогичная выше описанной.

 RouterA#(config) neighbor 172.32.16.2 remote-as 65530
 RouterA#(config) neighbor 172.32.16.2 update-source GigabitEthernet0/0
 RouterA#(config) neighbor 172.32.16.2 timers 6 20
 RouterA#(config) neighbor 172.32.16.2 soft-reconfiguration inbound
 RouterA#(config) neighbor 172.32.16.2 weight 200
 RouterA#(config) neighbor 172.32.16.2 prefix-list BGP_IN in
 RouterA#(config) neighbor 172.32.16.10 remote-as 65530
 RouterA#(config) neighbor 172.32.16.10 ebgp-multihop 10
 RouterA#(config) neighbor 172.32.16.10 update-source FastEthernet1/1
 RouterA#(config) neighbor 172.32.16.10 timers 6 20
 RouterA#(config) neighbor 172.32.16.10 soft-reconfiguration inbound
 RouterA#(config) neighbor 172.32.16.10 weight 100
 RouterA#(config) neighbor 172.32.16.10 prefix-list BGP_IN in
 RouterA#(config) no auto-summary

 

ip forward-protocol nd
ip route 10.1.1.0 255.255.255.252 Tunnel100
no ip http server
no ip http secure-server

ip prefix-list BGP_IN seq 5 permit 10.33.0.0/24
ip prefix-list BGP_IN seq 10 permit 172.16.0.0/24

end

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

Таким образом, в итоге  настроили трех соседей по EBGP, каждому выставили weight. В данном примере основным будет линк G0/0 c весом 200 (172.32.16.0/30). При падении данного линка, следующим выбирается Tun100 с весом 150 (10.1.1.0/30). При падении обоих, трафик пойдет через спутник (172.32.16.8./30).

Выше рассмотрен, только конфиг роутера А. На роутере Б он может немного отличаться, каждый админ строит сеть по своему, но принцип тот же.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hide me
Получать регулярно свежие материалы, лабораторные и вебинары
Email Имя
Show me