OpenVPN 不自动重新连接

OpenVPN 不自动重新连接

我在 Win7 中将 OpenVPN 作为后台服务运行。多年来,它一直运行良好,连接始终自动重新建立,这才是应该的。

但是,突然间这不再起作用了!当连接断开时(例如,笔记本电脑进入待机状态),我总是需要停止并重新启动服务才能重新建立连接。

连接建立成功:

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

如何解决这个问题?

答案1

当 Windows 进入睡眠或休眠模式时,Open VPN 客户端会出现一些已知问题。openvpn 服务会因网络在睡眠模式下关闭而终止,并且不会重新启动。请参阅:

解决方案是使用其他服务窗口管理器来检查 openvpn 客户端服务是否正在运行,如果没有,则重新启动它。OpenVPN 团队正在努力将 NSSM(非吸盘服务管理器)集成到 Windows 的 OpenVPN 客户端安装中,以提供高效的服务管理,但尚未包含在内(当前版本为 2.8.3)。

正如以下维基页面所解释的:

您必须使用 NSSM 来管理 openvpn 服务:

  1. 在“C:\Program Files\OpenVPN\bin”文件夹中下载 NSSM 二进制文件
  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 客户端配置。您只需运行此批处理一次。

如果您在工作 vpn 配置上错误地添加了 nssm 服务,则可以使用以下命令将其删除。

nssm remove <connection>

例如 :

nssm remove community.ovpn

检查任务管理器进程选项卡以查看哪些 nssm 进程正在运行。

相关内容