Темы
QUAGGA — Протоколы динамической маршрутизации
Настройка
Список некоторых протоколов транспортирного уровня
Дополнительные материалы
Wake on Lan: Удалённое включение компьютера
Синхронизация времени
OpenVPN: Открытая виртуальная частная сеть
WireGuard - VPN нового поколения
BIND — DNS-сервер
ISCSI — Транспортный протокол для SCSI
Dnscrypt — Проксирование dns-трафика
QUAGGA — Протоколы динамической маршрутизации
Quagga — пакет свободного программного обеспечения, поддерживающий протоколы динамической маршрутизации IP. Компьютер с установленным и сконфигурированным пакетом Quagga становится способен использовать любые из нижеследующих протоколов динамической маршрутизации:
Routing Information Protocol (RIP): v1, v2, v3;
Open Shortest Path First (OSPF): v2, v3;
Border Gateway Protocol (BGP): v4;
Intermediate System to Intermediate System (IS-IS);
Protocol Independent Multicast (PIM, только PIM-SSM).
Каждый протокол маршрутизации обслуживается отдельным демоном, с последующим формированием таблиц маршрутизации. Одновременно работать могут несколько разных демонов в сообществе с управляющим демоном zebra.
- ripd — демон обрабатывает протокол RIP для IPv4
- ripngd — демон обрабатывает протокол RIP для IPv6
- ospfd — демон, который поддерживает OSPF v2 для IPv4
- ospf6d — демон, который поддерживает OSPF v3 для IPv6
- isisd — демон, который поддерживает ISIS
- bgpd — поддерживает протокол BGP-4.
- zebra — демон служащий для формирования таблицы маршрутизации и перераспределения маршрутов между различными протоколами.
1) Устанавливаем QUAGGA
- Код: выделить все
dnf install quagga
2) Правим и включаем сервис zebra в автоматическую загрузку
- Код: выделить все
cp /usr/lib/systemd/system/{zebra,ospfd,bgpd}.service /etc/systemd/system/
меняем значение директивы After, добавляем Requires и комментируем или удаляем строку с директивой Wants и Before:
e /etc/systemd/system/zebra.service
- Код: выделить все
#Wants=network.target
#Before=network.target
Requires=NetworkManager-wait-online.service
After=network.target NetworkManager-wait-online.service
А а ospfd.service и bgpd.service приводим к виду директиву After и комментируем или удаляем строку с директивой Before
- Код: выделить все
After=zebra.service
#Before=network.target
и активируем автоматический запуск сервиса zebra, а так же нужных протоколов динамической маршрутизации
- Код: выделить все
systemctl enable zebra.service
systemctl enable bgpd.service
systemctl enable ospfd.service
3) Копируем заготовленный конфигурационный файл для ospfd в /etc/quagga/, который поставляется вместе с пакетом QUAGGA
- Код: выделить все
cp /usr/share/doc/quagga-*/ospfd.conf.sample /etc/quagga/ospfd.conf
Так же по пути /usr/share/doc/quagga-*/ доступны следующие заготовки конфигурационных файлов
- Код: выделить все
babeld.conf.sample ospf6d.conf.sample zebra.conf.sample
bgpd.conf.sample ospfd.conf.sample ripd.conf.sample
4) Устанавливаем права пользователю quagga на скопированные конфигурационные файлы
- Код: выделить все
chown quagga:quagga /etc/quagga/bgpd.conf && chmod 640 /etc/quagga/bgpd.conf
chown quagga:quagga /etc/quagga/isisd.conf && chmod 640 /etc/quagga/isisd.conf
chown quagga:quagga /etc/quagga/ospf6d.conf && chmod 640 /etc/quagga/ospf6d.conf
chown quagga:quagga /etc/quagga/ospfd.conf && chmod 640 /etc/quagga/ospfd.conf
chown quagga:quagga /etc/quagga/pimd.conf && chmod 640 /etc/quagga/pimd.conf
chown quagga:quagga /etc/quagga/ripd.conf && chmod 640 /etc/quagga/ripd.conf
chown quagga:quagga /etc/quagga/ripngd.conf && chmod 640 /etc/quagga/ripngd.conf
chown quagga:quaggavt /etc/quagga/vtysh.conf && chmod 660 /etc/quagga/vtysh.conf
chown quagga:quagga /etc/quagga/zebra.conf && chmod 640 /etc/quagga/zebra.conf
Для возможности сохранения конфигурации в vtysh. В прочим как и следующий пункт (для включенного SElinux)
5) Включаем политику SElinux
- Код: выделить все
setsebool -P zebra_write_config 1
Для проверки установленного значения используем команду
- Код: выделить все
getsebool zebra_write_config
При отключенной политики SElinux наблюдаются проблемы с доступом к файлам конфигурации из утилиты настройки vtysh
- Код: выделить все
srv.google.loc# wr
Building Configuration...
Can't open configuration file /etc/quagga/zebra.conf.I7FcD2.
Can't open configuration file /etc/quagga/ospfd.conf.gTaOz2.
Can't open configuration file /etc/quagga/bgpd.conf.nn5Cs2.
6) Для того чтобы quagga поднимала нужные протоколы динамической маршрутизации их нужно выбрать, отредактировав файл /etc/sysconfig/quagga и оставить только нужный список сервисов в строке
- Код: выделить все
WATCH_DAEMONS="zebra bgpd ospfd"
Так же в этом файле задаётся пользователь и группа от имени которых будут работать сервисы quagga и консоль vtysh
На более новых версиях quagga для этой цели может использоваться файл /etc/quagga/daemons
- Код: выделить все
zebra=yes
bgpd=yes
ospfd=yes
ospf6d=no
ripd=no
ripngd=no
isisd=no
babeld=no
7) Включаем IPv4 Unicast Forwarding:
- Код: выделить все
echo "net.ipv4.conf.all.forwarding=1" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.forwarding=1" >> /etc/sysctl.conf
Включаем IPv4 Multicast Forwarding:
- Код: выделить все
echo "net.ipv4.conf.all.mc_forwarding=1" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.mc_forwarding=1" | >> /etc/sysctl.conf
sysctl -p
Включаем IPv6 Unicast Forwarding:
?????
- Код: выделить все
sed 's/#net.ipv6.conf.all.forwarding=1/net.ipv6.conf.all.forwarding=1/g' /etc/sysctl.conf >> /etc/sysctl.conf
echo "net.ipv6.conf.default.forwarding=1" >> /etc/sysctl.conf
sysctl -p
Данная команда включает не маршрутизацию, а возможность принимать чужие пакеты (пакеты адресующиеся другому хосту) Сам механизм маршрутизации является неотъемлемой частью стека протокола TCP/IP и не может быть выключен.