Автор Тема: Автоподъём VPN  (Прочитано 1936 раз)

Оффлайн Cool_Lamer

  • Давно тут
  • **
  • Сообщений: 473
Автоподъём VPN
« : 19.11.2017 13:47:42 »
Такой вопрос.
VPN коннект периодически отваливается, временно написал костыль и добавил в cron, который пингует шлюз и в случае его недоступности подключает vpn и добавляет маршрут для него
Код: [Выделить]
pon myvpn
route add 10.50.10.2 gw 10.50.9.1

В процессе курения узнал, что для автоподнятия при старте системы можно добавить в /interfaces
Код: [Выделить]
# VPN
auto myvpn
post-up route add 10.50.10.2 gw 10.50.9.1

Что в таком случае будет происходить если vpn упадёт? Будет ли он запущен системой повторно и как быстро?

Оффлайн Cool_Lamer

  • Давно тут
  • **
  • Сообщений: 473
Re: Автоподъём VPN
« Ответ #1 : 22.12.2017 15:47:55 »
Бред спросил или не знает никто?

Оффлайн Dmytro

  • Мастер
  • ***
  • Сообщений: 1 001
Re: Автоподъём VPN
« Ответ #2 : 22.12.2017 16:11:59 »
Наверное, результат будет разный в зависимости от того, как именно он у Вас отваливается. Например, если соединение сохраняется, но перестают бегать пакеты, то переподключения точно не будет.

Все известные мне системы, которые следят за подключениями и автоматически реконнектятся либо меняют маршрут при недоступности шлюза работают примерно также, как Ваш самописный скрипт. Поэтому если Вы довольны результатом, смысла менять что-то не вижу.

Оффлайн Cool_Lamer

  • Давно тут
  • **
  • Сообщений: 473
Re: Автоподъём VPN
« Ответ #3 : 25.12.2017 20:15:51 »
Все известные мне системы, которые следят за подключениями и автоматически реконнектятся либо меняют маршрут при недоступности шлюза работают примерно также, как Ваш самописный скрипт. Поэтому если Вы довольны результатом, смысла менять что-то не вижу.

Нравится, но не очень))
Автоматом не очень срабатывает. Запуская скрипт руками он работает на ура. Но через cron почему-то иногда не срабатывает, приходится заходить и запускать руками.
#!/bin/bash


host="10.54.8.1"
com1="pon vpn"
com2="route add 10.54.10.2 gw 10.54.8.1"
com3="poff"
logfile="/var/log/check.log"

# Пингуем хост
ping -c 3 -n -q $host >> /dev/null

rez=$?
if [ $rez != 0 ]; then

    # Делаем запись в лог
    echo `date +'%Y/%m/%d %H:%M:%S'` Host VPN not available >> $logfile
    # Отключаем VPN для перестраховки, подключаем VPN и добавляем маршрут
    $com3 >> /dev/null
sleep 3
    $com1 >> /dev/null
sleep 10
    $com2 >> /dev/null

# Если же всё хорошо
else
    # Передаём привет маме
    echo `date +'%Y/%m/%d %H:%M:%S'` Host ERIP OK >> $logfile

fi

*/3 * * * * root /usr/local/bin/check_vpn.sh > /dev/null
Может в скрипт что не так?
« Последнее редактирование: 26.12.2017 06:46:00 от sb »

Оффлайн ASte

  • Мастер
  • ***
  • Сообщений: 1 549
Re: Автоподъём VPN
« Ответ #4 : 25.12.2017 21:34:15 »
Но через cron почему-то иногда не срабатывает
Сначала нужно определить - не срабатывает потому что по какой-то причине не запускается, или запускается но не детектит проблему с vpn. Поставьте еще логгирование запуска скрипта в самом начале для отладки, и попробуйте вывод ping тоже сохранить в лог а не выбрасывать его в null, чтобы понять что происходит при "несрабатывании".

Оффлайн asy

  • alt linux team
  • ***
  • Сообщений: 8 099
Re: Автоподъём VPN
« Ответ #5 : 25.12.2017 22:22:45 »
А что за VPN ? У OpenVPN есть опция persist-tun, например.

Оффлайн Cool_Lamer

  • Давно тут
  • **
  • Сообщений: 473
Re: Автоподъём VPN
« Ответ #6 : 26.06.2018 10:46:37 »
Забросил это дело ввиду другой текучки и новых "приключений". А проблема то осталась.

Сначала нужно определить - не срабатывает потому что по какой-то причине не запускается, или запускается но не детектит проблему с vpn. Поставьте еще логгирование запуска скрипта в самом начале для отладки, и попробуйте вывод ping тоже сохранить в лог а не выбрасывать его в null, чтобы понять что происходит при "несрабатывании".
Загадка в том, что он то срабатывает, в лог сообщения соответствующие пишет, но переподключение не делает, а вот если запустить скрипт вручную под судо, он отрабатывает как надо, а через cron нет.

А что за VPN ? У OpenVPN есть опция persist-tun, например.
pptp-linux