为什么OpenVPN GUI不能在Windows 7中添加路由?

所有的好日子,

我无法让OpenVPN GUI应用程序添加路由到Windows 7客户端。 我使用的是我在Windows XP客户端上使用的configuration文件,除了添加了以下两行:

route-method exe route-delay 2 

我可以build立一个连接,并从10.8.0.0池中分配一个IP地址 – 这让我觉得隧道已经启动了。 但是看下面的日志,看起来路由没有被添加到Windows 7机器上。

 Fri Sep 13 16:02:44 2013 OpenVPN 2.3.2 x86_64-w64-mingw32 [SSL (OpenSSL)] [LZO] [PKCS11] [eurephia] [IPv6] built on Aug 22 2013 Fri Sep 13 16:02:44 2013 MANAGEMENT: TCP Socket listening on [AF_INET]127.0.0.1:25340 Fri Sep 13 16:02:44 2013 Need hold release from management interface, waiting... Fri Sep 13 16:02:45 2013 MANAGEMENT: Client connected from [AF_INET]127.0.0.1:25340 Fri Sep 13 16:02:45 2013 MANAGEMENT: CMD 'state on' Fri Sep 13 16:02:45 2013 MANAGEMENT: CMD 'log all on' Fri Sep 13 16:02:45 2013 MANAGEMENT: CMD 'hold off' Fri Sep 13 16:02:45 2013 MANAGEMENT: CMD 'hold release' Fri Sep 13 16:02:48 2013 MANAGEMENT: CMD 'username "Auth" "username"' Fri Sep 13 16:02:48 2013 MANAGEMENT: CMD 'password [...]' Fri Sep 13 16:02:49 2013 Control Channel Authentication: using 'ta.key' as a OpenVPN static key file Fri Sep 13 16:02:49 2013 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Sep 13 16:02:49 2013 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Sep 13 16:02:49 2013 Socket Buffers: R=[8192->8192] S=[261360->261360] Fri Sep 13 16:02:49 2013 UDPv4 link local: [undef] Fri Sep 13 16:02:49 2013 UDPv4 link remote: [AF_INET]501.2.984.233:1194 Fri Sep 13 16:02:49 2013 MANAGEMENT: >STATE:1379102569,WAIT,,, Fri Sep 13 16:02:49 2013 MANAGEMENT: >STATE:1379102569,AUTH,,, Fri Sep 13 16:02:49 2013 TLS: Initial packet from [AF_INET]501.2.984.233:1194, sid=82453eea 30481972 Fri Sep 13 16:02:49 2013 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this Fri Sep 13 16:02:49 2013 VERIFY OK: depth=1, O=Central Truck Center, Inc., OU=IT/Systems Department, [email protected], L=Landover, ST=MD, C=US, CN=ca.centraltruck.net Fri Sep 13 16:02:49 2013 VERIFY OK: nsCertType=SERVER Fri Sep 13 16:02:49 2013 VERIFY OK: depth=0, C=US, ST=MD, O=Central Truck Center, Inc., OU=IT/Systems Department, L=Landover, CN=centraltruck.net, [email protected] Fri Sep 13 16:02:49 2013 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Fri Sep 13 16:02:49 2013 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Sep 13 16:02:49 2013 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Fri Sep 13 16:02:49 2013 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Fri Sep 13 16:02:49 2013 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 2048 bit RSA Fri Sep 13 16:02:49 2013 [centraltruck.net] Peer Connection Initiated with [AF_INET]50.242.184.133:1194 Fri Sep 13 16:02:50 2013 MANAGEMENT: >STATE:1379102570,GET_CONFIG,,, Fri Sep 13 16:02:51 2013 SENT CONTROL [centraltruck.net]: 'PUSH_REQUEST' (status=1) Fri Sep 13 16:02:51 2013 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 172.23.6.127,dhcp-option WINS 172.23.6.127,dhcp-option DOMAIN centraltruck.net,ip-win32 dynamic,route 172.23.6.0 255.255.255.0,route 172.23.7.0 255.255.255.0,route 208.197.153.0 255.255.255.0,route 10.8.0.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5' Fri Sep 13 16:02:51 2013 OPTIONS IMPORT: timers and/or timeouts modified Fri Sep 13 16:02:51 2013 OPTIONS IMPORT: --ifconfig/up options modified Fri Sep 13 16:02:51 2013 OPTIONS IMPORT: route options modified Fri Sep 13 16:02:51 2013 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified Fri Sep 13 16:02:52 2013 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Fri Sep 13 16:02:52 2013 MANAGEMENT: >STATE:1379102572,ASSIGN_IP,,10.8.0.6, Fri Sep 13 16:02:52 2013 open_tun, tt->ipv6=0 Fri Sep 13 16:02:52 2013 TAP-WIN32 device [Local Area Connection 3] opened: \\.\Global\{19F13E2F-B3F0-4E85-A8A2-E3C86ADD1987}.tap Fri Sep 13 16:02:52 2013 TAP-Windows Driver Version 9.9 Fri Sep 13 16:02:52 2013 Notified TAP-Windows driver to set a DHCP IP/netmask of 10.8.0.6/255.255.255.252 on interface {19F13E2F-B3F0-4E85-A8A2-E3C86ADD1987} [DHCP-serv: 10.8.0.5, lease-time: 31536000] Fri Sep 13 16:02:52 2013 Successful ARP Flush on interface [41] {19F13E2F-B3F0-4E85-A8A2-E3C86ADD1987} Fri Sep 13 16:02:54 2013 TEST ROUTES: 0/0 succeeded len=4 ret=0 a=0 u/d=down Fri Sep 13 16:02:54 2013 Route: Waiting for TUN/TAP interface to come up... 

上面最后两行将重复约30次,然后会出现一条通知,显示VPN连接IP为10.8.0.6。 日志的最后一行显示了这一点:

 Fri Sep 13 16:03:24 2013 Initialization Sequence Completed With Errors ( see http://openvpn.net/faq.html#dhcpclientserv ) Fri Sep 13 16:03:24 2013 MANAGEMENT: >STATE:1379102604,CONNECTED,ERROR,10.8.0.6,50.242.184.133 

有几个Googlesearch显示,我需要以pipe理员权限运行该应用程序。 我这样做,我甚至尝试在Windows Vista兼容模式下运行应用程序。 出于一些奇怪的原因,Windows XP不是我可以select的选项。 有什么我失踪? 我的configuration – 没有我之前告诉你的两行 – 在Windows XP中工作得很好。 另外,如果我使用OpenVPN客户端(而不是OpenVPN GUI),它在Windows 7机器上工作正常。

我希望以前有人遇到这个问题,可以提供一些帮助。 谢谢。

这与权限有关。 运行是作为UAC禁用的pipe理员,它将工作。 你必须禁用UAC。

或者你可以运行VPN作为服务,它会正确地连接和添加路由。

兼容模式

那些不会有所作为。

大家好,

我非常感谢Zoredache和David Mackintosh的帮助。 你们都提出了一些build议,指出了我的正确方向。

禁用UAC一起工作对我来说,以及修改openvpn-gui二进制文件始终以所有用户的pipe理员身份运行。 不幸的是,我不能让我的用户永久禁用UAC,或者每次启用或禁用UAC时都必须重新启动。 这意味着每次使用VPN时都会重新启动,并断开连接。

所以我想了解更多的解决scheme,并且遇到了一些build议只禁用UAC的pipe理员。 由于我的大多数用户需要使用VPN,通常都是笔记本电脑上的本地pipe理员,我认为这个解决scheme是可行的。 所以我testing了它,它确实工作。 这是我的最终解决scheme。

我创build了两个单独的.reg文件来修改系统registry,如下所示:

registry文件#1:DisableUACforAdmin

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "ConsentPromptBehaviorAdmin"=dword:00000000 

registry文件#2:EnableUACforAdmin

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "ConsentPromptBehaviorAdmin"=dword:00000002 

为了得到这个工作,我必须以pipe理员身份运行OpenVPN GUI。 感谢大卫麦金托什的build议,我修改了exe文件,始终以所有用户的pipe理员身份运行。 现在,计时是关键 – 我需要确保在VPN连接启动之前UAC已被禁用。 幸运的是,OpenVPN GUI支持创build一个预连接脚本,只需创build一个与configuration文件同名的batch file,后缀为_pre

所以我创build了我的预连接脚本来调用我的DisableUACforAdmin脚本,如下所示:

 regedit.exe /s DisableUACforAdmin.reg 

最后,我创build了一个向下脚本,以便在VPN隧道断开时重新启用UAC,从而使用户的机器恢复到原始状态。

以下是我所做的:

 regedit.exe /s EnableUACforAdmin.reg 

有了这个,OpenVPNgraphics用户界面运行没有任何抱怨,路由从服务器推送,并正确设置在Windows 7客户端。 我已经在多台Windows 7机器上testing了这一切,并且都在工作。 通过这样做,我可以避免强制重新启动,禁用UAC。 再次感谢所有的帮助,我希望这将有利于有人遇到同样的问题。

最后注意:我意识到,在http://openvpn.se提供的OpenVPN GUI不喜欢configuration文件中的一些指令(如脚本安全性按键方向 ),除非你注释掉它们,否则不会启动。 这可能并不适用于所有人,但我必须使用OpenVPN 2.3.2版本的OpenVPN GUI

为了让它适用于我,我转到openvpn-gui二进制文件,select“ 属性” ,select“ 更改所有用户的设置” ,然后单击在该窗口中以pipe理员身份运行此程序 。 停止并重新启动Openvpn-gui。

上面的答案都集中在“官方”的openvpn客户端 – Securepoint客户端http://sourceforge.net/projects/securepoint/不会遇到这个问题,也是开源的。

可能或不适用于有问题的版本:OpenVPN w / Sophos SSL VPN也遇到了问题,以及“OpenVPN交互式服务”服务在启动时没有成功启动的问题。 客户端机器是联想Thinkpad T530,并附带了联想的预装服务,导致这个问题。

有问题的服务:Fastboot HyperW7

运行联想和英特尔更新后,这个问题不太明显,但偶尔在启动电脑时“OpenVPN交互式服务”会超时。

如果您禁用上述两个联想服务,则“OpenVPN交互式服务”能够启动。 看起来联想程序员摆弄着什么可以开始,什么可以暂停启动不能很好地与OpenVPN的发挥。

一旦允许“OpenVPN交互式服务”在启动时正常运行,即使标准用户login,也可以允许OpenVPN提交路由。

无需“以pipe理员身份运行”或提升用户帐户的权限。

尝试重新启动DHCP客户端服务(build议在此线程https://forums.openvpn.net/topic13043.html#p41604 )。 它在我的情况下工作。