Маршрутизация с Quagga и OpenVPN
Мы планируем соединить серверы в две стойки друг с другом. Предположим, у нас есть 5 серверов в каждой стойке, связанных быстрым переключателем. Каждый сервер имеет 1 Гбит интернет-канала связи.
Следующее может быть очень глупым, но работа в сети не моя область знаний, поэтому мне нужна ваша помощь.
Мы создаем несколько соединений OpenVPN (см. Прикрепленное изображение, "синие облака" - это сети VPN), потому что мы хотим использовать полное соединение 1 Гбит между ними. Но если один сервер выйдет из строя, мы по-прежнему хотим работающее соединение между двумя стойками.
Итак, что мы сделали:
1. Сконфигурируйте OpenVPN между каждым сервером S[1-5] и C[1-5], создав виртуальную сеть 10.0.5x.0/24. (Это уже работает)
2. Установите и настройте Quagga с OSPF для объявления маршрутов. Мы сделали это для каждого узла, так что каждый может быть маршрутизатором для кого-то другого (нам не нужен только один единственный шлюз, потому что это ограничило бы соединение между стойками только 1 Гбит, верно?!)
3. Quagga теперь объявляет маршруты, и каждый может пинговать всех остальных (также работает)
Теперь игра начинается: мы снимаем C4, и маршруты обновляются соответственно (говоря об OSPF и quagga). Но что происходит сейчас, если мы попытаемся пропинговать с S4 до C5, потребуется какой-то маршрут, который, по мнению C5, не является лучшим (это мое понимание сетевой настройки rp_filter linux на 1). Маршрут, который мы видим в tcpdump: S4 -> S3 -> C3 -> C5. Лучшим маршрутом будет S4 -> S5 -> C5.
Если мы установим для rp_filter значение 2, пинг сработает, но будет неправильно разрешать неоптимальные маршруты? Мы подумали, что OSPF поможет вам найти наилучший (самый короткий маршрут)? Но мы предполагаем, что мы неправильно настроили Quagga / OSPFd.
Вот изображение топологии, которую мы имеем в виду: топология
Файл ospfd.conf выглядит следующим образом
interface eth0
interface bond0
interface tun0
router ospf
router-id 10.0.1.4
network 10.0.1.0/24 area 0
network 10.0.54.0/24 area 1
redistribute static
zebra.conf:
interface bond0
link-detect
interface tun0
link-detect
1 ответ
Короче говоря, вы должны поместить все свои интерфейсы в одну область, чтобы получить желаемое поведение. Внутренняя маршрутизация довольно сложна внутренне, и вся концепция областей существует главным образом ради разделения больших сетей маршрутизации на управляемые сети. Это не ваш случай, если вы указали правильное количество маршрутизаторов.