17.2. Настройка BGP4 с помощью Zebra.

Версия 4 Протокола Пограничных Маршрутизаторов (BGP4) -- это протокол динамический маршрутизации, описанный в RFC 1771. Он предназначен для обмена информацией (т.е. таблицами маршрутизации) между маршрутизаторами, с целью обеспечить согласующееся представление о данной Автономной Системе (Autonomous System -- AS). Может использоваться в режиме EGP (от англ. Exterior Gateway Protocol -- Протокол Внешних Маршрутизаторов) или IGP (от англ. Interior Gateway Protocol -- Протокол Внутренних Маршрутизаторов). В случае EGP -- требуется, чтобы каждый из узлов сети имел свой собственный номер Автономной Системы (AS). BGP4 поддерживает Безклассовую Внутридоменную Маршрутизацию (Classless Inter Domain Routing -- CIDR) и объединение маршрутов (объединение нескольких маршрутов в один).

17.2.1. Конфигурация сети (пример).

Последующие примеры будем рассматривать на основе конфигурации сети, которая приведена ниже. AS 1 и 50 имеют еще ряд "соседей", но мы будем рассматривать только эти две Автономные Системы, в качестве своих "соседей". Взаимодействие между сетями, в данном примере, производится через туннели, но в общем случае это не обязательно.

Примечание:

В данном примере используются зарезервированные номера AS, поэтому вы должны будете подставить свои собственные числа.

          --------------------
          | 192.168.23.12/24 |
          |    AS: 23        |
          --------------------
            /             \
           /               \
          /                 \
------------------       ------------------
| 192.168.1.1/24 |-------| 10.10.1.1/16   |
|    AS: 1       |       |    AS: 50      |
------------------       ------------------        
        

17.2.2. Конфигурирование (пример).

Следующая конфигурация написана для узла 192.168.23.12/24, но может быть с легкостью адаптирована и для других узлов.

Начинается с установки некоторых общих параметров, таких как: имя хоста, пароль и ключи отладки:

! имя хоста
hostname anakin

! пароль
password xxx

! разрешить пароль (режим суперпользователя)
enable password xxx

! путь к файлу журнала
log file /var/log/zebra/bgpd.log

! отладка: выводить отладочную информацию (этот раздел позднее может быть удален)
debug bgp events
debug bgp filters
debug bgp fsm
debug bgp keepalives
debug bgp updates        
        
Список доступа, используемый для ограничения перераспределения в локальных сетях (RFC 1918).
! RFC 1918 networks
access-list local_nets permit 192.168.0.0/16
access-list local_nets permit 172.16.0.0/12
access-list local_nets permit 10.0.0.0/8
access-list local_nets deny any        
        
Следующий шаг -- настройка каждой из AS:
! Собственный номер AS
router bgp 23

    ! IP-адрес маршрутизатора
    bgp router-id 192.168.23.12

    ! наша сеть, для оповещения "соседей"
    network 192.168.23.0/24

    ! объявлять о всех подключенных маршрутах (= непосредственно подключенных интерфейсах)
    redistribute connected

    ! объявлять о корневых маршрутах (= подставленных вручную)
    redistribute kernel
        
Блок "router bgp" должен содержать сведения о своих "соседях":
neighbor 192.168.1.1 remote-as 1
neighbor 192.168.1.1 distribute-list local_nets in
neighbor 10.10.1.1   remote-as 50
neighbor 10.10.1.1   distribute-list local_nets in        
        

17.2.3. Проверка конфигурации.

Примечание:

vtysh -- это мультиплексор, соединяющий все интерфейсы Zebra.

anakin# sh ip bgp summary 
BGP router identifier 192.168.23.12, local AS number 23
2 BGP AS-PATH entries
0 BGP community entries

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.10.0.1       4    50      35      40        0    0    0 00:28:40        1
192.168.1.1     4     1   27574   27644        0    0    0 03:26:04       14

Total number of neighbors 2
anakin#
anakin# sh ip bgp neighbors 10.10.0.1
BGP neighbor is 10.10.0.1, remote AS 50, local AS 23, external link
  BGP version 4, remote router ID 10.10.0.1
  BGP state = Established, up for 00:29:01
  ....
anakin#        
        
А теперь посмотрим -- какие маршруты были полученв от "соседей":
anakin# sh ip ro bgp 
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

B>* 172.16.0.0/14 [20/0] via 192.168.1.1, tun0, 2d10h19m
B>* 172.30.0.0/16 [20/0] via 192.168.1.1, tun0, 10:09:24
B>* 192.168.5.10/32 [20/0] via 192.168.1.1, tun0, 2d10h27m
B>* 192.168.5.26/32 [20/0] via 192.168.1.1, tun0, 10:09:24
B>* 192.168.5.36/32 [20/0] via 192.168.1.1, tun0, 2d10h19m
B>* 192.168.17.0/24 [20/0] via 192.168.1.1, tun0, 3d05h07m
B>* 192.168.17.1/32 [20/0] via 192.168.1.1, tun0, 3d05h07m
B>* 192.168.32.0/24 [20/0] via 192.168.1.1, tun0, 2d10h27m
anakin#