Утилита 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"; }
Скриптик поставить на каждого клиента в крон и пару раз в сутки генерировать префикс листы. Меня он еще не подводил.




By Миша, 06.08.2009 @ 19:56
Видать вкралась очепятка…
prfxgen.pl: 21: Syntax error: word unexpected (expecting «)»)
ЗЫ за идею и скрипт, большое, человеческое спасибо
By hilik, 07.08.2009 @ 00:28
не за что. А со скриптом странно, я копировал рабочий скрипт и сейчас перепроверил, скопировав со странички – работает.