OpenVPN не подключается автоматически

1

Я запускаю OpenVPN в Win7 в качестве службы в фоновом режиме. В течение многих лет это работало нормально, соединение всегда автоматически восстанавливалось, и так и должно быть.

Однако вдруг это уже не работает! Когда соединение обрывается (например, ноутбук переходит в режим ожидания), мне всегда нужно останавливать и перезапускать службу, чтобы восстановить соединение.

Соединение устанавливается успешно:

Wed Jun 24 10:26:58 2015 OpenVPN 2.3.7 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Jun  8 2015
Wed Jun 24 10:26:58 2015 library versions: OpenSSL 1.0.1m 19 Mar 2015, LZO 2.08
Wed Jun 24 10:26:58 2015 UDPv4 link local (bound): [undef]
Wed Jun 24 10:26:58 2015 UDPv4 link remote: [AF_INET]53.33.202.70:500
Wed Jun 24 10:26:58 2015 VERIFY OK: depth=1, C=US, ST=CA, L=SF, emailAddress=admin@localhost
Wed Jun 24 10:26:58 2015 VERIFY OK: nsCertType=SERVER
Wed Jun 24 10:26:58 2015 VERIFY OK: depth=0, C=US, ST=CA, L=SF, emailAddress=admin@localhost
Wed Jun 24 10:26:59 2015 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Wed Jun 24 10:26:59 2015 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Jun 24 10:26:59 2015 NOTE: --mute triggered...
Wed Jun 24 10:26:59 2015 3 variation(s) on previous 5 message(s) suppressed by --mute
Wed Jun 24 10:26:59 2015 [server] Peer Connection Initiated with [AF_INET]53.33.202.70:500
Wed Jun 24 10:27:01 2015 open_tun, tt->ipv6=0
Wed Jun 24 10:27:01 2015 TAP-WIN32 device [OpenVPN] opened: \\.\Global\{6C3D3D35-743E-4239-BFD8-143837009EBE}.tap
Wed Jun 24 10:27:01 2015 Sleeping for 3 seconds...
Wed Jun 24 10:27:04 2015 Successful ARP Flush on interface [28] {6C3D3D35-743E-4239-BFD8-143837009EBE}
Wed Jun 24 10:27:09 2015 Initialization Sequence Completed

Затем, когда соединение прерывается, вместо повторного подключения в журналах появляется следующее:

Wed Jun 24 11:14:40 2015 TUN/TAP I/O operation aborted, exiting
Wed Jun 24 11:14:40 2015 Exiting due to fatal error
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Warning: route gateway is not reachable on any active network adapters: 192.168.200.120
Wed Jun 24 11:14:40 2015 env_block: add PATH=C:\Windows\System32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
Wed Jun 24 11:14:40 2015 Closing TUN/TAP interface

Как это исправить?

DIVB
источник
Не связано ли это с отключением сетевой карты из-за энергосбережения?
Мачей Асемблер
Я не знаю, что ты имеешь в виду. Дело в том, что всякий раз, когда соединение отключено, оно должно автоматически подключиться снова. И это происходило годами, кроме как сейчас.
divB
Сообщение об ошибке объясняет все это - tun / tap не может выполнить операцию ввода-вывода и не может получить доступ к шлюзу по маршруту по умолчанию. Ваши сетевые адаптеры должны быть как-то отключены. Я могу предложить отключить функции энергосбережения на сетевых картах в диспетчере устройств или сбросить стек IPv4 на Windows7
Maciej Asembler
Не для меня ;-) Часто бывают случаи, когда доступ к шлюзу невозможен. Тем не менее, в этом случае он должен продолжать пытаться, пока это не так (насколько я знаю). Также какие сетевые адаптеры? Адаптеры Wi-Fi и LAN или виртуальный тюн / тап? Я думаю, что нет, но даже если - я думаю, что он должен продолжать пытаться, пока они снова не станут активными. И я до сих пор удивляюсь, почему это только начало происходить ...
divB
1
openvpnserv2.exeбыл интегрирован в OpenVPN 2.4. Попробуйте это.
arrowd

Ответы:

2

Есть некоторые известные проблемы с клиентом Open VPN, когда Windows переходит в спящий режим или режим гибернации. Служба openvpn убита сетью, которая отключается в спящем режиме и не перезапускается. Увидеть :

Решение состоит в том, чтобы использовать другой диспетчер окон службы, который проверяет, действительно ли работает клиентская служба openvpn, и перезапустить его, если это не так. Команда OpenVPN работает над интеграцией NSSM (Non-Sucking Service Manager) в установку клиента OpenVPN для Windows, чтобы обеспечить эффективное управление службами, но оно пока не включено (в настоящее время версия 2.8.3).

Как объяснено на следующей странице вики:

Вы должны использовать NSSM для управления сервисом openvpn:

  1. Загрузите двоичный файл NSSM в папку «C: \ Program Files \ OpenVPN \ bin»
  2. Создайте пакетный файл, содержащий:

    set BASEDIR=C:\Program Files\OpenVPN
    set NSSM=%BASEDIR%\bin\nssm.exe
    set CONN=community.ovpn
    "%NSSM%" status %CONN% > NUL 2>&1
    if %ERRORLEVEL% EQU 3 (
        "%NSSM%" install %CONN% "%BASEDIR%\bin\openvpn.exe" > NUL 2>&1
    )
    "%NSSM%" set %CONN% AppDirectory "%BASEDIR%\config" > NUL 2>&1
    "%NSSM%" set %CONN% AppParameters "--config %CONN%" > NUL 2>&1
    "%NSSM%" set %CONN% AppStdin "%BASEDIR%\log\%CONN%.log" > NUL 2>&1
    "%NSSM%" set %CONN% AppStdout "%BASEDIR%\log\%CONN%.log" > NUL 2>&1
    "%NSSM%" set %CONN% AppStderr "%BASEDIR%\log\%CONN%.log" > NUL 2>&1
    "%NSSM%" set %CONN% AppRotateFiles 1 > NUL 2>&1
    "%NSSM%" set %CONN% DependOnService Dhcp tap0901 > NUL 2>&1
    "%NSSM%" start %CONN% > NUL 2>&1 
    
  3. Внимательно проверьте переменную CONN: это должна быть ваша конфигурация клиента openvpn.

  4. Запустите пакетный файл в терминале командной строки, запущенном от имени администратора.

Это установит сервис nssm, ищущий конфигурацию вашего открытого клиента vpn. Вам нужно запустить этот пакет только один раз.

Если вы по ошибке добавили службу nssm в рабочую конфигурацию vpn, вы можете удалить ее с помощью следующей команды.

nssm remove <connection>

Например :

nssm remove community.ovpn

Проверьте вкладку процесса диспетчера задач, чтобы увидеть, какие процессы nssm запущены.

Габриэль Гленн
источник