пятница, 12 сентября 2014 г.

FreeBSD 10, BGP и 2 провайдера

И так, есть два прова, Первый пров надет 2 линка - один с Украиной, второй с миром. Есть свой блок адресов и автономка. Надо это всё связать под управление указанной выше ОС - Freebsd 10. По Украине надо получить все подсети, а из мира только default. Второй пров сугубо резервный, дает лишь default, на случай если упадёт первый пров.


Для начала  надо поставить пакет quagga
cd /usr/ports/net/quagga/
make install clean
Опции по вкусу)
Когда всё установилось переходим в директорию
 /usr/local/etc/quagga
Тут надо создать файл zebra.conf следующего содержания:
hostname zebra
password 123
enable password 123
log file /usr/local/etc/quagga/zebra.log
!
interface re0
ip address 1.1.1.1/24
!
interface re1
ip address 2.2.2.1/30
          ! 
interface re2
          ip address 3.3.3.1/30
          !
interface re3
          ip address 4.4.4.1/30
          ! 
interface lo0
!
!
ip forwarding
!
!
line vty
exec-timeout 0 0
!
Небольшие пояснения:
re0 - интерфейс который смотрит  во внутреннюю сеть, на нём же и висит блок белых адресов нашей АС - 1.1.1.0/24
re1 - интерфейс который смотрит на провайдера по которому приходит трафик Украины, наш ип 2.2.2.1, прова 2.2.2.2
re2 - интерфейс того же прова, но с миром, наш ип 3.3.3.1, прова - 3.3.3.2.
re3 - интерфейс второго прова, с deafult, наш ип 4.4.4.1. прова - 4.4.4.2
В целом маршрутизация и настройка очень идентична оборудованию Cisco и здравой логике)
Теперь надо создать файл bgpd.conf и в нём описать все параметры.

hostname AS10000
password 123
enable password 123
log file /usr/local/etc/quagga/bgpd.log
!
router bgp 10000
 bgp router-id 1.1.1.1
 bgp log-neighbor-changes
 network 1.1.1.0/24
 neighbor 4.4.4.2 remote-as 4444
 neighbor 4.4.4.2 description BackupISP
 neighbor 4.4.4.2 shutdown
 neighbor 4.4.4.2 route-map ISP-In-Default-Backup in
 neighbor 4.4.4.2 route-map ISP-Out out
 neighbor 3.3.3.2 remote-as 3333
 neighbor 3.3.3.2 description FirstISP-UA-IX
 neighbor 3.3.3.2 route-map ISP-In-Full-View in
 neighbor 3.3.3.2 route-map ISP-Out out
 neighbor 2.2.2.2 remote-as 15772
 neighbor 2.2.2.2 description 2ndISP-World
 neighbor 2.2.2.2 route-map ISP-In-Default in
 neighbor 2.2.2.2 route-map ISP-Out out
!
ip prefix-list FullView seq 10 permit 0.0.0.0/0 le 32
ip prefix-list default description default route
ip prefix-list default seq 10 permit 0.0.0.0/0
ip prefix-list our-blocks seq 5 permit 194.44.146.0/24
!
route-map ISP-In-Default permit 100
 match ip address prefix-list default
 set metric +100
!
route-map ISP-In-Full-View permit 100
 match ip address prefix-list FullView
!
route-map ISP-Out permit 100
 match ip address prefix-list out-blocks
!
route-map empty deny 100
!
route-map ISP-In-Default-Backup permit 100
 match ip address prefix-list default
 set metric +150
!
line vty
!
 Тут все просто, особенно для тех кто знаком с route-map'ами Cisco. Создается несколько префикс-листов, чтобы разграничить обновления от разных пиров, в принципе входящие роут-мапы (котороые к примеру neighbor 2.2.2.2 route-map ISP-In-Default in) можно и создавать, оставит всё на совесть провайдера, равно как и исходящие. BGP совершенно не сложная вещь, работает просто и из коробки, но оооочень гибкая, за её гибкость её и ценят)
Отдельный вопрос касательно set metric +150, мне оба прова давали deafult с нулевой метрикой и система отказывалась вставлять его в роуты, метрика резервного прова должна быть выше. Так же фишка, если роут был вставлен в таблицу, а потом появился роут с лучшей метрикой, лучший не будет вставлен пока не будут очищены пиры. Все эти моменты замечательно покрываются в курсе CCNP...
А пока, вернемся к фряхе

Пишем в /etc/rc.conf:
quagga_enable="YES"
quagga_daemons="zebra bgpd"
quagga_flags="-d -A 127.0.0.1"
Запускаем:
/usr/local/etc/rc.d/quagga start
Если что-то не запустилось, смотрим логи. Бывает проблема с создание pid, надо на каталог /var/run/quagga дать больше прав и поменять собственника. Конфигурировать зебру и bgp можно так же из под демона, для того чтобы попасть в зебру надо подключиться телнетом на адрес 127.0.0.1 2601, а в настройку bgp - 127.0.0.1 2605, там всё опять-таки очень похоже на циску.
Чтобы посмотреть состояние bgp-сессия подключаемся на  127.0.0.1 2605:
команда sh ip bgp sum - выводит информацию о текущих сессиях, одна из частых проблем закрытые порты в фаэрволе, bgp помимо 179 порта использует ещё много других, (см. RFC). 
команда sh ip bgp - показывает список роутов, которые были импортированы в таблицу роутов bgp, там же показывается какой роут лучший, метрика и прочие параметры. Не всегда, если роут будет в таблице маршрутизации bgp, он будет помещен в основную таблицу(!), не следует про это забывать.
В целом сложного ничего нету.

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

Отправить комментарий