автоматическая смена каналов в инет на шлюзе ?

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
24rus
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-09-27 16:04:59
Откуда: Красноярск
Контактная информация:

автоматическая смена каналов в инет на шлюзе ?

Непрочитанное сообщение 24rus » 2009-04-22 7:00:31

Hi All 8)

Есть шлюз на 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. Кто и как решал подобные задачи ?
Последний раз редактировалось 24rus 2009-04-22 10:39:04, всего редактировалось 1 раз.
Show must go on !

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: автоматическая смена каналов в инет на шлюзе ?

Непрочитанное сообщение f_andrey » 2009-04-22 7:10:13

Оформляйте сообщения по человечески, юзайте кнопочку

Код: Выделить всё

.
Тема 1000 раз обсуждена, и рассмотрена со всех сторон юзайте поиск по сайту и форуму :st:  :st:  :st:
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

ashota
ефрейтор
Сообщения: 54
Зарегистрирован: 2009-03-20 11:00:41
Откуда: Москва
Контактная информация:

Re: автоматическая смена каналов в инет на шлюзе ?

Непрочитанное сообщение ashota » 2009-04-23 12:35:29

Перл скрипт. Вместо 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


Аватара пользователя
Cancer
Гл. Кастратор
Сообщения: 1269
Зарегистрирован: 2008-03-25 12:21:36
Откуда: г. Ростов-на-Дону
Контактная информация:

Re: автоматическая смена каналов в инет на шлюзе ?

Непрочитанное сообщение Cancer » 2010-08-22 18:06:51

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

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

Re: автоматическая смена каналов в инет на шлюзе ?

Непрочитанное сообщение vadim64 » 2010-08-23 7:55:17

Блин, а метрика чем не канает?
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.