Я хочу, чтобы мое клиентское приложение OpenVPN (запущенное на A) завершало работу, когда оно не может подключиться (или переподключиться) к серверу (B). Я использую протокол UDP. И A, и B являются системами Linux.
Точнее, я продолжаю получать следующие записи журнала.
UDPv4 link remote: [AF_INET] [remote-ip]
TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
TLS Error: TLS handshake failed
SIGUSR1[soft,tls-error] received, process restarting
Re-using SSL/TLS context
UDPv4 link remote: [AF_INET] [remote-ip]
...
Я знаю, почему A не может получить доступ к B. Вместо того, чтобы перезапустить процесс, я хочу, чтобы OpenVPN вышел.
В man openvpn
есть несколько опций, которые я пытался использовать.
- Я установил
resolv-retry
для небольшого числа (не работает, адрес B может быть разрешен). - Я установил
connect-retry-max
на 1 (не работает, я использую UDP).
Я предполагаю, что я смотрю на какой-то вариант ....
РЕДАКТИРОВАТЬ: Справочная информация: я хочу сделать это из-за пробивки отверстия брандмауэра. B находится за брандмауэром, который разрешает только трафик SSH. Перед запуском клиента на A я запускаю скрипт, который позволяет трафику перетекать с A на B. Это работает некоторое время, но дыру в брандмауэре B необходимо «обновить» через некоторое время (например, из-за проблем с сетью, но также из-за того, что A имеет динамический IP-адрес). Поскольку нет никакого up-pre
аналога down-pre
и я не хочу применять патч и сам компилировать OpenVPN, чтобы добавить его, я запускаю скрипт-обертку на A, который пробивает новую дыру (в брандмауэре B ) и запускает OpenVPN каждый раз, когда OpenVPN останавливается. Это работало бы, если бы только OpenVPN должен был выйти ....