/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO - en - pl


17.2. Konfiguracja BGPv4 w Zebrze

Protokół BGP w wersji 4 ("Border Gateway Protocol") jest protokołem routingu dynamicznego opisanym w RFC 1771. Umożliwia dystrybucję informacji o osiągalności, tj. tabel routingu, do innych węzłów obsługujących BGPv4. Można go używać zarówno jako EGP i IGP. W trybie EGP każdy węzeł musi posiadać swój numer Systemu Autonomicznego (ang. "Autonomous System", AS). BGPv4 wspiera notację CIDR oraz agregacje (połączenie rozgłoszenia wielu tras w jedną sumaryczną).

17.2.1. Topologia przykładowej sieci

Poniższa topologia użyta zostanie do następnych przykładów. AS 1 i 50 mają więcej sąsiadów, ale będziemy konfigurować tylko je. Węzły w tym przykładzie komunikują się za pośrednictwem tuneli, ale w rzeczywistości nie jest to zupełnie potrzebne.

Uwaga: Numery AS użyte w tym przykładzie są zarezerwowane, jeśli chcesz uruchomić BGP w Internecie musisz zwrócić się do RIPE.


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

17.2.2. Przykładowa konfiguracja

Poniższa konfiguracja została napisana dla węzła 192.168.23.12/24 - względnie prosto jest ją zaadaptować na potrzeby innych węzłów.

Na początek konfigurujemy podstawowe parametry, takie jak nazwa hosta, hasło i ustawienia debugingu:

! nazwa hosta
hostname anakin

! hasło do logowania
password xxx

! hasło trybu enable (odpowiednik roota)
enable password xxx

! ścieżka do pliku z logami
log file /var/log/zebra/bgpd.log

! debugging: bardzo szczegółowy (oczywiście można
! później wyłączyć)
debug bgp events
debug bgp filters
debug bgp fsm
debug bgp keepalives
debug bgp updates

Następnie definiujemy listy dostępu, które posłużą nam do ograniczenia redystrybucji do tylko podsieci zdefiniowanych w RFC 1918 (prywatnych).

! sieci RFC 1918
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

Następnym krokiem jest konfiguracja konkretnego AS:

! Nasz numer AS
router bgp 23

    ! Adres IP routera którym będzie się identyfikował
    bgp router-id 192.168.23.12

    ! Jakie sieci rozgłaszamy sąsiadom
    network 192.168.23.0/24

    ! Rozgłaszamy wszystkie sieci podłączone
    ! (bezpośrednio)
    redistribute connected

    ! Rozgłaszamy również trasy z tablicy kernela
    ! (wpisane ręcznie/statycznie)
    redistribute kernel

Każdy blok `router bgp' zawiera definicję konkretnego AS i listę sąsiadów do których podłączony jest nasz router.

    ! (sąsiad o IP 192.168.1.1 to AS 1)
    neighbor 192.168.1.1 remote-as 1
    ! (do tras otrzymywanych od tego sąsiada nałóż
    !  filtr `local_nets')
    neighbor 192.168.1.1 distribute-list local_nets in
    ! (sąsiad o IP 10.10.1.1 to AS 50)
    neighbor 10.10.1.1   remote-as 50
    ! (do tras otrzymywanych od tego sąsiada nałóż
    !  filtr `local_nets')
    neighbor 10.10.1.1   distribute-list local_nets in

17.2.3. Sprawdzanie konfiguracji

Uwaga: vtysh to multiplekser i służy do połączeń ze wszystkimi aktywnymi interfejsami Zebry.

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#

Sprawdźmy jakie trasy dostaliśmy od sąsiadów:

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#

/ Linux Reviews / Networking / Kształtowanie Ruchu i Zaawansowany Routing HOWTO