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 вже встановлена, підготовчі маніпуляції завершені, залишилося тільки налаштувати):