Мы планируем соединить серверы в двух стойках между собой. Предположим, у нас есть 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
Короче говоря, вы должны поместить все свои интерфейсы в одну и ту же область, чтобы получить желаемое поведение. Маршрутизация между областями довольно сложна внутри, и вся концепция областей существует в первую очередь для разделения больших сетей маршрутизации на сети с управляемым размером. Это не ваш случай, если количество маршрутизаторов, которые вы указываете, верное.