вторник, 11 августа 2009 г.

Резервирование канала

Скрипт для выяснения работоспособности канала и переключения на запасной в случае неработоспособности основного
#!/bin/sh
GW1=1.1.1.1
GW2=2.2.2.2
/sbin/ping -q -c 1 $GW1 > /dev/null 2>&1
if [ $? != 0 ]; then
/sbin/ping -q -c 1 $GW2 > /dev/null 2>&1
if [ $? = 0 ]; then
if [ ! -f /tmp/gw.changed ]; then
/sbin/route change default $GW2 \
&& touch /tmp/gw.changed
fi
fi
else
if [ -f /tmp/gw.changed ]; then
/sbin/route change default $GW1 \
&& rm /tmp/gw.changed
fi
fi
То есть мы просто «пингуем» шлюз на стороне основного провайдера, и если он оказывается недоступен, то:
-проверяем работоспособность резервного канала;
-перенастраиваем маршрут по умолчанию на шлюз резервного канала;
-оставляем «метку» /tmp/gw.changed, сигнализирующую о смене шлюза.

При следующем выполнении (например, скрипт можно запускать по cron раз в минуту), если GW1 в норме и есть «метка», то возвращаем основной шлюз на место. Если оба шлюза недоступны, текущее состояние не меняем.

Комментариев нет:

Отправить комментарий