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

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

            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/

    Options -Indexes FollowSymLinks MultiViews
    AllowOverride All

  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.plReading 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 получился следующего содержания:

<strong><?xml version="1.0" encoding="ISO-8859-1" ?></strong><strong> </strong>
<strong><LG_Conf_File></strong>

<strong>         <LGURL>/</LGURL>
        <LogFile>/var/log/lg.log</LogFile>
        <ASList>./as.db</ASList>
        <LogoImage Align="center" Link="</strong><a href="http://lg.muff.kiev.ua/%22%3Elogo.gif%3C/LogoImage"><strong>http://lg.muff.kiev.ua/">logo.gif</LogoImage</strong></a><strong>>
        <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></strong>
<strong>         <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>
<span style="color: #00ccff;">                </Router></span></strong>
<strong>         </Router_List></strong>
<strong>
</LG_Conf_File></strong>

Казалось бы, что на этом все… Однако нашел еще несколько костылей.

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

Источник http://muff.kiev.ua/content/bgp-looking-glass-dlya-bgp-routera

Запись опубликована в рубрике *Unix,*Linux, *Сети. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91