ВАРИАНТ РЕШЕНИЯ ПРОБЛЕМЫ ЗАВИСШИХ НА САЙТЕ СЕССИЙ для OpenWRT
#!/bin/sh
PRS1="172.16.0.1"
if (! ping -q -c 3 ${PRS1} > /dev/null 2>&1)
then
wget-ssl --no-check-certificate --spider 'https://vpnki.ru/index.php?option=com_api&format=raw&app=webservices&resource=ovpn&action=restart&key=01234567890123456789' > /dev/null
ifdown ovpn
sleep 10
ifup ovpn
route add -net 172.16.0.0 netmask 255.255.0.0 gw 172.16.0.1
route add -net 192.168.XX.0 netmask 255.255.255.0 gw 172.16.xx.xx
sleep 30
/etc/init.d/led restart
fi
Cкрипт перегруза интерфейса и сервера по отсутствию пинга на туннель
Этот вариант через WGET
(так же возможен очень похожий вариант через CURL)
1.
Сперва в нем 3 раза выполняется пинг на туннель.
если пинга нет (скажем, завис интерфейс на сайте), то:
2.
выполняется сброс туннеля на сервере через API функцию.
для выполнения этого сброса надо поставить пакет wget
ставим пакет wget
opkg update
opkg install wget
тут есть нюанс!
в openWRT уже присутствует wget как symlink на busybox
нам он не нужен, а нужен нам именно отдельный пакет.
после установки пакета wget к нему надо обращаться как wget-ssl
(а обращение к symlink на busybox будет через wget, но оно нам НЕ надо)
что есть что поможет разобраться команда:
ls -la $(which wget)
сброс туннеля через wget-ssl с ключами --no-check-certificate --spider
(не-проверка сертификата httpS , spider - это просто проверка наличия записи на сервере, без скачивания)
не забываем прописать в скрипт СВОЙ ВАЛИДНЫЙ ключ API с сайта VPNKI
3.
выключаем интерфейс OpenVPN, именно по имени интерфейса (то, что у вас прописано вместо ovpn, а не по имени девайса, т.е. НЕ как tun0)
4.
включаем интерфейс OpenVPN
5.
восстанавливаем стат. маршруты, т.к. они слетят после манипуляций с интерфейсом.
вместо 192.168.ХХ.0 указываем вашу удаленную сеть, вместо 172.16.хх.хх - ваш гейт со страницы настроек на сайте VPNKI
6.
если переназначали светодиоды в роутере, то возвращаем их нормальную работу через led restart
Данный скрипт у меня выполняется раз в 3мин по шэдулеру.
Работает устойчиво. При ручной эмуляции проблемы зависших сессии данный скрипт перегружает туннели без проблем.
Как проявит себя при возможных зависаниях сессий на сервере - покажет время.