Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В статье описаны основы динамической маршрутизации и настройки протокола BGP. Протокол BGP лежит в основе Интернета.


 

Hilik     Настроим все

 http://www.hilik.org.ua/

 

Протокол динамической маршрутизации BGP. Настройка bgp в Quagga

 Очень важным достоинством quagga или zebra, когда zebra развивалась на некоммерческой основе, является то, что синтаксис у нее полностью совместим с синтаксисом CLI Cisco и когда наконец то заработала командная строка quagga, называемая vtysh, удобство настройки quagga стало максимальным. В этой статье я коснусь только самых основ настройки bgp сессий, а в следующих статьях, уже разберем вполне работоспособные примеры.


Для начала установим quagga:
cd /usr/ports/net/quagga
make install clean

в меню настройки порта выберем только последний пункт, а именно использование dmalloc, этот пункт рекомендуют для ускорения работы quagga, диалог будет иметь такой вид:

 
Options for quagga 0.99.12

[ ] ISISD Enable experimental ISIS daemon
[ ] PAM PAM authentication for vtysh
[ ] OSPF_NSSA NSSA support (RFC1587)
[ ] OSPF_OPAQUE_LSA OSPF Opaque-LSA support (RFC2370)
[ ] RTADV IPv6 Router Advertisements
[ ] SNMP SNMP support
[ ] TCPSOCKETS Use TCP/IP sockets for protocol daemons
[X] DLMALLOC Use dlmalloc (makes bgpd much faster)



[ OK ] Cancel

Теперь разрешим запуск:

echo "quagga_enable=YES" >> /etc/rc.conf
echo 'quagga_daemons="zebra bgpd"' >> /etc/rc.conf

А перед запуском из директории с примерами конфигов скопируем bgpd.conf.sample, vtysh.conf.sample и zebra.conf.sample

cd /usr/local/etc/quagga/
cp /usr/local/share/examples/quagga/bgpd.conf.sample ./bgpd.conf
cp /usr/local/share/examples/quagga/vtysh.conf.sample ./vtysh.conf
cp /usr/local/share/examples/quagga/zebra.conf.sample ./zebra.conf

и запустим quagga:

/usr/local/etc/rc.d/quagga start

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

vtysh

появится командная строка в которой можно начинать настройку.
А прежде чем начать настройку, чуть чуть теории, самый минимум. BGP – аббревиатура означающая протокол граничных маршрутизаторов
Маршрутизация в интернет основана на протоколе bgp, обмен информации о маршрутах происходит между граничными маршрутизаторами автономных систем. Автономная система или AS, это совокупность сетей объедененных под одним управлением и имеющий выделенный идентификатор. Идентификатор – это целое число, которое как и ip в европе выдает RIPE. Для своих тренировок мы воспользуемся специально зарезервироваными номерами AS для локальных сетей. Схема взаимодействия двух автономных систем будет выглядеть так:

bgp

Поскольку это взаимодействие граничных маршрутизаторов, то между ними сеть будет 192.168.0.0/30, этого достаточно для построения взаимодействия.
Поскольку со схемой, принципами и терминологией разобрались приступим к настройке первого маршрутизатора, анонсирующего сеть 192.168.1.0/24 под автономной системой 65534 и интерфейсом взаимодействия с пиром 192.168.0.1, второй интерфейс его соответственно является шлюзом для сети 192.168.1.0/24
В командной строке vtysh начнем последовательно вводить команды:

configure terminal
no router bgp 7675
router bgp 65534
bgp router-id 192.168.0.1
network 192.168.1.0/24
neighbor 192.168.0.2 remote-as 65535
neighbor 192.168.0.2 soft-reconfiguration inbound
write memory

Команда no router bgp 7675 удалает конфигурацию bgp созданную по умолчанию в файле примере bgpd.conf
Теперь переходим ко второму маршрутизатору, на нем точно так же должна быть установлена и запущена quagga.

configure  terminal
no router bgp 7675
router bgp 65535
bgp router-id 192.168.0.2
network 192.168.2.0/24
neighbor 192.168.0.1 remote-as 65534
neighbor 192.168.0.1 soft-reconfiguration inbound
write memory

Теперь на первом роутере выходим из режима настройки bgp сессии нажатием комбинации Ctrl-Z и оставшись в командной строке vtysh выполнить немного команд что бы убедится в том что сессия установилась:

show ip bgp summary

Увидим такой вывод этой комманды:

BGP router identifier 192.168.0.1, local AS number 65534
RIB entries 3, using 192 bytes of memory
Peers 1, using 2520 bytes of memory
 
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
192.168.0.2 4 65535 5 11 0 0 0 00:03:04 1
 
Total number of neighbors 1

В этой информации видно что мы приняли 1 префикс(одну сеть) от нашего партнера 192.168.0.2 с удаленной автономной системы 65535. Настройки сделаны правильно.

Подробную информацию о партнере по bgp можно увидеть так:

show ip bgp neighbors 192.168.0.2

И подробная информация выглядит так:

BGP neighbor is 192.168.0.2, remote AS 65535, local AS 65534, external link
BGP version 4, remote router ID 192.168.0.2
BGP state = Established, up for 00:08:29
Last read 00:00:29, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
4 Byte AS: advertised and received
Route refresh: advertised and received(old & new)
Address family IPv4 Unicast: advertised and received
Message statistics:
Inq depth is 0
Outq depth is 0
                         Sent       Rcvd
Opens: 5 0
Notifications: 0 0
Updates: 1 1
Keepalives: 10 9
Route Refresh: 0 0
Capability: 0 0
Total: 16 10
Minimum time between advertisement runs is 30 seconds
 
For address family: IPv4 Unicast
Community attribute sent to this neighbor(both)
1 accepted prefixes
 
Connections established 1; dropped 0
Last reset never
Local host: 192.168.0.1, Local port: 179
Foreign host: 192.168.0.2, Foreign port: 59783
Nexthop: 192.168.0.1
Nexthop global: fe80::21c:f0ff:fe9e:56ba
Nexthop local: ::
BGP connection: non shared network
Read thread: on Write thread: off

Тут мы видим, что BGP state = Established, up for 00:08:29 – состояние сессии установлено 8 минут 29 секунд назад, Видим локальную автономную систему и удаленную, к слову сказать эта информация повторяет инофрмацию на маршрутизаторах Cisco, а там можно держать не одну автономку, а много и информация по локальному асу для определенного нейджбора является полезной. Далее видим что приняли 1 сеть(префикс): 1 accepted prefixes и видим
Nexthop, следующий адрес в маршруте. В общем все нормально.
Теперь проверим анонс какой же сети мы принимаем:

show ip route bgp

и видим:

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
 
B>* 192.168.2.0/24 [20/0] via 192.168.0.2, em0, 00:19:40

Тут мы видим что 192.168.2.0/24 анонсирована по протоколу bgp через маршрутизатор 192.168.0.2, маршрут известен 00:19:40.
И выйдя из vtysh нажатием Ctrl-D можно проверить таблицу маршутизации хоста:

netstat -rn

и увидим:

192.168.2.0/24     192.168.0.2        UG1         0       51    em0

Сеть попала в таблицу маршрутизации роутера. Все настроено.

 

 Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/
 


В избранное