Quagga - перетворення сервера на повнофункціональний маршрутизатор
Трохи спільної інформації спершу. 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 і пробуємо підключитися до запущеного демона:
Отже, ми вже під'єднані до віртуальної консолі. Почнемо налаштування:
Перейдемо в режим глобальної конфігурації:
# configure terminal
Зверніть увагу, що змінилося запрошення командного рядка. Це ніби підказка, в якому режимі ми знаходимося.
Насамперед дамо назву даному роутеру, щоб не плутатися в подальшому, в якому з демонів маршрутизації ми знаходимося, і на якому з роутерів. Зазвичай назву я даю, виходячи з демона маршрутизації та назви роутера.
(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 fromvty ! 2009/09/22 15:24:43 ! hostname zebra-router password 8 bJdy6GGF2QMTg enable password 8 4D7IL52lMQH4Q log файл /var/log/quagga/zebra.log log stdout service password-encryption ! interface em0 ipv6 nd suppress-ra ! interface lo0 ! interface re0 ipv6 і suppress-ra ! interface re1 ipv6 nd suppress-ra ! ip forwarding ! ! line vty ! zebra-router#
Щоб додати статичний маршрут, необхідно в режимі глобальної конфігурації набити команду:
Власне продовжимо "терзати" 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):
Підключаємось до терміналу та приступаємо до конфігурування ospfd (з'єднання між роутерами реалізовано за віртуальним інтерфейсом vlan17).
За аналогією конфігуруємо Router2 (маю на увазі, що quagga вже встановлена, підготовчі маніпуляції завершені, залишилося тільки налаштувати):