从C#打开VPN-奇怪的超时

从C#打开VPN-奇怪的超时,c#,openvpn,C#,Openvpn,我正在尝试从我的C#Windows服务启动OpenVpn。基本上是这样的: VpnProcess = new Process(); VpnProcess.StartInfo.FileName = "<Path to openvpn.exe in Program dir>"; VpnProcess.StartInfo.Arguments = "--config " + "<vpnConfigName>" + " --log vpn.log"; VpnProcess.Star

我正在尝试从我的C#Windows服务启动OpenVpn。基本上是这样的:

VpnProcess = new Process();
VpnProcess.StartInfo.FileName = "<Path to openvpn.exe in Program dir>";
VpnProcess.StartInfo.Arguments = "--config " + "<vpnConfigName>" + " --log vpn.log";
VpnProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
VpnProcess.StartInfo.UseShellExecute = false;
VpnProcess.StartInfo.CreateNoWindow = true;
VpnProcess.StartInfo.WorkingDirectory = <Program dir>;
VpnProcess.Start();
VpnProcess=新进程();
VpnProcess.StartInfo.FileName=“”;
VpnProcess.StartInfo.Arguments=“--config”+“”+“--log vpn.log”;
VpnProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
VpnProcess.StartInfo.UseShellExecute=false;
VpnProcess.StartInfo.CreateNoWindow=true;
VpnProcess.StartInfo.WorkingDirectory=;
VpnProcess.Start();
到目前为止还不错,下面是生成的日志:

Tue Sep 01 11:01:15 2015 OpenVPN 2.3.8 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [IPv6] built on Aug  4 2015
Tue Sep 01 11:01:15 2015 library versions: OpenSSL 1.0.1p 9 Jul 2015, LZO 2.08
Tue Sep 01 11:01:16 2015 Socket Buffers: R=[8192->8192] S=[8192->8192]
Tue Sep 01 11:01:16 2015 UDPv4 link local: [undef]
Tue Sep 01 11:01:16 2015 UDPv4 link remote: [AF_INET]217.79.181.93:1194
Tue Sep 01 11:01:16 2015 TLS: Initial packet from [AF_INET]217.79.181.93:1194, sid=a7a52cba 93615557
Tue Sep 01 11:01:16 2015 VERIFY OK: depth=1, CN=<censored>
Tue Sep 01 11:01:16 2015 VERIFY OK: nsCertType=SERVER
Tue Sep 01 11:01:16 2015 VERIFY OK: depth=0, C=<censored>, ST=<censored>, L=<censored>, O=<censored>, OU=<censored>, CN=<censored>, name=<censored>, emailAddress=<censored>
Tue Sep 01 11:02:16 2015 [<censored>] Inactivity timeout (--ping-restart), restarting
Tue Sep 01 11:02:16 2015 SIGUSR1[soft,ping-restart] received, process restarting
Tue Sep 01 11:02:16 2015 Restart pause, 2 second(s)
Tue Sep 01 11:02:18 2015 Socket Buffers: R=[8192->8192] S=[8192->8192]
Tue Sep 01 11:02:19 2015 UDPv4 link local: [undef]
Tue Sep 01 11:02:19 2015 UDPv4 link remote: [AF_INET]217.79.181.93:1194
Tue Sep 01 11:02:19 2015 TLS: Initial packet from [AF_INET]217.79.181.93:1194, sid=4963868b 6f0eecb7
Tue Sep 01 11:02:20 2015 VERIFY OK: depth=1, CN=<censored>
Tue Sep 01 11:02:20 2015 VERIFY OK: nsCertType=SERVER
Tue Sep 01 11:02:20 2015 VERIFY OK: depth=0, C=<censored>, ST=<censored>, L=<censored>, O=<censored>, OU=<censored>, CN=<censored>, name=<censored>, emailAddress=<censored>
Tue Sep 01 11:02:21 2015 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
[...]
Tue Sep 01 11:02:28 2015 Initialization Sequence Completed
2015年9月1日星期二11:01:15 OpenVPN 2.3.8 x86_64-w64-mingw32[SSL(OpenSSL)][LZO][PKCS11][IPv6]于2015年8月4日构建
2015年9月1日星期二11:01:15库版本:OpenSSL 1.0.1p 2015年7月9日,LZO 2.08
2015年9月1日星期二11:01:16套接字缓冲区:R=[8192->8192]S=[8192->8192]
2015年9月1日星期二11:01:16 UDPv4链路本地:[未定义]
2015年9月1日星期二11:01:16 UDPv4远程链路:[AF_INET]217.79.181.93:1194
2015年9月1日星期二11:01:16 TLS:来自[AF_INET]217.79.181.93:1194的初始数据包,sid=a7a52cba 9361557
2015年9月1日星期二11:01:16验证正常:深度=1,CN=
2015年9月1日星期二11:01:16验证正常:nsCertType=服务器
2015年9月1日星期二11:01:16验证正常:深度=0,C=,ST=,L=,O=,OU=,CN=,名称=,电子邮件地址=
2015年9月1日星期二11:02:16[]非活动超时(-ping重新启动),重新启动
2015年9月1日星期二11:02:16收到SIGUSR1[软,ping重启]信号,进程重启
2015年9月1日星期二11:02:16重新启动暂停,2秒
2015年9月1日星期二11:02:18套接字缓冲区:R=[8192->8192]S=[8192->8192]
2015年9月1日星期二11:02:19 UDPv4链路本地:[未定义]
2015年9月1日星期二11:02:19 UDPv4远程链路:[AF_INET]217.79.181.93:1194
2015年9月1日星期二11:02:19 TLS:来自[AF_INET]217.79.181.93:1194的初始数据包,sid=4963868b 6f0eecb7
2015年9月1日星期二11:02:20验证正常:深度=1,CN=
2015年9月1日星期二11:02:20验证正常:nsCertType=服务器
2015年9月1日星期二11:02:20验证正常:深度=0,C=,ST=,L=,O=,OU=,CN=,名称=,电子邮件地址=
2015年9月1日星期二11:02:21数据通道加密:使用128位密钥初始化密码“BF-CBC”
[...]
2015年9月1日星期二11:02:28初始化序列完成
所以,vpn在验证后挂起,然后重新启动,然后工作正常。如果我使用完全相同的条件和参数通过cmd或Powershell启动openvn,它将在第一次尝试中成功连接


我花了几天时间试图找出为什么会发生这种情况,但没有成功。我尝试了StartInfo属性的所有合理组合,并检查了执行用户在软重启后是否发生了更改。不,两次都是本地系统。

原因:服务器时间提前了1分钟。因此,客户端上新下载的证书是“来自未来”,导致服务器拒绝。服务器日志显示了这一点,但从来没有客户端日志检查您的OpenVPN配置文件是否有“auth nocache”选项。 当我将此选项添加到客户端配置时,我得到了类似的效果。我使用用户名/密码进行身份验证