BGP - Looking Glass для BGP-роутера

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d6f1e9a58a3736d7b32c1f6b730f7600' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtejustify\">Возникла&nbsp;необходимость в наличии&nbsp;<strong>Looking Glass</strong> для отображения информации, как с&nbsp;аппаратных маршрутизаторов,&nbsp;так и&nbsp;с&nbsp;маршрутизаторов под управлением <strong>FreeBSD</strong>, с установленным демоном маршрутизации <strong><a href=\"http://muff.kiev.ua/content/quagga-prevrashchenie-servera-v-polnofunktsionalnyi-marshrutizator\">Quagga</a></strong>.</p>\n<p class=\"rtejustify\">Использовать будем&nbsp;<strong>Looking Glass</strong> от&nbsp;<strong>Cougar</strong>. Дополнительная информация - на <a href=\"http://www.version6.net\">сайте проекта</a>. Последняя версия -&nbsp;1.9 от 25 ноября 2004 года. Релиз давно не обновлялся,&nbsp;но данный <strong>Looking Glass</strong> используется повсеместно.</p>\n<p class=\"rtejustify\">Скачиваем и распаковываем архив:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>fetch </strong><a href=\"http://muff.kiev.ua/files/lg-1.9.tar.bz2\"><strong>http://muff.kiev.ua/files/lg-1.9.tar.bz2</strong></a><br />\n # <strong>tar -xzf lg-1.9.tar.bz2</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Пора посмотреть,&nbsp;что имеем в наличии:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p>#&nbsp;<strong>cd lg-1.9 &amp;&amp; ls</strong></p>\n<pre>\ntotal 146\ndrwxr-xr-x 2 www 100 512 25 ноя 2004 .\ndrwxr-xr-x 7 www www 512 8 янв 01:36 ..\n-rw-r--r-- 1 www 100 3308 25 ноя 2004 CHANGELOG\n-rw-r--r-- 1 www 100 17976 16 июл 2002 COPYING\n-rw-r--r-- 1 www 100 5161 15 июн 2004 README\n-rw-r--r-- 1 www 100 256 15 июн 2004 as.txt\n-rw-r--r-- 1 www 100 50998 28 сен 2004 communities.txt\n-rw-r--r-- 1 www 100 1406 16 июл 2002 favicon.ico\n-rwxr-xr-x 1 www 100 36818 25 ноя 2004 lg.cgi\n-rw-r--r-- 1 www 100 14691 25 ноя 2004 lg.conf\n-rwxr-xr-x 1 www 100 2428 15 июн 2004 makeaslist.pl\n-rwxr-xr-x 1 www 100 3718 15 июн 2004 makedb.pl</pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Итак,&nbsp;вникнем в README,&nbsp;чтобы понять что нужно делать дальше... Имеем в наличии пошаговую инструкцию... Ну что ж,&nbsp;начнем.</p>\n<ol>\n<li>Cоздаем каталог для размещения файлов <strong>Looking Glass</strong>.<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td># <strong>mkdir /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span></strong></td>\n</tr>\n</tbody>\n</table>\n<p>\n &nbsp;</p></li>\n<li class=\"rtejustify\">Копируем файлы lg.cgi, lg.conf и favicon.ico в этот каталог. Выставляем необходимые права доступа:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cp lg.cgi lg.conf favicon.ico /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span></strong><br />\n <span style=\"color:#000000\"># </span><strong><span style=\"color:#000000\">chown www:www /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span><span style=\"color:#000000\">/</span></span></strong><br />\n <span style=\"color:#000000\"># </span><strong><span style=\"color:#000000\">chmod 644 /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span><span style=\"color:#000000\">/*</span></span></strong><br />\n <span style=\"color:#000000\"><span style=\"color:#000000\"># <strong>chmod 755 /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span><span style=\"color:#000000\">/lg.cgi</span></strong></span></span></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>\n &nbsp;</p></li>\n<li class=\"rtejustify\">Отредактируем <strong>httpd.conf</strong>. Я создал отдельный виртуалхост следующего содержания:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td>\n<div>&lt;VirtualHost 195.3.159.250:80&gt;</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerName lg.muff.kiev.ua<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServerAdmin admin[dot]muff.kiev.ua</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ErrorLog /var/log/apache/lg.muff.kiev.ua-error.log<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TransferLog /var/log/apache/lg.muff.kiev.ua-access.log</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ScriptAlias / /usr/local/www/lg/lg.cgi</div>\n<div>&nbsp;</div>\n<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DocumentRoot /usr/local/www/lg/<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Directory &quot;/usr/local/www/lg&quot;&gt;<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options -Indexes FollowSymLinks MultiViews<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowOverride All<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Directory&gt;</div>\n<div>&nbsp;</div>\n<div>&lt;/VirtualHost&gt;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p>\n &nbsp;</p></li>\n<li class=\"rtejustify\">Перезапустим веб-сервер,&nbsp;чтобы изменения вступили в силу:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td># <strong>apachectl graceful</strong></td>\n</tr>\n</tbody>\n</table>\n<p>\n &nbsp;</p></li>\n<li class=\"rtejustify\">Хм... Как бы все готово.&nbsp;Проверяем,&nbsp;что у нас доступно по адресу <a href=\"http://lg.muff.kiev.ua\" title=\"http://lg.muff.kiev.ua\">http://lg.muff.kiev.ua</a>. Результат следующий:<br />\n &nbsp;\n<table align=\"center\" border=\"0\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td class=\"rtecenter\">&nbsp;<a class=\"thickbox\" href=\"/files/imagepicker/1/lg-01.png\" title=\"\"><img alt=\"Картинки\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/lg-01.png\" /></a></td>\n</tr>\n</tbody>\n</table>\n<p>\n Чтобы немного &quot;приукрасить&quot; ресурс,&nbsp;разместим на странице логотип.&nbsp;Для этого необходимо поместить в каталог файл изображения с названием&nbsp;<strong>logo.gif</strong>.&nbsp;Еще необходимо внести некоторые изменения&nbsp;в файл&nbsp;<strong>lg.conf</strong>,&nbsp;но это немного попозже.<br />\n &nbsp;</p></li>\n<li class=\"rtejustify\">Дальше,&nbsp;следуя инструкции,&nbsp;загружаем файлы&nbsp;созласно указанного списка и размещаем их в каталоге&nbsp;Looking Glass-а:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># wget <a href=\"http://www.version6.net/lg/db/as.txt\" title=\"http://www.version6.net/lg/db/as.txt\">http://www.version6.net/lg/db/as.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/as-apnic.txt\" title=\"http://www.version6.net/lg/db/as-apnic.txt\">http://www.version6.net/lg/db/as-apnic.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/as-arin.txt\" title=\"http://www.version6.net/lg/db/as-arin.txt\">http://www.version6.net/lg/db/as-arin.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/as-ripe.txt\" title=\"http://www.version6.net/lg/db/as-ripe.txt\">http://www.version6.net/lg/db/as-ripe.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/as-jpnic.txt\" title=\"http://www.version6.net/lg/db/as-jpnic.txt\">http://www.version6.net/lg/db/as-jpnic.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/as-lacnic.txt\" title=\"http://www.version6.net/lg/db/as-lacnic.txt\">http://www.version6.net/lg/db/as-lacnic.txt</a><br />\n # wget <a href=\"http://www.version6.net/lg/db/communities.txt\" title=\"http://www.version6.net/lg/db/communities.txt\">http://www.version6.net/lg/db/communities.txt</a></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>\n Необходимо в файле<strong> as.txt </strong>раскомментировать строки,&nbsp;начинающиеся с &quot;<strong>include</strong>&quot;.<br />\n Также, в случае необходимости (например,&nbsp;при&nbsp;использовании локальных номеров автономных систем) &nbsp;необходимо задать номер автономной системы в файле <strong>as.txt</strong>. В моем частном случае номер автономной системы <strong>12998</strong> (<a href=\"http://bg.net.ua/\" target=\"_blank\">ISP BGNet</a>). Он прописан&nbsp; в файле <strong>as-ripe.txt</strong>,&nbsp;поэтому просто закомментируем прописанную в файле <strong>as.txt</strong> строку.<br />\n &nbsp;</p></li>\n<li>Следующий шаг - создание базы данных. Для этого воспользуемся&nbsp;скриптом&nbsp;<strong>makedb.pl</strong>. Скопируем его&nbsp;в&nbsp;директорию&nbsp;<strong>LG</strong> и&nbsp;дадим команду на запуск:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cp makedb.pl /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span></strong><br />\n # <strong>./makedb.pl</strong></p>\n<p> Reading AS names..<br />\n &nbsp;Read AS list from as.txt..<br />\n &nbsp;OK<br />\n Reading community names..<br />\n &nbsp;Read community list from communities.txt..<br />\n &nbsp;OK<br />\n Setting up database..<br />\n &nbsp;OK</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>\n Результатом команды будет файл <strong>as.db</strong>.<br />\n &nbsp;</p></li>\n<li>Чтобы быть уверенным,&nbsp;что&nbsp;все&nbsp;необходимые файлы&nbsp;доступны на чтение веб-сервером, добавим необходимые права:<br />\n &nbsp;\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:94%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>chmod a+r&nbsp; /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span><span style=\"color:#000000\">/*.txt</span></strong><br />\n # <strong>chmod a+r&nbsp; /usr/local/www/<span style=\"color:#ff0000\">lg.muff.kiev.ua</span><span style=\"color:#000000\">/as.db</span></strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n</li>\n</ol>\n<p class=\"rtejustify\">Кажется все инструкции выполнены...&nbsp; Дальше необходимо создать файл логов и выставить необходимые права:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>touch /var/log/lg.log</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Теперь советую отредактировать конфигурационный файл&nbsp;<strong>lg.conf</strong>, задать необходимые переменные и описать роутеры,&nbsp;к которым будем подключаться. Для теста вписал три роутера:</p>\n<ol>\n<li><strong>ROUTER1</strong>: UA-IX. Clients. FreeBSD Router.</li>\n<li><strong>ROUTER2</strong>: UA-IX. Clients. Cisco Router.</li>\n<li><strong>ROUTER3</strong>: Full-View. Clients. FreeBSD Router.</li>\n</ol>\n<p class=\"rtejustify\">Листинг <strong>lg.conf</strong> получился следующего содержания:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td style=\"background-color:rgb(51, 51, 51)\">\n<pre>\n<strong><span style=\"color:#00ccff\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot; ?&gt;</span></strong><strong><span style=\"color:#00ccff\"> </span></strong></pre><pre>\n<strong><span style=\"color:#00ccff\">&lt;LG_Conf_File&gt;</span></strong>\n\n<strong><span style=\"color:#00ccff\"> &lt;LGURL&gt;<span style=\"color:#ff0000\">/</span>&lt;/LGURL&gt;\n &lt;LogFile&gt;<span style=\"color:#ff0000\">/var/log/lg.log</span><span style=\"color:#00ccff\">&lt;/LogFile&gt;\n</span> &lt;ASList&gt;<span style=\"color:#ff0000\">./as.db</span>&lt;/ASList&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;LogoImage Align=&quot;center&quot; Link=&quot;</span></strong><a href=\"http://lg.muff.kiev.ua/%22%3Elogo.gif%3C/LogoImage\"><strong><span style=\"color:#00ccff\">http://lg.muff.kiev.ua/&quot;&gt;<span style=\"color:#ff0000\">logo.gif</span>&lt;/LogoImage</span></strong></a><strong><span style=\"color:#00ccff\">&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HTMLTitle&gt;<span style=\"color:#ff0000\">Looking Glass</span>&lt;/HTMLTitle&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Favicon&gt;<span style=\"color:#ff0000\">/favicon.ico</span>&lt;/Favicon&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ContactMail&gt;<span style=\"color:#ff0000\">admin[dot]muff.kiev.ua</span>&lt;/ContactMail&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RSHCmd&gt;<span style=\"color:#ff0000\">/usr/bin/rsh -l lg</span>&lt;/RSHCmd&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HTTPMethod&gt;<span style=\"color:#ff0000\">POST</span>&lt;/HTTPMethod&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;TimeOut&gt;<span style=\"color:#ff0000\">10</span>&lt;/TimeOut&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Disclaimer&gt;<span style=\"color:#ff0000\">All commands will be logged for possible later analysis and statistics.</span>&lt;/Disclaimer&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;SecureMode&gt;<span style=\"color:#ff0000\">On</span>&lt;/SecureMode&gt;</span></strong></pre><pre>\n<strong><span style=\"color:#00ccff\"> &lt;Router_List&gt;\n &lt;Separator&gt;<span style=\"color:#ff0000\">UA-IX</span>&lt;/Separator&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Router Name=&quot;<span style=\"color:#ff0000\">ROUTER1</span>&quot; OSType=&quot;<span style=\"color:#ff0000\">Zebra</span>&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;URL&gt;<span style=\"color:#ff0000\">telnet://passROUTER1@192.168.206.1</span>&lt;/URL&gt;\n &lt;/Router&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Router Name=&quot;<span style=\"color:#ff0000\">ROUTER2</span>&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;URL&gt;<span style=\"color:#ff0000\">telnet://lguser:passROUTER2@192.168.206.5</span>&lt;/URL&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Router&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Separator&gt;<span style=\"color:#ff0000\">Full-View</span>&lt;/Separator&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Router Name=&quot;<span style=\"color:#ff0000\">ROUTER3</span>&quot; OSType=&quot;<span style=\"color:#ff0000\">Zebra</span>&quot;&gt;\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;URL&gt;<span style=\"color:#ff0000\">telnet://passROUTER3@192.168.206.30</span>&lt;/URL&gt;\n</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style=\"color:#00ccff\">&lt;/Router&gt;</span></strong>\n<strong><span style=\"color:#00ccff\"> &lt;/Router_List&gt;</span></strong>\n<strong><span style=\"color:#00ccff\">\n&lt;/LG_Conf_File&gt;</span></strong></pre></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Казалось бы,&nbsp;что на этом все... Однако&nbsp;нашел еще несколько костылей.</p>\n<p class=\"rtejustify\"><strong>Telnet-</strong>соединение&nbsp;к маршрутизаторам не выполнялось.&nbsp;В логах веб-сервера обнаружил такую запись:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>&nbsp;Can&#39;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: <a href=\"http://lg.muff.kiev.ua/\">http://lg.muff.kiev.ua/</a></td>\n</tr>\n</tbody>\n</table>\n<p>Теперь понятно... Упустил,&nbsp;что на этом сервере не установлено perl-расширение <strong>Net::Telnet</strong>. Выполним установку этого модуля из портов:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/net/p5-Net-Telnet &amp;&amp; make install clean &amp;&amp;&nbsp;rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p>После этого заработало соединение к <strong>Cisco</strong>-роутеру, а с серверами под управлением <strong>FreeBSD</strong> c установленной <strong>Quagga</strong> все еще были проблемы. В логах обнаружил такие записи:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>2012/03/22 20:17:30 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1<br />\n 2012/03/22 20:21:59 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1<br />\n 2012/03/22 20:59:18 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1<br />\n 2012/03/22 21:02:16 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1<br />\n 2012/03/22 21:03:17 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1<br />\n 2012/03/22 21:06:16 BGP: buffer_flush_window called with non-positive window height 0, forcing to 1</td>\n</tr>\n</tbody>\n</table>\n<p>Решение было следующим. В скрипте <strong>lg.cgi</strong> необходимо заккоментировать (или удалить) следующий блок:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<pre>\n$telnet-&gt;put(pack(&quot;C9&quot;,\n 255, # TELNET_IAC\n 250, # TELNET_SB\n 31, 0, 200, 0, 0, # TELOPT_NAWS\n 255, # TELNET_IAC\n 240)); # TELNET_SE</pre></td>\n</tr>\n</tbody>\n</table>\n<p>После удаления этого блока все заработало. Итак,&nbsp;финиш...&nbsp; Ну и напоследок,&nbsp;скриншоты, как все это выглядит:</p>\n<p>&nbsp;</p>\n<p>Вот так выглядит интерфейс:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-02.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-02.png\" style=\"height:91px; width:200px\" /></a></p>\n<p>Вывод команды <em><strong>show ip bgp 31.43.184.0/24</strong></em>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-10.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-10.png\" style=\"height:101px; width:200px\" /></a></p>\n<p>Вывод команды <em><strong>show ip bgp neighbors 193.227.206.46 advertised-routes</strong></em>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-11.png\"><img alt=\"Looking Glass \" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-11.png\" style=\"height:102px; width:200px\" /></a></p>\n<p>Вывод команды <em><strong>show ip bgp summary</strong></em>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-04.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-04.png\" style=\"height:117px; width:200px\" /></a></p>\n<p>Обзор нейбора (<em><strong>show ip bgp neighbors 193.227.207.14</strong></em>):</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-07.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-07.png\" style=\"height:169px; width:200px\" /></a></p>\n<p>Обзор приходящих от нейбора роутов (<em><strong>show ip bgp neighbors 193.227.206.29 routes</strong></em>):</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-08.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-08.png\" style=\"height:99px; width:200px\" /></a></p>\n<p>Вывод команды <em><strong>ping 8.8.8.8</strong></em>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-09.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-09.png\" style=\"height:72px; width:200px\" /></a></p>\n<p class=\"rtejustify\">Вывод команды <em><strong>traceroute 8.8.8.8</strong></em>:</p>\n<p class=\"rtecenter\"><a class=\"thickbox\" href=\"http://muff.kiev.ua/files/imagepicker/1/lg-12.png\"><img alt=\"Looking Glass\" class=\"imgp_img\" src=\"http://muff.kiev.ua/files/imagepicker/1/thumbs/lg-12.png\" style=\"height:94px; width:200px\" /></a></p>\n<p class=\"rtecenter\">&nbsp;</p>\n', created = 1767408031, expire = 1767494431, headers = '', serialized = 0 WHERE cid = '2:d6f1e9a58a3736d7b32c1f6b730f7600' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767408031, expire = 1767494431, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767408031, expire = 1767494431, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другуPDF version

Возникла необходимость в наличии Looking Glass для отображения информации, как с аппаратных маршрутизаторов, так и с маршрутизаторов под управлением FreeBSD, с установленным демоном маршрутизации Quagga.

Использовать будем Looking Glass от Cougar. Дополнительная информация - на сайте проекта. Последняя версия - 1.9 от 25 ноября 2004 года. Релиз давно не обновлялся, но данный Looking Glass используется повсеместно.

Скачиваем и распаковываем архив:

# fetch http://muff.kiev.ua/files/lg-1.9.tar.bz2
# tar -xzf 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, чтобы понять что нужно делать дальше... Имеем в наличии пошаговую инструкцию... Ну что ж, начнем.

  1. Cоздаем каталог для размещения файлов Looking Glass.
     
    # mkdir /usr/local/www/lg.muff.kiev.ua

     

  2. Копируем файлы lg.cgi, lg.conf и favicon.ico в этот каталог. Выставляем необходимые права доступа:
     

    # cp lg.cgi lg.conf favicon.ico /usr/local/www/lg.muff.kiev.ua
    # chown www:www /usr/local/www/lg.muff.kiev.ua/
    # chmod 644 /usr/local/www/lg.muff.kiev.ua/*
    # chmod 755 /usr/local/www/lg.muff.kiev.ua/lg.cgi

     

  3. Отредактируем httpd.conf. Я создал отдельный виртуалхост следующего содержания:
     
    <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>

     

  4. Перезапустим веб-сервер, чтобы изменения вступили в силу:
     
    # apachectl graceful

     

  5. Хм... Как бы все готово. Проверяем, что у нас доступно по адресу http://lg.muff.kiev.ua. Результат следующий:
     
     Картинки

    Чтобы немного "приукрасить" ресурс, разместим на странице логотип. Для этого необходимо поместить в каталог файл изображения с названием logo.gif. Еще необходимо внести некоторые изменения в файл lg.conf, но это немного попозже.
     

  6. Дальше, следуя инструкции, загружаем файлы созласно указанного списка и размещаем их в каталоге Looking Glass-а:
     

    # wget http://www.version6.net/lg/db/as.txt
    # wget http://www.version6.net/lg/db/as-apnic.txt
    # wget http://www.version6.net/lg/db/as-arin.txt
    # wget http://www.version6.net/lg/db/as-ripe.txt
    # wget http://www.version6.net/lg/db/as-jpnic.txt
    # wget http://www.version6.net/lg/db/as-lacnic.txt
    # wget http://www.version6.net/lg/db/communities.txt

    Необходимо в файле as.txt раскомментировать строки, начинающиеся с "include".
    Также, в случае необходимости (например, при использовании локальных номеров автономных систем)  необходимо задать номер автономной системы в файле as.txt. В моем частном случае номер автономной системы 12998 (ISP BGNet). Он прописан  в файле as-ripe.txt, поэтому просто закомментируем прописанную в файле as.txt строку.
     

  7. Следующий шаг - создание базы данных. Для этого воспользуемся скриптом makedb.pl. Скопируем его в директорию LG и дадим команду на запуск:
     

    # cp makedb.pl /usr/local/www/lg.muff.kiev.ua
    # ./makedb.pl

    Reading AS names..
     Read AS list from as.txt..
     OK
    Reading community names..
     Read community list from communities.txt..
     OK
    Setting up database..
     OK

    Результатом команды будет файл as.db.
     

  8. Чтобы быть уверенным, что все необходимые файлы доступны на чтение веб-сервером, добавим необходимые права:
     

    # chmod a+r  /usr/local/www/lg.muff.kiev.ua/*.txt
    # chmod a+r  /usr/local/www/lg.muff.kiev.ua/as.db

Кажется все инструкции выполнены...  Дальше необходимо создать файл логов и выставить необходимые права:

# touch /var/log/lg.log

Теперь советую отредактировать конфигурационный файл lg.conf, задать необходимые переменные и описать роутеры, к которым будем подключаться. Для теста вписал три роутера:

  1. ROUTER1: UA-IX. Clients. FreeBSD Router.
  2. ROUTER2: UA-IX. Clients. Cisco Router.
  3. ROUTER3: Full-View. Clients. FreeBSD Router.

Листинг 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

После удаления этого блока все заработало. Итак, финиш...  Ну и напоследок, скриншоты, как все это выглядит:

 

Вот так выглядит интерфейс:

Looking Glass

Вывод команды show ip bgp 31.43.184.0/24:

Looking Glass

Вывод команды show ip bgp neighbors 193.227.206.46 advertised-routes:

Looking Glass

Вывод команды show ip bgp summary:

Looking Glass

Обзор нейбора (show ip bgp neighbors 193.227.207.14):

Looking Glass

Обзор приходящих от нейбора роутов (show ip bgp neighbors 193.227.206.29 routes):

Looking Glass

Вывод команды ping 8.8.8.8:

Looking Glass

Вывод команды traceroute 8.8.8.8:

Looking Glass

 

Ваша оценка: Нет Средняя: 3.7 (3 голоса)

Вставай, Україно!

Литература

Хорошо негру-администратору: после бессонной ночи за компом кругов под глазами не видно!