![为什么 OpenVPN GUI 无法在 Windows 7 中添加路由?](https://linux22.com/image/617882/%E4%B8%BA%E4%BB%80%E4%B9%88%20OpenVPN%20GUI%20%E6%97%A0%E6%B3%95%E5%9C%A8%20Windows%207%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%E8%B7%AF%E7%94%B1%EF%BC%9F.png)
大家好,
我无法让 OpenVPN GUI 应用程序向 Windows 7 客户端添加路由。我使用的配置文件与 Windows XP 客户端上的配置文件相同,只是我添加了以下两行:
route-method exe
route-delay 2
我可以建立连接,并且我从 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
几次 Google 搜索显示我需要以管理员权限运行该应用程序。我正在这样做,我甚至尝试在 Windows Vista 兼容模式下运行该应用程序。出于某种奇怪的原因,Windows XP 不是我可以选择的选项。我是否遗漏了什么?我的配置 - 没有我之前告诉您的两行 - 在 Windows XP 中运行良好。此外,如果我使用 OpenVPN 客户端(而不是 OpenVPN GUI),它在 Windows 7 计算机上运行良好。
我希望有人曾经遇到过这个问题并且可以提供一些帮助。谢谢。
答案1
这与权限有关。以管理员身份运行并禁用 UAC,它就可以正常工作。您必须禁用 UAC。
或者您可以将 VPN 作为服务运行,它将正确连接并添加路由。
兼容模式
这些不会有什么区别。
答案2
大家好,
我非常感谢 Zoredache 和 David Mackintosh 的帮助。你们两位的建议都为我指明了正确的方向。
对我来说,完全禁用 UAC 确实有效,并且修改了 openvpn-gui 二进制文件,使其始终以管理员身份运行所有用户。然而不幸的是,我并不乐意让我的用户永久禁用 UAC - 或者每次启用或禁用 UAC 时都必须强制重启。这意味着每次他们使用 VPN 并断开连接时都要重启。
因此,我寻找了其他解决方案,并遇到了几个建议仅为管理员禁用 UAC 的解决方案。由于大多数需要 VPN 接入的用户通常是笔记本电脑上的本地管理员,因此我认为此解决方案可行。所以我测试了它,它确实有效。这是我的最终解决方案。
我创建了两个单独的.reg 文件来修改系统注册表,如下所示:
注册表文件 #1: DisableUACforAdmin
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000000
注册表文件 #2:EnableUACforAdmin
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"ConsentPromptBehaviorAdmin"=dword:00000002
为了实现这一点,我必须以管理员身份运行 OpenVPN GUI。感谢 David Mackintosh 的建议,我修改了 exe 文件,使其始终以所有用户的管理员身份运行。现在,时间是关键 - 我需要确保在启动 VPN 连接之前禁用 UAC。幸运的是,OpenVPN GUI 支持创建预连接脚本,只需创建一个与配置文件同名的批处理文件,后缀为_pre。
所以我创建了我的预连接脚本来调用我的禁用管理员的 UAC脚本如下:
regedit.exe /s DisableUACforAdmin.reg
最后,我创建了一个关闭脚本,以便在 VPN 隧道断开时重新启用 UAC - 从而将用户的机器恢复到原始状态。
这是我所做的:
regedit.exe /s EnableUACforAdmin.reg
这样,OpenVPN GUI 就可以毫无问题地运行,路由会从服务器推送,并在 Windows 7 客户端上正确设置。我已经在多台 Windows 7 机器上测试过,一切正常。通过这种方式,我避免了禁用 UAC 带来的强制重启。再次感谢大家的帮助,我希望这对遇到与我相同问题的人有所帮助。
最后说明: 我意识到 OpenVPN GUI 提供于http://openvpn.se不喜欢配置文件中的某些指令(例如脚本安全或者方向键),除非您注释掉它们,否则不会启动。这可能不适用于所有人,但我必须使用 OpenVPN GUIOpenVPN 2.3.2 版本
答案3
为了让它工作,我进入 openvpn-gui 二进制文件,选择特性, 选择更改所有用户的设置,然后点击以管理员身份运行此程序在该窗口中。停止并重新启动 Openvpn-gui。
答案4
可能适用于也可能不适用于相关版本:OpenVPN 与 Sophos SSL VPN 也遇到了问题,即“OpenVPN Interactive Service”服务在启动时无法成功启动。客户端计算机是 Lenovo Thinkpad T530,并预装了 Lenovo 的服务,而这些问题导致了此问题。
有问题的服务:Fastboot HyperW7
运行联想和英特尔更新后,问题不再那么明显,但在启动计算机时,“OpenVPN 交互式服务”仍然会偶尔超时。
如果您禁用上述两个联想服务,则“OpenVPN Interactive Service”可以启动。联想程序员似乎在摆弄哪些服务可以启动以及哪些服务可以在启动时暂停,这似乎与 OpenVPN 不兼容。
一旦允许“OpenVPN 交互式服务”在启动时正常运行,它就能够允许 OpenVPN 提交路由,即使是标准用户登录也是如此。
无需“以管理员身份运行”或提升用户帐户的权限。