Июн 30 2009

Утилита 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 он не совсем дружит, поэтому я использую такой скрипт обвертку:

#!/usr/bin/perl -w
#Проверяем передали ли нам параметры в виде 
#имени префикс листа и номера автономной системы
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";
}

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

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
  • By Миша, 06.08.2009 @ 19:56

    Видать вкралась очепятка…
    prfxgen.pl: 21: Syntax error: word unexpected (expecting «)»)

    ЗЫ за идею и скрипт, большое, человеческое спасибо

  • By hilik, 07.08.2009 @ 00:28

    не за что. А со скриптом странно, я копировал рабочий скрипт и сейчас перепроверил, скопировав со странички — работает.

Other Links to this Post


Украинская Баннерная Сеть