Возникла необходимость в наличии Looking Glass для отображения информации, как с аппаратных маршрутизаторов, так и с маршрутизаторов под управлением FreeBSD, с установленным демоном маршрутизации Quagga.
Использовать будем Looking Glass от Cougar. Дополнительная информация - на сайте проекта. Последняя версия - 1.9 от 25 ноября 2004 года. Релиз давно не обновлялся, но данный Looking Glass используется повсеместно.
Скачиваем и распаковываем архив:
# fetch http://muff.kiev.ua/files/lg-1.9.tar.bz2 |
Пора посмотреть, что имеем в наличии:
# cd lg-1.9 && ls total 146 drwxr-xr-x 2 www 100 512 25 ноя 2004 . drwxr-xr-x 7 www www 512 8 янв 01:36 .. -rw-r--r-- 1 www 100 3308 25 ноя 2004 CHANGELOG -rw-r--r-- 1 www 100 17976 16 июл 2002 COPYING -rw-r--r-- 1 www 100 5161 15 июн 2004 README -rw-r--r-- 1 www 100 256 15 июн 2004 as.txt -rw-r--r-- 1 www 100 50998 28 сен 2004 communities.txt -rw-r--r-- 1 www 100 1406 16 июл 2002 favicon.ico -rwxr-xr-x 1 www 100 36818 25 ноя 2004 lg.cgi -rw-r--r-- 1 www 100 14691 25 ноя 2004 lg.conf -rwxr-xr-x 1 www 100 2428 15 июн 2004 makeaslist.pl -rwxr-xr-x 1 www 100 3718 15 июн 2004 makedb.pl |
Итак, вникнем в README, чтобы понять что нужно делать дальше... Имеем в наличии пошаговую инструкцию... Ну что ж, начнем.
# mkdir /usr/local/www/lg.muff.kiev.ua |
# cp lg.cgi lg.conf favicon.ico /usr/local/www/lg.muff.kiev.ua |
<VirtualHost 195.3.159.250:80>
ServerName lg.muff.kiev.ua
ServerAdmin admin[dot]muff.kiev.ua ErrorLog /var/log/apache/lg.muff.kiev.ua-error.log
TransferLog /var/log/apache/lg.muff.kiev.ua-access.log ScriptAlias / /usr/local/www/lg/lg.cgi
DocumentRoot /usr/local/www/lg/
<Directory "/usr/local/www/lg"> Options -Indexes FollowSymLinks MultiViews AllowOverride All </Directory> </VirtualHost>
|
# apachectl graceful |
Чтобы немного "приукрасить" ресурс, разместим на странице логотип. Для этого необходимо поместить в каталог файл изображения с названием logo.gif. Еще необходимо внести некоторые изменения в файл lg.conf, но это немного попозже.
Необходимо в файле as.txt раскомментировать строки, начинающиеся с "include".
Также, в случае необходимости (например, при использовании локальных номеров автономных систем) необходимо задать номер автономной системы в файле as.txt. В моем частном случае номер автономной системы 12998 (ISP BGNet). Он прописан в файле as-ripe.txt, поэтому просто закомментируем прописанную в файле as.txt строку.
# cp makedb.pl /usr/local/www/lg.muff.kiev.ua Reading AS names.. |
Результатом команды будет файл as.db.
# chmod a+r /usr/local/www/lg.muff.kiev.ua/*.txt |
Кажется все инструкции выполнены... Дальше необходимо создать файл логов и выставить необходимые права:
# touch /var/log/lg.log |
Теперь советую отредактировать конфигурационный файл lg.conf, задать необходимые переменные и описать роутеры, к которым будем подключаться. Для теста вписал три роутера:
Листинг lg.conf получился следующего содержания:
<?xml version="1.0" encoding="ISO-8859-1" ?> <LG_Conf_File> <LGURL>/</LGURL> <LogFile>/var/log/lg.log</LogFile> <ASList>./as.db</ASList> <LogoImage Align="center" Link="http://lg.muff.kiev.ua/">logo.gif</LogoImage> <HTMLTitle>Looking Glass</HTMLTitle> <Favicon>/favicon.ico</Favicon> <ContactMail>admin[dot]muff.kiev.ua</ContactMail> <RSHCmd>/usr/bin/rsh -l lg</RSHCmd> <HTTPMethod>POST</HTTPMethod> <TimeOut>10</TimeOut> <Disclaimer>All commands will be logged for possible later analysis and statistics.</Disclaimer> <SecureMode>On</SecureMode> <Router_List> <Separator>UA-IX</Separator> <Router Name="ROUTER1" OSType="Zebra"> <URL>telnet://passROUTER1@192.168.206.1</URL> </Router> <Router Name="ROUTER2"> <URL>telnet://lguser:passROUTER2@192.168.206.5</URL> </Router> <Separator>Full-View</Separator> <Router Name="ROUTER3" OSType="Zebra"> <URL>telnet://passROUTER3@192.168.206.30</URL> </Router> </Router_List> </LG_Conf_File> |
Казалось бы, что на этом все... Однако нашел еще несколько костылей.
Telnet-соединение к маршрутизаторам не выполнялось. В логах веб-сервера обнаружил такую запись:
Can't locate Net/Telnet.pm in @INC (@INC contains: /usr/local/lib/perl5/5.8.9/BSDPAN /usr/local/lib/perl5/site_perl/5.8.9/mach /usr/local/lib/perl5/site_perl/5.8.9 /usr/local/lib/perl5/5.8.9/mach /usr/local/lib/perl5/5.8.9 .) at (eval 9) line 2., referer: http://lg.muff.kiev.ua/ |
Теперь понятно... Упустил, что на этом сервере не установлено perl-расширение Net::Telnet. Выполним установку этого модуля из портов:
# cd /usr/ports/net/p5-Net-Telnet && make install clean && rehash |
После этого заработало соединение к Cisco-роутеру, а с серверами под управлением FreeBSD c установленной Quagga все еще были проблемы. В логах обнаружил такие записи:
2012/03/22 20:17:30 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 2012/03/22 20:21:59 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 2012/03/22 20:59:18 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 2012/03/22 21:02:16 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 2012/03/22 21:03:17 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 2012/03/22 21:06:16 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1 |
Решение было следующим. В скрипте lg.cgi необходимо заккоментировать (или удалить) следующий блок:
$telnet->put(pack("C9", 255, # TELNET_IAC 250, # TELNET_SB 31, 0, 200, 0, 0, # TELOPT_NAWS 255, # TELNET_IAC 240)); # TELNET_SE |
После удаления этого блока все заработало. Итак, финиш... Ну и напоследок, скриншоты, как все это выглядит:
Вот так выглядит интерфейс:
Вывод команды show ip bgp 31.43.184.0/24:
Вывод команды show ip bgp neighbors 193.227.206.46 advertised-routes:
Вывод команды show ip bgp summary:
Обзор нейбора (show ip bgp neighbors 193.227.207.14):
Обзор приходящих от нейбора роутов (show ip bgp neighbors 193.227.206.29 routes):
Вывод команды ping 8.8.8.8:
Вывод команды traceroute 8.8.8.8:
Последние комментарии
11 недель 4 дня назад
35 недель 6 дней назад
2 года 36 недель назад
3 года 6 недель назад
3 года 29 недель назад
3 года 44 недели назад
3 года 45 недель назад
3 года 48 недель назад
4 года 7 недель назад
4 года 12 недель назад