Quagga - превращение сервера в полнофункциональный маршрутизатор

  • 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:0c2cf996fcd35cbd77a6de7241c724d9' 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\">Немного общей информации для начала... Quagga &mdash; пакет программного обеспечения, позволяющий превратить обычный компьютер в&nbsp;маршрутизатор TCP/IP с поддержкой разнообразных протоколов маршрутизации. Поддерживаются следующие протоколы маршрутизации:</p>\n<ul>\n<li class=\"rtejustify\"><a href=\"#zebra\">статическая маршрутизация</a>;</li>\n<li class=\"rtejustify\">Routing Information Protocol (RIP): v1, v2, v3</li>\n<li class=\"rtejustify\"><a href=\"#OSPF\">Open Shortest Path First</a> (OSPF): v2, v3</li>\n<li class=\"rtejustify\"><a href=\"http://muff.kiev.ua/content/nastraivaem-border-gateway-protocol-c-pomoshchyu-quagga\">Border Gateway Protocol</a> (BGP): v4</li>\n</ul>\n<p class=\"rtejustify\">На данный момент возникла необходимость в статической маршрутизации. Соответственно опишем установку и начальную&nbsp;настройку&nbsp;<a name=\"zebra\">демона zebra</a>.</p>\n<p class=\"rtejustify\">Устанавливаем&nbsp;quagga &nbsp;из портов:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>cd /usr/ports/net/quagga/</strong><br />\n # <strong>make install clean</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Как видим из предложеных опций,&nbsp;в последних версиях появилась поддержка протокола IS-IS (Intermediate System to Intermediate System). Но поскольку поддержка данного протокола находится в експериментальном режиме,&nbsp;то пока откажемся от его установки. По ходу, все опции оставляю по умолчанию.</p>\n<p class=\"rtejustify\">По завершению установки добавляем необходимость запуска quagga&nbsp;и демона&nbsp;zebra&nbsp;при запуске системы:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><strong># cat /etc/rc.conf | grep quagga</strong><br />\n quagga_enable=&quot;YES&quot;<br />\n quagga_daemons=&quot;zebra&quot;<br />\n watchquagga_enable=&quot;YES&quot;<br />\n watchquagga_flags=&quot;-dz -R &#39;/usr/local/sbin/zebra -d;&#39; zebra&quot;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Watchquagga - это дополнение к quagga. Мониторит доступность указаных демонов quagga, и в случае,&nbsp;если демон не отвечает - перезапускает его.</p>\n<p class=\"rtejustify\">Создаем каталог, где будут лежать конфигурационные файлы наших демонов маршрутизации. Создаем файл конфигурации для демона статической маршрутизации zebra, выставляем необходимые права:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>touch /usr/local/etc/quagga/zebra.conf</strong><br />\n # <strong>chmod 600 /usr/local/etc/quagga/zebra.conf</strong><br />\n # <strong>chown -R&nbsp;quagga:quagga /usr/local/etc/quagga</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 class=\"rtejustify\"><strong># cat /usr/local/etc/quagga/zebra.conf</strong></p>\n<p class=\"rtejustify\">password pass1<br />\n enable password pass2</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Дело в том, что подключаться к демону маршрутизации для последующей настройки мы будем по виртуальному терминалу, а в случае, если пароль не задан, то терминал это подключение отбросит (требование безопасности).</p>\n<p class=\"rtejustify\">Кстати, не помешает создать каталог, где будет хранить свои логи quagga:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>mkdir /var/log/quagga</strong><br />\n # <strong>chown quagga:quagga /var/log/quagga</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Запускаем quagga и пробуем подключиться к запущеному демону:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div class=\"rtejustify\"><strong># sh /usr/local/etc/rc.d/quagga start</strong><br />\n Starting zebra.<br />\n <strong># telnet localhost zebra</strong><br />\n Trying 127.0.0.1...<br />\n Connected to localhost.<br />\n Escape character is &#39;^]&#39;.</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Hello, this is Quagga (version 0.99.14).<br />\n Copyright 1996-2005 Kunihiro Ishiguro, et al.</div>\n<div class=\"rtejustify\">\n User Access Verification</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Password:<br />\n <strong>&gt; enable</strong><br />\n Password:<br />\n <strong>#</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Консоль управления полностью идентична Cisco CLI. Поэтому многим будет знакома. Если же нет - смотрите комментарии к набираемым командам (выделено красным).</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 class=\"rtejustify\"><span style=\"color:#ff0000\">Перейдем в режим глобальной конфигурации:</span></p>\n<p class=\"rtejustify\"><strong># configure terminal</strong></p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Обратите внимание на то, что изменилось приглашение командной строки. Это как-бы подсказка,&nbsp;в каком режиме мы находимся...</span></p>\n<p class=\"rtejustify\">(config)#</p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Первым делом дадим название даному роутеру, чтобы не путаться в последующем,&nbsp;в каком из демонов маршрутизации мы находимся, и на каком из роутеров. Обычно название я даю, исходя из демона маршрутизации и названия роутера.</span></p>\n<p class=\"rtejustify\"><strong>(config)# hostname zebra-router</strong><br />\n zebra-router(config)#</p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Кстати, имейте ввиду, что все изменения конфигурации вступают в силу немедленно после ввода команды!</span></p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Дальше рекомендую включить сервис шифрования паролей. Не очень хорошо то, что они хранятся в открытом виде.</span></p>\n<p class=\"rtejustify\"><strong>zebra-router(config)# service password-encryption</strong></p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Настроим логирование:</span></p>\n<p class=\"rtejustify\"><strong>zebra-router(config)# log stdout</strong></p>\n<p class=\"rtejustify\"><strong>zebra-router(config)# log file /var/log/quagga/zebra.log</strong></p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Вроде пока все гуд... Сохраним текущую конфигурацию (ведь на данный момент все изменения хранятся в оперативной памяти).</span></p>\n<p class=\"rtejustify\"><strong>zebra-router(config)# exit</strong></p>\n<p class=\"rtejustify\"><strong>zebra-router# write memory</strong><br />\n Configuration saved to /usr/local/etc/quagga/zebra.conf</p>\n<p class=\"rtejustify\"><span style=\"color:#ff0000\">Посмотрим что у нас получилось:</span></p>\n<p class=\"rtejustify\"><strong>zebra-router# show startup-config</strong><br />\n !<br />\n ! Zebra configuration saved from vty<br />\n !&nbsp;&nbsp; 2009/09/22 15:24:43<br />\n !<br />\n hostname zebra-router<br />\n password 8 bJdy6GGF2QMTg<br />\n enable password 8 4D7IL52lMQH4Q<br />\n log file /var/log/quagga/zebra.log<br />\n log stdout<br />\n service password-encryption<br />\n !<br />\n interface em0<br />\n &nbsp;ipv6 nd suppress-ra<br />\n !<br />\n interface lo0<br />\n !<br />\n interface re0<br />\n &nbsp;ipv6 nd suppress-ra<br />\n !<br />\n interface re1<br />\n &nbsp;ipv6 nd suppress-ra<br />\n !<br />\n ip forwarding<br />\n !<br />\n !<br />\n line vty<br />\n !<br />\n zebra-router#</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 class=\"rtejustify\">zebra-router(config)# ip route x.x.x.x/x y.y.y.y</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Где x.x.x.x/x - адрес сети, для которой необходимо изменить маршрут, y.y.y.y - адрес следующего хопа (ip следующего маршрутизатора). Вместо ip-адресса следующего хопа можно указывать интерфейс, в который перенаправлять пакеты.</p>\n<p class=\"rtejustify\">Просмотреть текущий маршрут к хосту можно командой show ip route (чтобы просмотреть все текущие маршруты, команду набиваем без ключей):</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong>zebra-router# show ip route y.y.y.y</strong><br />\n Routing entry for&nbsp;x.x.x.x/x<br />\n &nbsp; Known via &quot;static&quot;, distance 1, metric 0, best<br />\n &nbsp; * z.z.z.z, via tun0</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;<strong><a name=\"OSPF\">OSPF</a></strong></p>\n<p class=\"rtejustify\">Собственно продолжим &quot;терзать&quot; quagga. Есть необходимость организовать обмен маршрутами между роутерами по протоколу <a href=\"http://ru.wikipedia.org/wiki/OSPF\">ospf</a>. Будем отталкиваться от того,&nbsp;что сам пакет уже установлен,&nbsp;zebra работает...</p>\n<p class=\"rtejustify\">Создадим файл конфигурации демона ospfd, выставим ему необходимые права:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"># <strong>touch /usr/local/etc/quagga/ospfd.conf</strong><br />\n # <strong>chmod 600 /usr/local/etc/quagga/ospfd.conf</strong><br />\n # <strong>chown -R&nbsp;quagga:quagga /usr/local/etc/quagga</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Наполняем файл следующим содержимым:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtejustify\"><strong># cat /usr/local/etc/quagga/ospfd.conf</strong></p>\n<p class=\"rtejustify\">password pass1<br />\n enable password pass2</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Изменяем данные rc.conf (добавляем поддержку ospfd):</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong># cat /etc/rc.conf | grep quagga</strong><br />\n quagga_enable=&quot;YES&quot;<br />\n quagga_daemons=&quot;zebra ospfd&quot;<br />\n watchquagga_enable=&quot;YES&quot;<br />\n watchquagga_flags=&quot;-dz -R &#39;/usr/local/sbin/zebra -d; /usr/local/sbin/ospfd -d;&#39; zebra ospfd&quot;<br />\n &nbsp;</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Перезапускаем quagga:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td class=\"rtejustify\"><strong># sh /usr/local/etc/rc.d/quagga restart</strong><br />\n ospfd not running? (check /var/run/quagga/ospfd.pid).<br />\n Stopping zebra.<br />\n Starting zebra.<br />\n 2010/02/17 22:54:51 ZEBRA: can&#39;t get ip6forwarding value<br />\n Starting ospfd.</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Подключаемся к терминалу и приступаем к конфигурированию ospfd (соединение между роутерами реализовано по виртуальному интерфейсу vlan17).</p>\n<p class=\"rtejustify\">Конфигурация Router1</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div class=\"rtejustify\"><strong># telnet localhost ospfd</strong><br />\n Trying ::1...<br />\n Trying 127.0.0.1...<br />\n Connected to localhost.<br />\n Escape character is &#39;^]&#39;.</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Hello, this is Quagga (version 0.99.15).<br />\n Copyright 1996-2005 Kunihiro Ishiguro, et al.</div>\n<div class=\"rtejustify\">\n User Access Verification</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Password:<br />\n <strong>&gt; enable</strong><br />\n Password:</div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Переходим в режим глобальной конфигурации</span><br />\n <strong># configure terminal</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Даем название роутеру,&nbsp;отталкиваясь от демона маршрутизации:</span><br />\n <strong>(config)# hostname ospfd-router1</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Включаем шифрование паролей</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config)# service password-encryption</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Настройка логирования</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config)# log stdout</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config)# log file /var/log/quagga/ospfd.log</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Переход к конфигурированию демона ospf</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config)# router ospf</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Задаем идентификатор маршрутизатора</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-router)# ospf router-id 10.16.17.1</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Какие сети будем анонсировать (непосредственно подключенные и статические маршруты)</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-router)# redistribute connected</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-router)# redistribute static</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Задаем идентификатор области,&nbsp;в которую входит подключенная сеть</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-router)# network 10.16.17.0/29 area 0.0.0.0</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-router)# exit</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Приступаем к настройке интерфейса</span><br />\n <strong>ospfd-router1(config)# interface vlan17</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Описание. Нужная штука, особенно если OSPF поднят на нескольких интерфейсах</span><br />\n <strong>ospfd-router1(config-if)# description Internal_interface</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Задаем &quot;стоимость&quot; канала. Используется при вычислении оптимального маршрута</span></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-if)# ip ospf cost 100</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Промежуток времени в секундах, между передачей интерфейсом двух последовательных пакетов Hello </span><br />\n <strong>ospfd-router1(config-if)#&nbsp;ip ospf hello-interval 8</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Время в секундах,&nbsp;по истечению которого соседний маршрутизатор считается неработающим. Время исчисляется от момента приема последнего пакета Hello от соседнего маршрутизатора. Значение этого параметра анонсируется в пакетах Hello.</span><br />\n <strong>ospfd-router1(config-if)#&nbsp;ip ospf dead-interval 24</strong></div>\n<div class=\"rtejustify\"><span style=\"color:#ff0000\">Интервал времени в секундах по истечении которого маршрутизатор повторно отправит пакет на который не получил подтверждения о получении</span><br />\n <strong>ospfd-router1(config-if)#&nbsp;ip ospf retransmit-interval 4</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config-if)# exit</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1(config)# exit</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router1# write memory</strong><br />\n Configuration saved to /usr/local/etc/quagga/ospfd.conf<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;По аналогии конфигурируем Router2 (подразумевается, что quagga уже установлена, подготовительные манипуляции завершены,&nbsp;осталось только сконфигурить):</p>\n<p class=\"rtejustify\">&nbsp;</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div class=\"rtejustify\"><strong># telnet localhost ospfd</strong><br />\n Trying ::1...<br />\n Trying 127.0.0.1...<br />\n Connected to localhost.<br />\n Escape character is &#39;^]&#39;.</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Hello, this is Quagga (version 0.99.15).<br />\n Copyright 1996-2005 Kunihiro Ishiguro, et al.</div>\n<div class=\"rtejustify\">\n User Access Verification</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Password:<br />\n <strong>&gt; enable</strong><br />\n Password:<br />\n <strong># configure terminal<br />\n (config)# hostname ospfd-router2</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config)# service password-encryption</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config)# log stdout</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config)# log file /var/log/quagga/ospfd.log</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config)# router ospf</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-router)# ospf router-id 10.16.17.2</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-router)# redistribute connected</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-router)# redistribute static</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-router)# network 10.16.17.0/29 area 0.0.0.0</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-router)# exit</strong><br />\n <strong>ospfd-router2(config)# interface vlan17<br />\n ospfd-router2(config-if)# description Internal_interface</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-if)# ip ospf cost 100<br />\n ospfd-router2(config-if)#&nbsp;ip ospf hello-interval 8<br />\n ospfd-router2(config-if)#&nbsp;ip ospf dead-interval 24<br />\n ospfd-router2(config-if)#&nbsp;ip ospf retransmit-interval 4</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config-if)# exit</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2(config)# exit</strong></div>\n<div class=\"rtejustify\"><strong>ospfd-router2# write memory</strong><br />\n Configuration saved to /usr/local/etc/quagga/ospfd.conf<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Проверим теперь состояние ospf-сесии:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div class=\"rtejustify\"><strong>ospfd-router2# show ip ospf neighbor</strong></div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">&nbsp;&nbsp;&nbsp; Neighbor ID Pri State&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dead Time Address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Interface&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RXmtL RqstL DBsmL<br />\n 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 Full/Backup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18.859s 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vlan17:10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; 0<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Проверим,&nbsp;какие маршруты получены по OSPF:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div class=\"rtejustify\"><strong>ospfd-router2# show ip ospf database</strong></div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OSPF Router with ID (10.16.17.2)</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Router Link States (Area 0.0.0.0)</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Link ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADV Router&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Age&nbsp; Seq#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CkSum&nbsp; Link count<br />\n 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 497 0x80000005 0xf641 1<br />\n 10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 501 0x80000004 0xf63f 1</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Net Link States (Area 0.0.0.0)</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Link ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADV Router&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Age&nbsp; Seq#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CkSum<br />\n 10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 501 0x80000001 0xa303</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AS External Link States</div>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Link ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADV Router&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Age&nbsp; Seq#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CkSum&nbsp; Route<br />\n 10.16.16.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 502 0x80000002 0x5d0a E2 10.16.16.0/24 [0x0]<br />\n 10.16.32.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 502 0x80000002 0xacaa E2 10.16.32.0/24 [0x0]<br />\n 10.16.33.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 502 0x80000002 0xa1b4 E2 10.16.33.0/24 [0x0]<br />\n 192.168.1.0&nbsp;&nbsp;&nbsp;&nbsp; 10.16.17.2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 501 0x80000003 0x8c98 E2 192.168.1.0/24 [0x0]<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Базовая настройка завершена. Более подробно с протоколом OSPF можете ознакомиться <a href=\"http://muff.kiev.ua/files/books/RFC-2328.pdf\">здесь</a>.</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:0c2cf996fcd35cbd77a6de7241c724d9' 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:8b4290fc8e45c7e21a0f1960c6559e8a' 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>Зробів як все написано після всих цих маніпуляций він мені видав що </p>\n<p>&quot;-*-: not found </p>\n<p>password: not found це бредні я назначив&nbsp; <strong>/usr/local/etc/quagga/zebra.conf</strong></p>\n<p>enable: not found <strong>/usr/local/etc/quagga/zebra.conf</strong></p>\n<p>/usr/local/etc/rc.d/quagga: 11: Syntax error:Unterminated quoted string&quot; </p>\n<p>що робити Хелпми плиз</p>\n<p></p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:8b4290fc8e45c7e21a0f1960c6559e8a' 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:1f8eb09453aeb5b82b16b7aa003c7e22' 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>юноша.. </p>\n<p>подивицця на 11 строчку в вашому конфiгу.</p>\n<p>якщо ви знаете украiньску - це не звiльняе вас вiд обовьязку знати англiйську</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:1f8eb09453aeb5b82b16b7aa003c7e22' 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:5c982907ec9b156bc61f3f8606e3dd22' 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>Эту тему даже на <a href=\"http://forum.muff.kiev.ua/index.php?topic=22.msg212\">форуме подняли</a>.</p>\n<p>Но видимо автор не заинтересован в решении проблемы,&nbsp;поскольку конфиг не предоставил,&nbsp;чтобы можно было указать на ошибку...</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:5c982907ec9b156bc61f3f8606e3dd22' 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:b1f58154e0889ad9e13f315115f79cf2' 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>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' 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:45db8b39e9d76c9ed4571119e511782e' 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>да-да..</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:45db8b39e9d76c9ed4571119e511782e' 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:d5ceb4dda44c7eb67da481469622ec8f' 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>Привіт, чи є у вас&nbsp;інформація по налаштування ospf через підключення point-to-point? В даному пості ви розгянули роботу ospf з фізичним підключенням до однієї й тієїж мережі, як же&nbsp;організувати роботу ospf&nbsp;через&nbsp;generic tunnel interface (gif) point-to-point?</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:d5ceb4dda44c7eb67da481469622ec8f' 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:dc2d5b73c4827d3e29c32092c34743d2' 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\">Прописуйте нейборів у конфігу. Тоді OSPF буде працювати по юнікасту, а не по мультикасту. Відповідно все повинно запрацювати.</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:dc2d5b73c4827d3e29c32092c34743d2' 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:b1f58154e0889ad9e13f315115f79cf2' 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>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' 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:4a00c03d47e59856020b093f0a63dc0e' 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>Дякую за відповідь, прописав, але реакції жодної. Глянув на пакети, що проходять через інтерфейс (що дивиться в інтернет) і помітив пакети OSPF (не можу стверджувати,&nbsp;що появились пакети&nbsp;чи їх не було)&nbsp;між хостами, що і є кінцями тунеля:</p>\n<p><a href=\"mailto:root@freebsd:/usr/local/etc/racoon\">root@freebsd:/usr/local/etc/racoon</a> # tcpdump -n -i ng0 host 9.209.29.209</p>\n<p>17:23:22.460261 IP 109.201.232.120 &gt; 9.209.29.209: IP 172.16.1.5 &gt; 224.0.0.5: OSPFv2, Hello, length 44 (ipip-proto-4)</p>\n<p>&nbsp;</p>\n<p>Для повноти картини:</p>\n<p>інтерфейс - інтернета:</p>\n<p><a href=\"mailto:root@freebsd:/usr/local/etc/racoon\">root@freebsd:/usr/local/etc/racoon</a> # ifconfig ng0<br />\nng0: flags=88d1&lt;UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST&gt; metric 0 mtu 1460<br />\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet 109.201.232.120 --&gt; 77.120.32.1 netmask 0xffffffff</p>\n<p>&nbsp;</p>\n<p>інтерфейс тунеля:</p>\n<p><a href=\"mailto:root@freebsd:/usr/local/etc/racoon\">root@freebsd:/usr/local/etc/racoon</a> # ifconfig gif1<br />\ngif1: flags=8051&lt;UP,POINTOPOINT,RUNNING,MULTICAST&gt; metric 0 mtu 1280<br />\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tunnel inet 109.201.232.120 --&gt; 9.209.29.209<br />\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inet 172.16.1.5 --&gt; 172.16.1.6 netmask 0xffffffff<br />\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options=1&lt;ACCEPT_REV_ETHIP_VER&gt;</p>\n<p>&nbsp;</p>\n<p>В документації так і не зрозуміло, чи пакети OSPF повинні інкапсолюватися в тунель чи будуть працювати поверх?&nbsp;Якщо інкапсулюватись&nbsp;тоді до політик тунеля потрібно добавити правило на зразок:&nbsp;</p>\n<p>spdadd 172.16.1.5/32 224.0.0.5/32 any -P out ipsec esp/tunnel/109.201.232.120-9.209.29.209/require;<br />\nspdadd 224.0.0.5/32 172.16.1.6/32 any -P in ipsec esp/tunnel/9.209.29.209-109.201.232.120/require;</p>\n<p>172.16.1.6/32 - тому що пакети будуть ініційовані сусідом.</p>\n<p>&nbsp;</p>\n<p>Прошу допомогти ...</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:4a00c03d47e59856020b093f0a63dc0e' 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:f2c6456d5bdce4cf79f0983bcb189f4f' 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>Піднімайте тему на <a href=\"http://forum.muff.kiev.ua\">форумі</a>, спробуємо&nbsp;<span style=\"line-height:1.4em\">розібратись у ситуації.&nbsp;</span>224.0.0.5 - це мультикаст-адреса. З нею і працює OSPF.</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:f2c6456d5bdce4cf79f0983bcb189f4f' 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:b1f58154e0889ad9e13f315115f79cf2' 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>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' 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:a268590e4162af8ba0408c85df7f799c' 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>Розмістив на форумі:</p>\n<p><a href=\"http://forum.muff.kiev.ua/index.php?topic=136.0\">http://forum.muff.kiev.ua/index.php?topic=136.0</a></p>\n', created = 1767920339, expire = 1768006739, headers = '', serialized = 0 WHERE cid = '2:a268590e4162af8ba0408c85df7f799c' 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 = 1767920339, expire = 1768006739, 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 = 1767920339, expire = 1768006739, 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

Немного общей информации для начала... Quagga — пакет программного обеспечения, позволяющий превратить обычный компьютер в маршрутизатор TCP/IP с поддержкой разнообразных протоколов маршрутизации. Поддерживаются следующие протоколы маршрутизации:

На данный момент возникла необходимость в статической маршрутизации. Соответственно опишем установку и начальную настройку демона zebra.

Устанавливаем quagga  из портов:

# cd /usr/ports/net/quagga/
# make install clean

Как видим из предложеных опций, в последних версиях появилась поддержка протокола IS-IS (Intermediate System to Intermediate System). Но поскольку поддержка данного протокола находится в експериментальном режиме, то пока откажемся от его установки. По ходу, все опции оставляю по умолчанию.

По завершению установки добавляем необходимость запуска quagga и демона zebra при запуске системы:

# cat /etc/rc.conf | grep quagga
quagga_enable="YES"
quagga_daemons="zebra"
watchquagga_enable="YES"
watchquagga_flags="-dz -R '/usr/local/sbin/zebra -d;' zebra"

Watchquagga - это дополнение к quagga. Мониторит доступность указаных демонов quagga, и в случае, если демон не отвечает - перезапускает его.

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

# touch /usr/local/etc/quagga/zebra.conf
# chmod 600 /usr/local/etc/quagga/zebra.conf
# chown -R quagga:quagga /usr/local/etc/quagga

 Наполняем файл следующим содержимым:

# cat /usr/local/etc/quagga/zebra.conf

password pass1
enable password pass2

Дело в том, что подключаться к демону маршрутизации для последующей настройки мы будем по виртуальному терминалу, а в случае, если пароль не задан, то терминал это подключение отбросит (требование безопасности).

Кстати, не помешает создать каталог, где будет хранить свои логи quagga:

# mkdir /var/log/quagga
# chown quagga:quagga /var/log/quagga

Запускаем quagga и пробуем подключиться к запущеному демону:

# sh /usr/local/etc/rc.d/quagga start
Starting zebra.
# telnet localhost zebra
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
 
Hello, this is Quagga (version 0.99.14).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
 
Password:
> enable
Password:
#

Консоль управления полностью идентична Cisco CLI. Поэтому многим будет знакома. Если же нет - смотрите комментарии к набираемым командам (выделено красным).

Итак, мы уже подлючены к виртуальной консоли. Начнем настройку:

Перейдем в режим глобальной конфигурации:

# configure terminal

Обратите внимание на то, что изменилось приглашение командной строки. Это как-бы подсказка, в каком режиме мы находимся...

(config)#

Первым делом дадим название даному роутеру, чтобы не путаться в последующем, в каком из демонов маршрутизации мы находимся, и на каком из роутеров. Обычно название я даю, исходя из демона маршрутизации и названия роутера.

(config)# hostname zebra-router
zebra-router(config)#

Кстати, имейте ввиду, что все изменения конфигурации вступают в силу немедленно после ввода команды!

Дальше рекомендую включить сервис шифрования паролей. Не очень хорошо то, что они хранятся в открытом виде.

zebra-router(config)# service password-encryption

Настроим логирование:

zebra-router(config)# log stdout

zebra-router(config)# log file /var/log/quagga/zebra.log

Вроде пока все гуд... Сохраним текущую конфигурацию (ведь на данный момент все изменения хранятся в оперативной памяти).

zebra-router(config)# exit

zebra-router# write memory
Configuration saved to /usr/local/etc/quagga/zebra.conf

Посмотрим что у нас получилось:

zebra-router# show startup-config
!
! Zebra configuration saved from vty
!   2009/09/22 15:24:43
!
hostname zebra-router
password 8 bJdy6GGF2QMTg
enable password 8 4D7IL52lMQH4Q
log file /var/log/quagga/zebra.log
log stdout
service password-encryption
!
interface em0
 ipv6 nd suppress-ra
!
interface lo0
!
interface re0
 ipv6 nd suppress-ra
!
interface re1
 ipv6 nd suppress-ra
!
ip forwarding
!
!
line vty
!
zebra-router#

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

zebra-router(config)# ip route x.x.x.x/x y.y.y.y

Где x.x.x.x/x - адрес сети, для которой необходимо изменить маршрут, y.y.y.y - адрес следующего хопа (ip следующего маршрутизатора). Вместо ip-адресса следующего хопа можно указывать интерфейс, в который перенаправлять пакеты.

Просмотреть текущий маршрут к хосту можно командой show ip route (чтобы просмотреть все текущие маршруты, команду набиваем без ключей):

zebra-router# show ip route y.y.y.y
Routing entry for x.x.x.x/x
  Known via "static", distance 1, metric 0, best
  * z.z.z.z, via tun0

 OSPF

Собственно продолжим "терзать" quagga. Есть необходимость организовать обмен маршрутами между роутерами по протоколу ospf. Будем отталкиваться от того, что сам пакет уже установлен, zebra работает...

Создадим файл конфигурации демона ospfd, выставим ему необходимые права:

# touch /usr/local/etc/quagga/ospfd.conf
# chmod 600 /usr/local/etc/quagga/ospfd.conf
# chown -R quagga:quagga /usr/local/etc/quagga

Наполняем файл следующим содержимым:

# cat /usr/local/etc/quagga/ospfd.conf

password pass1
enable password pass2

Изменяем данные rc.conf (добавляем поддержку ospfd):

# cat /etc/rc.conf | grep quagga
quagga_enable="YES"
quagga_daemons="zebra ospfd"
watchquagga_enable="YES"
watchquagga_flags="-dz -R '/usr/local/sbin/zebra -d; /usr/local/sbin/ospfd -d;' zebra ospfd"
 

Перезапускаем quagga:

# sh /usr/local/etc/rc.d/quagga restart
ospfd not running? (check /var/run/quagga/ospfd.pid).
Stopping zebra.
Starting zebra.
2010/02/17 22:54:51 ZEBRA: can't get ip6forwarding value
Starting ospfd.

Подключаемся к терминалу и приступаем к конфигурированию ospfd (соединение между роутерами реализовано по виртуальному интерфейсу vlan17).

Конфигурация Router1

# telnet localhost ospfd
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
 
Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
 
Password:
> enable
Password:
Переходим в режим глобальной конфигурации
# configure terminal
Даем название роутеру, отталкиваясь от демона маршрутизации:
(config)# hostname ospfd-router1
Включаем шифрование паролей
ospfd-router1(config)# service password-encryption
Настройка логирования
ospfd-router1(config)# log stdout
ospfd-router1(config)# log file /var/log/quagga/ospfd.log
Переход к конфигурированию демона ospf
ospfd-router1(config)# router ospf
Задаем идентификатор маршрутизатора
ospfd-router1(config-router)# ospf router-id 10.16.17.1
Какие сети будем анонсировать (непосредственно подключенные и статические маршруты)
ospfd-router1(config-router)# redistribute connected
ospfd-router1(config-router)# redistribute static
Задаем идентификатор области, в которую входит подключенная сеть
ospfd-router1(config-router)# network 10.16.17.0/29 area 0.0.0.0
ospfd-router1(config-router)# exit
Приступаем к настройке интерфейса
ospfd-router1(config)# interface vlan17
Описание. Нужная штука, особенно если OSPF поднят на нескольких интерфейсах
ospfd-router1(config-if)# description Internal_interface
Задаем "стоимость" канала. Используется при вычислении оптимального маршрута
ospfd-router1(config-if)# ip ospf cost 100
Промежуток времени в секундах, между передачей интерфейсом двух последовательных пакетов Hello
ospfd-router1(config-if)# ip ospf hello-interval 8
Время в секундах, по истечению которого соседний маршрутизатор считается неработающим. Время исчисляется от момента приема последнего пакета Hello от соседнего маршрутизатора. Значение этого параметра анонсируется в пакетах Hello.
ospfd-router1(config-if)# ip ospf dead-interval 24
Интервал времени в секундах по истечении которого маршрутизатор повторно отправит пакет на который не получил подтверждения о получении
ospfd-router1(config-if)# ip ospf retransmit-interval 4
ospfd-router1(config-if)# exit
ospfd-router1(config)# exit
ospfd-router1# write memory
Configuration saved to /usr/local/etc/quagga/ospfd.conf
 

 По аналогии конфигурируем Router2 (подразумевается, что quagga уже установлена, подготовительные манипуляции завершены, осталось только сконфигурить):

 

# telnet localhost ospfd
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
 
Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
 
Password:
> enable
Password:
# configure terminal
(config)# hostname ospfd-router2
ospfd-router2(config)# service password-encryption
ospfd-router2(config)# log stdout
ospfd-router2(config)# log file /var/log/quagga/ospfd.log
ospfd-router2(config)# router ospf
ospfd-router2(config-router)# ospf router-id 10.16.17.2
ospfd-router2(config-router)# redistribute connected
ospfd-router2(config-router)# redistribute static
ospfd-router2(config-router)# network 10.16.17.0/29 area 0.0.0.0
ospfd-router2(config-router)# exit
ospfd-router2(config)# interface vlan17
ospfd-router2(config-if)# description Internal_interface
ospfd-router2(config-if)# ip ospf cost 100
ospfd-router2(config-if)# ip ospf hello-interval 8
ospfd-router2(config-if)# ip ospf dead-interval 24
ospfd-router2(config-if)# ip ospf retransmit-interval 4
ospfd-router2(config-if)# exit
ospfd-router2(config)# exit
ospfd-router2# write memory
Configuration saved to /usr/local/etc/quagga/ospfd.conf
 

Проверим теперь состояние ospf-сесии:

ospfd-router2# show ip ospf neighbor
 
    Neighbor ID Pri State           Dead Time Address         Interface            RXmtL RqstL DBsmL
10.16.17.1        1 Full/Backup       18.859s 10.16.17.1      vlan17:10.16.17.2        0     0     0
 

Проверим, какие маршруты получены по OSPF:

ospfd-router2# show ip ospf database
 
       OSPF Router with ID (10.16.17.2)
 
                Router Link States (Area 0.0.0.0)
 
Link ID         ADV Router      Age  Seq#       CkSum  Link count
10.16.17.1      10.16.17.1       497 0x80000005 0xf641 1
10.16.17.2      10.16.17.2       501 0x80000004 0xf63f 1
 
                Net Link States (Area 0.0.0.0)
 
Link ID         ADV Router      Age  Seq#       CkSum
10.16.17.2      10.16.17.2       501 0x80000001 0xa303
 
                AS External Link States
 
Link ID         ADV Router      Age  Seq#       CkSum  Route
10.16.16.0      10.16.17.1       502 0x80000002 0x5d0a E2 10.16.16.0/24 [0x0]
10.16.32.0      10.16.17.1       502 0x80000002 0xacaa E2 10.16.32.0/24 [0x0]
10.16.33.0      10.16.17.1       502 0x80000002 0xa1b4 E2 10.16.33.0/24 [0x0]
192.168.1.0     10.16.17.2       501 0x80000003 0x8c98 E2 192.168.1.0/24 [0x0]
 

Базовая настройка завершена. Более подробно с протоколом OSPF можете ознакомиться здесь.

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

Зробів як все написано після

Зробів як все написано після всих цих маніпуляций він мені видав що

"-*-: not found

password: not found це бредні я назначив  /usr/local/etc/quagga/zebra.conf

enable: not found /usr/local/etc/quagga/zebra.conf

/usr/local/etc/rc.d/quagga: 11: Syntax error:Unterminated quoted string"

що робити Хелпми плиз

юноша.. подивицця на 11

юноша..

подивицця на 11 строчку в вашому конфiгу.

якщо ви знаете украiньску - це не звiльняе вас вiд обовьязку знати англiйську

Эту тему даже на форуме

Эту тему даже на форуме подняли.

Но видимо автор не заинтересован в решении проблемы, поскольку конфиг не предоставил, чтобы можно было указать на ошибку...

да-да..

да-да..

Re: Quagga - превращение сервера в полнофункциональный ...

Привіт, чи є у вас інформація по налаштування ospf через підключення point-to-point? В даному пості ви розгянули роботу ospf з фізичним підключенням до однієї й тієїж мережі, як же організувати роботу ospf через generic tunnel interface (gif) point-to-point?

Re: Quagga - превращение сервера в полнофункциональный ...

Прописуйте нейборів у конфігу. Тоді OSPF буде працювати по юнікасту, а не по мультикасту. Відповідно все повинно запрацювати.

Re: Quagga - превращение сервера в полнофункциональный ...

Дякую за відповідь, прописав, але реакції жодної. Глянув на пакети, що проходять через інтерфейс (що дивиться в інтернет) і помітив пакети OSPF (не можу стверджувати, що появились пакети чи їх не було) між хостами, що і є кінцями тунеля:

root@freebsd:/usr/local/etc/racoon # tcpdump -n -i ng0 host 9.209.29.209

17:23:22.460261 IP 109.201.232.120 > 9.209.29.209: IP 172.16.1.5 > 224.0.0.5: OSPFv2, Hello, length 44 (ipip-proto-4)

 

Для повноти картини:

інтерфейс - інтернета:

root@freebsd:/usr/local/etc/racoon # ifconfig ng0
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
        inet 109.201.232.120 --> 77.120.32.1 netmask 0xffffffff

 

інтерфейс тунеля:

root@freebsd:/usr/local/etc/racoon # ifconfig gif1
gif1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1280
        tunnel inet 109.201.232.120 --> 9.209.29.209
        inet 172.16.1.5 --> 172.16.1.6 netmask 0xffffffff
        options=1<ACCEPT_REV_ETHIP_VER>

 

В документації так і не зрозуміло, чи пакети OSPF повинні інкапсолюватися в тунель чи будуть працювати поверх? Якщо інкапсулюватись тоді до політик тунеля потрібно добавити правило на зразок: 

spdadd 172.16.1.5/32 224.0.0.5/32 any -P out ipsec esp/tunnel/109.201.232.120-9.209.29.209/require;
spdadd 224.0.0.5/32 172.16.1.6/32 any -P in ipsec esp/tunnel/9.209.29.209-109.201.232.120/require;

172.16.1.6/32 - тому що пакети будуть ініційовані сусідом.

 

Прошу допомогти ...

Re: Quagga - превращение сервера в полнофункциональный ...

Піднімайте тему на форумі, спробуємо розібратись у ситуації. 224.0.0.5 - це мультикаст-адреса. З нею і працює OSPF.

Re: Quagga - превращение сервера в полнофункциональный ...

Розмістив на форумі:

http://forum.muff.kiev.ua/index.php?topic=136.0

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

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

Литература

У кoмпании Microsoft пoявилась нoвая услуга. Они предлагают рекламнoе местo в сooбщениях oб oшибках прoграммы.