Главная > Freebsd, Всякое важное > Скрипт переключения на резервный канал интернета

Скрипт переключения на резервный канал интернета

3 744

Возникла необходимость реализовать автоматическое переключения шлюза Freebsd на резервный канал инета (с тарификацией трафика), когда основной (безлимитный) вдруг умирает. Тем самым - обеспечить стабильную связь последством OpenVPN с центральным офисом. Ну..и уведомить админа о переключении, чтобы знал куда стучаться ssh, если что.

# cat /etc/ch.sh

#!/bin/sh
# Основной шлюз
GW1=11.0.0.1
# Резервный шлюз
GW2=10.10.10.10
# IP сетевой карты, смотрящей в сторону основного канала интернета
eth0=11.0.0.2
# IP хоста в интернете, который мы будем проверять
dst1=8.8.8.8
inet=0
# делаем машрут на хост в инете через основной канал интернета
#/sbin/route add -host $dst1 $GW1
inet=$(ping -c 1 -S $eth0 $dst1 | grep "64 bytes from" | awk '{print $2}' )
if [ "$inet" != "bytes" ]; then
if [ -f /etc/ppp/reserv.gw ]; then
echo Already switched to secondary channel 
else
/sbin/route delete default
/sbin/route add default $GW2
#/sbin/route flush
/sbin/route add -host $dst1 $GW1
/usr/local/etc/rc.d/openvpn restart
touch /etc/ppp/reserv.gw
echo "Primary inet DEAD ->  Go to secondary" | mail admin@admin.admin
fi
else
if [ -f /etc/ppp/reserv.gw ]; then
/sbin/route delete default
/sbin/route add default $GW1
/sbin/route del -host $dst1 $GW1
/usr/local/etc/rc.d/openvpn restart
echo "Primary inet restored -> Go to Primary inet" | mail admin@admin.admin
rm /etc/ppp/reserv.gw
fi
fi

ну и ставим задание в cron:

# Route check and change
*       *       *       *       *       root   /etc/ch.sh
  1. 23 июня 2014 в 10:41 | #1

    @Antonio
    Да, но вот посмотрите как можно обойти ограничение крона минутой: http://nixtalk.com/cron1sec

  2. 22 июня 2014 в 18:07 | #2

    Полезно, жаль в самой системе никак не догадаются сделать какого-нибудь штатного демона, так как мучать крон не очень, да и 1 минута многовато, хочется быстрее

  1. Пока что нет уведомлений.

.