LINUX.ORG.RU

Автоматическое переподключение openvpn

 , ,


2

3

Ситуация такая: ноут, на ноуте рач линукс, в нём systemd, в systemd netctl, в котором через wifi-menu настроено подключение к вафле, которую раздаёт моя труба. Так же есть openvpn, чей клиентский конфиг лежит в /etc/openvpn/client/dell.conf. Так как сижу я в достаточно интересном месте, переодически у трубы отваливается 4g сетка, из за этого отваливается туннель. Самое интересное, остаются все маршруты, сервис видится как активный, но соединения нет. Нужно чтоб каждый раз когда такое происходит сервис автоматом перезапускался. И если можно, то без костылей вроде баш скриптов, которые пингуют что-то там, а если оно не пингуется, то запускается перезапуск. Наверняка openvpn это сам умеет. Или systemd. Или что-то ещё. Не хочу в чистой системе костыли городить.

Deleted

Ответ на: комментарий от Radjah

После обрыва всякие NAT'ы по дороге могут забыть про существование соединения и выделить тебе новый порт, отчего сервер OpenVPN офигеет и откажется дальше разговаривать.

intelfx ★★★★★
()
Ответ на: комментарий от Deleted

Keepalive-пинг каждые 5 секунд, если в течение 10 секунд никто не отвечает — переподнять туннель.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Deleted

Кстати, если ты можешь менять конфиг сервера — попробуй лучше дописать туда директиву float (принимать пакеты с любого адреса, если они валидные и правильно подписаны, а не только с того, с которого открыто соединение).

Если я правильно понимаю причину неработоспособности туннеля после восстановления 4G-соединения (выше описал гипотезу), то должно помочь и без keepalive'а (так будет даже лучше, т. к. туннель не рвётся).

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от intelfx

Это не скажется негативно каким либо образом? Хотя вообще для мобильного соединения выглядит актуально, да.

Deleted
()
Ответ на: комментарий от intelfx

Экспериментировал с keepalive, дописанным в клиентский конфиг, время разное пробовал - не помогает. После ошибки в соединении каждые 60 секунд что-то пытается сделать:

Fri Feb  3 08:14:10 2017 Socket Buffers: R=[212992->212992] S=[212992->212992]
Fri Feb  3 08:14:10 2017 UDPv4 link local (bound): [undef]
Fri Feb  3 08:14:10 2017 UDPv4 link remote: [AF_INET]xxx.xxx.xxx.xxx:yyyyy
Fri Feb  3 08:15:10 2017 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Fri Feb  3 08:15:10 2017 TLS Error: TLS handshake failed
Fri Feb  3 08:15:10 2017 SIGUSR1[soft,tls-error] received, process restarting
Fri Feb  3 08:15:10 2017 Restart pause, 2 second(s)
Fri Feb  3 08:15:12 2017 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
но соединение не восстанавливается. Если прервать через ^+c, то новое соединение можно тут же установить. Что предумать можно?

rmu ★★
()
Ответ на: комментарий от rmu

Инструкция float в серверном конфиге тоже не помогает: через какое-то время, после ошибки

Authenticate/Decrypt packet error: bad packet ID (may be a replay): [ #2621987 ] -- see the man page entry for --no-replay and --replay-window for more info or silence this warning with --mute-replay-warnings
интернет отваливается.

rmu ★★
()
Ответ на: комментарий от rmu

Прописал keepalive в конфиг на сервере. Результат - через несколько часов начинается такая же ерунда. Пока руками не прервать и не переподключиться - соединение само не восстановится.

rmu ★★
()
Ответ на: комментарий от intelfx

Ну ладно, спасибо. Остаётся, видимо, придумывать костыль, наподобие этого, только для арчика.

rmu ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.