Добрый день! Есть 2 провайдера интернет. Нашел на форуме скрипт переключения.
Запихнул его в крон. Поставил на обработку каждую минуту.
Но есть проблема, когда падает основной провайдер, инет не переключается на резерв.
Переключаю вручную на резервный. И когда появляется основной, то скрипт без проблем переключает на него.
То есть скрипт может переключать только обратно.
Вот сам конфиг скрипта
#!/bin/sh
IP1=222.222.222.222
IP2=222.222.222.222
GW1=222.222.222.222
GW2=222.222.222.222
seychas=`date "+%Y-%m-%d %H:%M:%S"`
TARGET=ya.ru
/sbin/ping -q -S $IP1 -c 5 $TARGET > /dev/null 2>&1
if [ $? != 0 ]; then
/sbin/ping -q -S $IP2 -c 5 $TARGET > /dev/null 2>&1
if [ $? = 0 ]; then
if [ ! -f /tmp/gw.changed ]; then
/sbin/route change default $GW2 && /bin/echo "${seychas} router now ${GW2}" >> /root/gw.log && touch /tmp/gw.changed
fi
fi
else
if [ -f /tmp/gw.changed ]; then
/sbin/route change default $GW1 && /bin/echo "${seychas} router now ${GW1}" >> /root/gw.log && rm /tmp/gw.changed
fi
fi
скрипт переключения между 2 ISP
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
-
- рядовой
- Сообщения: 19
- Зарегистрирован: 2012-07-12 21:57:33
Re: скрипт переключения между 2 ISP
Код: Выделить всё
#!/bin/sh
#PATH=”/sbin:/usr/bin”
#Main Provider Router
ISP1=10.10.1.40
#Second Provider Router
ISP2=10.10.1.1
#IF 2 channels don’t work - will be set it
DEFAULT_ISP=10.10.1.1
# IP’s for ping
OVER_ISP1=213.180.213.75
OVER_ISP2=74.125.232.55
# ip style-print
ip_style="10.48.96.216"
#ip shadow home
ip_shome="10.48.88.15"
# Local source IP’s
IP1=10.10.1.45
IP2=10.10.1.45
#add routing summa
#route add 10.48.0.0 $ISP1 -static
# Verify routes
netstat -nr | grep ${OVER_ISP1} >/dev/null 2>&1
if [ $? != 0 ]; then
echo “Add static route to ${OVER_ISP1} via ${ISP1}”
route add $OVER_ISP1 $ISP1 -static
kill -9 portfwd
fi
netstat -nr | grep ${OVER_ISP2} >/dev/null 2>&1
if [ $? != 0 ]; then
echo “Add static route to ${OVER_ISP2} via ${ISP2}”
route add ${OVER_ISP2} ${ISP2} -static
/usr/local/sbin/portfwd -c /usr/local/etc/portfw.cfg
fi
# What is work now
current_now=`netstat -nr | grep default | awk ‘{print $2}’`
echo -n “ping over ISP1:”
ping -c 2 -S ${IP1} ${OVER_ISP1} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo ” [OK]”
ISP1_stat=0
else
lse
echo ” [FAILED]”
ISP1_stat=1
#mail -s “Main Internet-channel FAILED” root < /dev/null
fi
echo -n “ping over ISP2:”
ping -c 1 -S ${IP2} ${OVER_ISP2} >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo ” [OK]”
ISP2_stat=0
else
echo ” [FAILED]”
ISP2_stat=1
#mail -s “Second Internet-channel FAILED” root < /dev/null
fi
#if [ '${ISP1_stat} -eq 1 -a ${ISP2_stat} -eq 0 -a ${current_now}' = '${ISP1}' ]; then
# Для FreeBSD8 строка такая:
if [ ${ISP1_stat} -eq 1 -a ${ISP2_stat} -eq 0 -a "${current_now} -eq ${ISP1}" ]; then
echo “ISP1 suck”
route delete default
#echo 1
route add default ${ISP2}
mail -s “Main Internet-channel FAILED - switching to Second” root < /dev/null
#echo 1
fi
#if [ '${ISP1_stat} -eq 0 -a ${current_now}' != '${ISP1}' ]; then
# Для FreeBSD8:
if [ ${ISP1_stat} -eq 0 -a "${current_now} -ne ${ISP1}" ]; then
echo “Back to ISP1?
route delete default
route add default ${ISP1}
#/usr/local/etc/racoon/setkey.conf
#mail -s “Main Internet-channel OK - switching back to MAIN” root < /dev/null
fi
если что не ясно спрашивай подскажу.