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

Работаем с BGPq. Эта утилита позволит контролировать анонсы клиентов по протоколу BGP.


Новые статьи на сайте:

 

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

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

 

Утилита bgpq

Есть в портах FreeBSD полезная утилита bgpq, автор ее Александр Снарский и предназначена она для того, что бы облегчить жизнь системному администратору. Эта утилита незаменима, если вы управляете транзитной автономной системой у которой насчитывается больше десятка клиентов с которыми построены bgp сессии. Утилита эта автоматически строит префикс листы базируясь на номере автономной системы клиента. Такая автоматизация позволит вам забыть о том, что клиент может получить еще несколько префиксов(сетей) и забыть вам об этом сообщить, а потом включить на новые префиксы своих уже клиентов и удивляться что ничего не бегает.

Установим утилиту из портов:

cd /usr/ports/net-mgmt/bgpq/
make install clean

При установке никаких лишних вопросов не возникает, после установки сразу можно использовать.
Для примера возьмем AS39049, эта автономная система принадлежит провайдеру LCOM, запрос будет выглядеть так:

bgpq -q -P -l LCOM as39049|grep -v '!'

здесь параметр -P означает что генерировать будем prefix-list, а в -l передаем имя префикс листа.
И в ответ на выполнение команды получим:

no ip prefix-list LCOM
ip prefix-list LCOM permit 94.231.32.0/20
ip prefix-list LCOM permit 195.66.136.0/23

Все хорошо в принципе, bgpq можно заставить отправить команды на Cisco и на Juniper, но вот с Quagga он не совсем дружит, поэтому я использую такой скрипт обвертку:

#Проверяем передали ли нам параметры в виде 
#имени префикс листа и номера автономной системы
if(!$ARGV[0] or !$ARGV[1])
{
die "Usage prfxgen.pl <Prefix Name> <as number>";
}
$prfx_name=$ARGV[0];
chomp $prfx_name;
$as=$ARGV[1];
chomp $as;
$bgpq='/usr/local/bin/bgpq';
$vtysh='/usr/local/bin/vtysh';
#Получаем список префиксов
@prfx=`$bgpq -P -l $prfx_name $as|/usr/bin/grep -v '!'`;
#Проверяем сгенерировали ли что то.
#Проверем именно второй элемент массива, поскольку первый
#всегда no ip prefix-list
if($prfx[1])
{
$cmd="$vtysh -c 'configure terminal'";
foreach(@prfx)
{
chomp;
$cmd="$cmd -c '$_'";
}
$cmd="$cmd -c 'ip prefix-list $prfx_name deny any'";
`$cmd`;
}else{
die "No prefixes for $as";
}

Скриптик поставить на каждого клиента в крон и пару раз в сутки генерировать префикс листы. Меня он еще не подводил.

 

 

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


В избранное