URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 57410
[ Назад ]

Исходное сообщение
"Отключается РРТР. Как автоматически востанавливать?"

Отправлено schizoid , 15-Июн-05 18:38 
Есть VPN сервер, к которому мы подключаемся при помощи РРТР клиента.

Есть такая беда.
pptp должен быть включён всегда.
А он периодически помирает. Думаю что из-за таймаута установленого на сервере.
Подскажите как сделать так, что бы соединение было хотя бы не постоянное, ну так хоть само подключалось по новой когда умирает, или когда это требуется.


Содержание

Сообщения в этом обсуждении
"Отключается РРТР. Как автоматически востанавливать?"
Отправлено jr , 15-Июн-05 18:58 
>Есть VPN сервер, к которому мы подключаемся при помощи РРТР клиента.
>
>Есть такая беда.
>pptp должен быть включён всегда.
>А он периодически помирает. Думаю что из-за таймаута установленого на сервере.
>Подскажите как сделать так, что бы соединение было хотя бы не постоянное,
>ну так хоть само подключалось по новой когда умирает, или когда
>это требуется.

зависит от реализации ppp...


"Отключается РРТР. Как автоматически востанавливать?"
Отправлено ai , 16-Июн-05 12:33 
>зависит от реализации ppp...
причем тут это???
хотя может и причем-то :-)

вот вам скрипт юзайте на здоровье :)))
#Your MUST set this variables
PEER_FILE=""
DOSYSLOGMSG="1"
PAUSE="15"
##
#Optional variables
PPPD_OPTIONS=""
TESTHOST1=""
TESTHOST2=""
TESTHOST3=""
##
##
#Functions
do_connect()
{
pppd call $PEER_FILE $PPPD_OPTIONS
sleep $PAUSE
#Postconnect actions
route add default gw 10.1.1.1
##
if do_test_connect
then
   return 0
else
   return 1
fi
}
do_kill_connect()
{
killall pppd 2> /dev/null
sleep $PAUSE
}
host_alive()
{
if ping -c 1 -I ppp0 $1 > /dev/null
then
   return 0
else
   return 1
fi
}
do_test_connect()
{
if host_alive ${TESTHOST1:-google.com}
then
   return 0
else
   if host_alive ${TESTHOST2:-kernel.org}
   then
       echo "${TESTHOST1:-google.com} is down"
       return 0
   else
       if host_alive ${TESTHOST3:-ya.ru}
       then
           echo "${TESTHOST1:-google.com} and ${TESTHOST2:-kernel.org} are down"
           return 0
       else
           return 1
       fi
   fi
fi
}
do_logger_test()
{
if [ -f /usr/bin/logger ]
then
   return 0
else
   echo "I can't find /usr/bin/logger . This is part of sys-apps/util-linux... If you want have report in syslog, please install it."
   return 1
fi
}
##
#Body
if do_test_connect
then
#    echo "connected"
   exit 0
else
#    echo "connect not detected"
   do_kill_connect
   if do_connect
   then
       exit 0
   else
       echo "`date` : Connection lost. I\'m CAN\'T connecting."
       [ "$DOSYSLOGMSG" = "1" ] && do_logger_test && logger "`basename $0` Connection lost, can't reconnect."
       exit 1
   fi
fi
##
#EOF

должно работать!!!
нравится?


"Отключается РРТР. Как автоматически востанавливать?"
Отправлено jonatan , 16-Июн-05 13:22 
Не знаю как в BSD, но ppp в linux сам умеет "поднимать" соединение.

/etc/ppp/peers/provider:
pty "pptp 1.2.3.4 --nolaunchpppd"
name CHAP_PAP_LOGIN_NAME # Логин/пароль в pap-secrets/chap-secrets
remotename provider
linkname provider
file /etc/ppp/options.pptp
ipparam provider
persist
maxfail 0
holdoff 30

Запускаем:
pppd call provider


"Отключается РРТР. Как автоматически востанавливать?"
Отправлено ai , 16-Июн-05 13:51 
Да jonatan ты полностью прав!

и еще можно запустить через /etc/inittab
тогда при падении соединение само восстановится!

зато скрипт с тобой может говорить :-)
и если рассмотреть такой вариант:
соединение есть но не работает (и-нета нету) тогда как?


"Отключается РРТР. Как автоматически востанавливать?"
Отправлено jonatan , 16-Июн-05 13:58 
Если нет Инета, то никакие скрипты тут не помогут. Причину все равно будет определять админ :)

"Отключается РРТР. Как автоматически востанавливать?"
Отправлено ai , 16-Июн-05 14:23 
>Если нет Инета, то никакие скрипты тут не помогут. Причину все равно
>будет определять админ :)


я имел ввиду глюк ВПН-а
бывает такое что переконнектился и все ОК
правда очень-очень редко :-)