Немного общей информации для начала... Quagga — пакет программного обеспечения, позволяющий превратить обычный компьютер в маршрутизатор TCP/IP с поддержкой разнообразных протоколов маршрутизации. Поддерживаются следующие протоколы маршрутизации:
На данный момент возникла необходимость в статической маршрутизации. Соответственно опишем установку и начальную настройку демона zebra.
Устанавливаем quagga из портов:
# cd /usr/ports/net/quagga/ |
Как видим из предложеных опций, в последних версиях появилась поддержка протокола IS-IS (Intermediate System to Intermediate System). Но поскольку поддержка данного протокола находится в експериментальном режиме, то пока откажемся от его установки. По ходу, все опции оставляю по умолчанию.
По завершению установки добавляем необходимость запуска quagga и демона zebra при запуске системы:
# cat /etc/rc.conf | grep quagga |
Watchquagga - это дополнение к quagga. Мониторит доступность указаных демонов quagga, и в случае, если демон не отвечает - перезапускает его.
Создаем каталог, где будут лежать конфигурационные файлы наших демонов маршрутизации. Создаем файл конфигурации для демона статической маршрутизации zebra, выставляем необходимые права:
# touch /usr/local/etc/quagga/zebra.conf |
Наполняем файл следующим содержимым:
# cat /usr/local/etc/quagga/zebra.conf password pass1 |
Дело в том, что подключаться к демону маршрутизации для последующей настройки мы будем по виртуальному терминалу, а в случае, если пароль не задан, то терминал это подключение отбросит (требование безопасности).
Кстати, не помешает создать каталог, где будет хранить свои логи quagga:
# mkdir /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)# 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 Посмотрим что у нас получилось: zebra-router# show startup-config |
Для добавления статического маршрута необходимо в режиме глобальной конфигурации набить команду:
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 |
Собственно продолжим "терзать" quagga. Есть необходимость организовать обмен маршрутами между роутерами по протоколу ospf. Будем отталкиваться от того, что сам пакет уже установлен, zebra работает...
Создадим файл конфигурации демона ospfd, выставим ему необходимые права:
# touch /usr/local/etc/quagga/ospfd.conf |
Наполняем файл следующим содержимым:
# cat /usr/local/etc/quagga/ospfd.conf password pass1 |
Изменяем данные 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 можете ознакомиться здесь.
Зробів як все написано після
Зробів як все написано після всих цих маніпуляций він мені видав що
"-*-: 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