Мне нужно настроить обнаружение мертвого шлюза на Linux-сервере с тремя сетевыми интерфейсами. Единственные руководства, которые я нашел до сих пор по этой теме, подразумевают исправление ядра, что мы не очень хотим делать. Есть ли другой путь?
Спасибо.
Отредактировано для уточнения
3 интерфейса: 1 Ethernet, 1 Wi-Fi и 1 модем 3G. Проводное соединение является основным, а два других используются для резервного копирования, а модем 3G является последним ресурсом.
Высокая доступность не является проблемой, поскольку мы можем позволить себе отключение на короткие периоды времени.
Ящик одновременно является клиентским (отправляет данные на центральный сервер) и сервером (центральный сервер может изменять свою конфигурацию) и делает общедоступным свой текущий IP-адрес с помощью механизма, подобного dyndns.
В конце у нас будут сотни ящиков, отправляющих отчеты на один центральный сервер, поэтому обслуживание ящиков должно быть минимальным.
Если шлюз отвечает на запросы ICMP, вы можете использовать команду ping:
ping -qc 4 $GATE1 > /dev/null
if [ "$?" -ne 0 ];
ping -qc 4 GATE2 > /dev/null
if [ "$?" -ne 0 ];
ping -qc 4 $GATE3 > /dev/null
if [ "$?" -ne 0 ];
ip route del default;ip route add default via $GATE3
else
echo "Three gateway down!"
fi
else
ip route del default;ip route add default via $GATE2
fi
Если шлюз не отвечает на запросы ICMP, измените «ping -qc 4» на «ping -qc 4 -I IP_OF_INTERFACE_TO_GATE_N 8.8.8.8»
Почему бы не запустить рип или другой протокол маршрутизации? Это именно для чего они предназначены. Quagga работает в Linux (среди прочего) и очень хорошо реализует ряд этих протоколов.
В своих системах я использую Ucarp чтобы управлять виртуальным IP-адресом и затем рекламировать виртуальный адрес в качестве шлюза для моих клиентов через DHCP. Затем настоящие шлюзы используют rip, чтобы решить, что на самом деле делать с получаемыми ими пакетами.
iproute2 имеет параметр «ip monitor», который может отслеживать состояние маршрута и при необходимости изменять его.
Никогда не пробовал, но это не выглядит сложным и кажется более удобным, чем сценарий.