Страница 1 из 1
автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2009-04-22 7:00:31
24rus
Hi All
Есть шлюз на FreeBSD 7.0, фаер PF, есть 2 канала в интернет (условно: основной и резервный).
Как правильно реализовать автоматическое переключение с основного канала на резервный в случае его падения и обратно?
------
Я пока рассматриваю такой вариант: "pf примерно такого содержания"
Код: Выделить всё
#--------------
ext1="xl0"
ext2=''xl2"
int1="re0"
$lan_net=''XX.XX.XX.XX''
$nat_ip="XX.XX.XX.XX"
#------------
scrub on { $ext1, $ext2, $int1 } all
rdr on { $ext1, $ext2} inet proto tcp from any to any port rdp -> $server port rdp
nat on $ext1 from $nat_ip to any -> $ext1
nat on $ext2 from $nat_ip to any -> $ext2
#---------
block in all
pass out on { $ext1, $ext2 } proto tcp all modulate state flags S/SA
pass out on {$ext1, $ext2} proto { udp, icmp } all keep state
pass out on $int1 from any to $lan_net
pass in on $int1 from $lan_net to any
И скрипт который проверяет состояние "основного канала" пингом до шлюза провайдера, если пинг нет, то меняеться основной defaultrouter (прописанный в rc.conf) на резервный, и как только пинг вознобновляеться то маршрутизация снова меняеться с резрвной на основную...
------
p.s. Кто и как решал подобные задачи ?
Re: автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2009-04-22 7:10:13
f_andrey
Оформляйте сообщения по человечески, юзайте кнопочку
Код: Выделить всё
.
Тема 1000 раз обсуждена, и рассмотрена со всех сторон юзайте поиск по сайту и форуму :st: :st: :st:
Re: автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2009-04-23 12:35:29
ashota
Перл скрипт. Вместо xxx пропиши свои IP адреса. Переменные IP_UTK и IP_excom можеш поменять. Полностью рабочий. Запусти его через crontab нужное тебе время.
Проверяет, как только линк пропал в первом, переклчается на второе. Но как только в первом появляется, тогда он обратно на первый переключает.
Код: Выделить всё
#!/bin/sh
#net1
IP_UTK="xxx.xxx.xxx.xxx"
#net2
IP_EXCOM="xxx.xxx.xxx.xxx"
LOG="/var/log/ping.log"
IP_GATEWAY="/sbin/route get default | \
/usr/bin/grep gateway | \
/usr/bin/awk '{print $2}'"
/sbin/ping -c 2 ${IP_UTK}
if [ $? != 0 ]
then
/sbin/ping -c 2 ${IP_EXCOM}
if [ $? != 0 ]
then
/bin/echo -n "`/bin/date` ALARM! " >> ${LOG}
/bin/echo "UTK ${IP_UTK} and EXCOM ${IP_EXCOM} not pinget" >> ${LOG}
else
/bin/echo -n "`/bin/date` UTK ${IP_UTK} not pinget," >> ${LOG}
if [ "x${IP_EXCOM}" = "x${IP_GATEWAY}" ]
then
/bin/echo "`/bin/date` Default gateway (EXCOM) ${IP_GATEWAY} - OK" >> ${LOG}
else
/bin/echo -n "`/bin/date` Switch default gateway ${IP_GATEWAY}" >> ${LOG}
/bin/echo " to EXCOM ${IP_EXCOM}" >> ${LOG}
/sbin/route change default ${IP_EXCOM}
/etc/iptonnel_bisert.sh
fi
fi
else
/bin/echo "`/bin/date` UTK ${IP_UTK} ping - OK" >> ${LOG}
if [ "x${IP_UTK}" = "x${IP_GATEWAY}" ]
then
/bin/echo "`/bin/date` Default gateway (UTK) ${IP_GATEWAY} - OK" >> ${LOG}
else
/bin/echo -n "`/bin/date` Switch default gateway ${IP_GATEWAY}" >> ${LOG}
/bin/echo " to UTK ${IP_UTK}" >> ${LOG}
/sbin/route change default ${IP_UTK}
/etc/iptonnel_bisert_utk.sh
fi
fi
Re: автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2010-08-20 10:58:10
м
что за файл /etc/iptonnel_bisert.sh в конфиге?
Re: автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2010-08-22 18:06:51
Cancer
Для работы нужен SendXMPP и pf.conf и pf2.conf (собственно должен уметь настраивать фаер pf)
В переменные GW1 и GW2 подставь свои основные шлюзы.
Настройка SendXMPP написана
тут
Код: Выделить всё
#!/bin/sh
route="/sbin/route"
ping="/sbin/ping"
pfctl="/sbin/pfctl"
grep="/usr/bin/grep"
awk="/usr/bin/awk"
echo="/bin/echo"
sendxmpp="/usr/local/bin/sendxmpp"
cts_down="Internet канал ЦТС ***НЕ РАБОТАЕТ*** ${GW1}"
enforta_down="Internet канал Энфорта ${GW2} тоже не работает"
enforta_used="Теперь используется Internet канал Энфорта ${GW2}"
cts_used="Вернулись на основной Internet канал ЦТС ${GW1}"
# ЦТС
GW1=80.80.xx.xx
# Энфорта
GW2=79.122.xx.x
$ping -q -c 6 $GW1 > /dev/null 2>&1
if [ $? != 0 ]; then
$echo "$cts_down" | $sendxmpp admin@office.jabber.ru -f /root/.sendxmpprc
$ping -q -c 6 $GW2 > /dev/null 2>&1
if [ $? != 0 ]; then
$echo "$enforta_down" | $sendxmpp admin@office.jabber.ru -f /root/.sendxmpprc
exit 1;
fi
$route -n get default | $grep $GW2 > /dev/null 2>&1
if [ $? != 0 ]; then
$route delete default
$route add default $GW2
$pfctl -f /etc/pf2.conf
$echo "$enforta_used" | $sendxmpp admin@office.jabber.ru -f /root/.sendxmpprc
fi
exit 0;
else
$route -n get default | $grep $GW1 > /dev/null 2>&1
if [ $? != 0 ]; then
$route delete default
$route add default $GW1
$pfctl -f /etc/pf.conf
$echo "$cts_used" | $sendxmpp admin@office.jabber.ru -f /root/.sendxmpprc
fi
fi
Запускаю по крону так
Код: Выделить всё
# Атоматическая смена канала "ЦТС"-"Энфорта" (каждые 15 минут с 8:00 до 21:00)
#minute hour mday month wday who command
*/15 8-20 * * * root /usr/SCRIPTS/channel_switch.sh > /dev/null 2>&1
Если у тебя не на сетевых картах IP внешний, а модемы авторизуются пиши мне в ЛС помогу переделать под нужды.
Re: автоматическая смена каналов в инет на шлюзе ?
Добавлено: 2010-08-23 7:55:17
vadim64
Блин, а метрика чем не канает?