Author: 891rpm

  • 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) и объединение маршрутов (объединение нескольких маршрутов в один).

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

    Последующие примеры будем рассматривать на основе конфигурации сети, которая приведена ниже. 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      |
    ------------------       ------------------

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

    Следующая конфигурация написана для узла 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

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

    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#