Вообще-то по настройке Quagga уже есть статья, но решил, что настройке BGP необходимо посвятить отдельную статью. Итак, на днях получила дружественная сеть свою автономную систему и блок адресов. Соответственно необходимо все это дело настроить под собственные нужды, и с этой просьбой и обратилась ко мне.
Для глобальной маршрутизации будем использовать протокол BGP, информацию можно получить здесь. Ознакомившись с литературой, приступим к настройке.
Поставленная задача: получить от провайдера по одному BGP-соединению список сетей UA-IX, по второму - Full-view. Ну а дальше уже можно будет по представленной схеме настраивать соединения с несколькими аплинками.
Исходные данные (не буду их изменять, думаю ничего криминального и конфиденциального в этой информации нет):
ПРИМЕЧАНИЕ: для начала советую выделить из выделенного блока IP-адресс для маршрутизации (так называемый router-id), и добавить его на loopback-интерфейс маршрутизатора. В моем случае это 194.28.100.1:
# ifconfig lo0 alias 194.28.100.1/32 |
Теперь осталось добавить в rc.conf следующие строки, чтобы конфигурация сохранилась после перезагрузки:
ifconfig_lo0="inet 127.0.0.1 netmask 255.0.0.0" ifconfig_lo0_alias0="inet 194.28.100.1 netmask 255.255.255.255" |
Итак, продолжим. Будем отталкиваться от того, что пакет Quagga уже установален и zebra корректно настроена и работает (см. здесь). Для того, чтобы запустить демон bgpd, необходимо создать конфигурационный файл:
# touch /usr/local/etc/quagga/bgpd.conf |
Для того, чтобы можно было подключиться к виртуальному терминалу, который предоставляет bgpd, необходимо наличие пароля. Соответственно:
# echo 'password pass1' >> /usr/local/etc/quagga/bgpd.conf |
Дальше добавим в rc.conf запуск демона bgpd, правкой конфигурационного файла rc.conf до следующего состояния (за условия, что zebra уже настроена и работает):
# cat /etc/rc.conf | grep quagga |
Теперь перезапускаем quagga, чтобы запустить демон bgpd:
# sh /usr/local/etc/rc.d/quagga restart |
Дальше настройка идет с виртуальной консоли, которую нам предоставляет демон bgpd. Чтобы подключиться к виртуальной консоли, воспользуемся командой telnet и паролями, которые добавили в конфигурационный файл /usr/local/etc/quagga/bgpd.conf:
# telnet localhost bgpd Hello, this is Quagga (version 0.99.15).
Password: |
Итак, успешно подключились к виртуальному терминалу. Теперь приступаем к настройке.
Перейдем в режим глобальной конфигурации:
test.server# configure terminal |
Даем название роутеру, исходя из демона маршрутизации (чтобы не путаться в дальнейшем)
test.server(config)# hostname bgpd-router |
Включаем сервис шифрования паролей
bgpd-router(config)# service password-encryption |
Настройка логгирования:
bgpd-router(config)# log stdout
bgpd-router(config)# log file /var/log/quagga/bgpd.log |
Разрешаем коннекты в виртуальному терминалу только с localhost (создаем acl, куда добавляем "разрешенные ip-адреса", потом этот acl применяем к линии виртуального терминала):
bgpd-router(config)# access-list 1 remark Localhost only |
Проверим, что у нас еще нету никакой информации по BGP
bgpd-router(config)# do show ip bgp summary |
А теперь приступаем непосредственно к настройке BGP. Присвоим роутеру номер автономной системы:
bgpd-router(config)# router bgp 50956 |
Укажем принудительно идентификатор маршрутизатора (иначе берется наименьший присвоенный маршрутизатору IP-адресс). Этот IP-адресс добавляем на loopback (о том как это сделать, описано выше).
bgpd-router(config-router)# bgp router-id 194.28.100.1 |
Теперь укажем "соседа". Для начала - только UA-IX (ознакомимся с возможностями BGP), а потом уже настроим роутер для приема Full-view.
bgpd-router(config-router)# neighbor 195.3.156.217 remote-as 12998 |
Посмотрим, что у нас получилось:
|
Неплохо. Список сетей UA-IX уже получаем. Теперь необходимо "отдать" провайдеру наши сети. Укажем наши сети в конфигурации роутера. Также, настроим дополнительно фильтры, чтобы не отдать чего-либо "лишнего". Создадим route-map, согласно которого будем анонсировать свои сети:
bgpd-router(config-router)# network 194.28.100.0/22 bgpd-router(config-router)# neighbor 195.3.156.217 route-map ValorNet-Network out bgpd-router(config-router)# exit |
Теперь "опишем" этот route-map:
bgpd-router(config)# route-map ValorNet-Network permit 10 bgpd-router(config-route-map)# description "Include all ValorNet network for announces" |
Далее необходимо создать prefix-list ( в нашем случае ValorNet-AllNets), и перечислить в нем все сети для анонсирования:
bgpd-router(config)# ip prefix-list ValorNet-AllNets description "Insert network for announces here" |
Теперь осталось только "очистить" анонсы и сохранить конфигурацию:
bgpd-router# clear ip bgp 195.3.156.217 out bgpd-router# copy running-config startup-config |
Настройка BGP-сессии для UA-IX завершена. Теперь соответственно наведу команды, чтобы получить от провайдера full-view:
bgpd-router# configure terminal bgpd-router(config)# router bgp 50956 bgpd-router(config-router)# neighbor 195.3.157.85 remote-as 12998 |
Проверяем, что у нас получилось:
bgpd-router# show ip bgp summary BGP router identifier 194.28.100.1, local AS number 50956 RIB entries 598190, using 55 MiB of memory Peers 2, using 9120 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd Total number of neighbors 2 |
После того, как получил еще и full-view, трафик к некоторым сетям UA-IX-a побежал через мировой канал (поскольку в full-view входят также сети UA-IX-a). Устранить эту оплошность можно несколькими методами. Я остановился на установке для peer-а, от которого получам UA-IX большего значения weight (этим сделал эти маршруты более приоритетными):
bgpd-router# configure terminal bgpd-router(config)# router bgp 50956 bgpd-router(config-router)# neighbor 195.3.156.217 weight 10000 |
Чтобы изменения вступили в силу, необходимо выполнить reset BGP-сесии с peer'ом:
bgpd-router# clear ip bgp 195.3.156.217 bgpd-router# clear ip bgp 195.3.157.85 |
Вот и все. Получаем от провайдера UA-IX и full-view по двум соединениям, анонсируем свою сеть (опять же, в UA-IX и в мир). На этом базовую настройку можно считать оконченной. Для более тонкой настройки - читаем документацию.
Супер
Супер
Действительно супер! Всё
Действительно супер!
Всё отлично написано и то как оно есть!
Респект Автору!
С Ув. Олег Torvald
http://muff.kiev.ua/content/n
http://muff.kiev.ua/content/nastraivaem-border-gateway-protocol-c-pomosh...
http://muff.kiev.ua/content/bgp-nastraivaem-border-gateway-protocol-c-po...
аналогичны, это забыл дропнуть старую?
Статья одна и та же. Есть две
Статья одна и та же. Есть две ссылки, которые индексируются в поисковых системах и ведут на одну и ту же статью.
Когда-то переименовал статью и ссылку, чтобы упорядочить материал к одному стилю названий. А в поисковых системах еще были ссылки на старый адрес. Поэтому старую ссылку оставил рабочей. Пройдет время - должна остаться только одна.