Назад | Перейти на главную страницу

Обнаружение мертвого шлюза в Linux

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

Никогда не пробовал, но это не выглядит сложным и кажется более удобным, чем сценарий.