Windows-7

為什麼 OpenVPN GUI 不能在 Windows 7 中添加路由?

  • February 16, 2015

大家好,

我無法讓 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, emailAddress=security@centraltruck.net, 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, emailAddress=techsupport@centraltruck.net
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 機器上也能正常工作。

我希望有人以前遇到過這個問題並可以提供一些幫助。謝謝。

它與權限有關。以禁用 UAC 的管理員身份執行,它將工作。您必須禁用 UAC。

或者您可以將 VPN 作為服務執行,它會正確連接和添加路由。

兼容模式

那些不會有什麼不同。

大家好,

我非常感謝 Zoredache 和 David Mackintosh 的幫助。你們倆都提出了一些建議,為我指明了正確的方向。

完全禁用 UAC 確實對我有用,以及修改 openvpn-gui 二進製文件以始終以管理員身份為所有使用者執行。然而,不幸的是,我對讓我的使用者永久禁用 UAC 或者每次啟用或禁用 UAC 時都必須執行的強制重啟感到不舒服。這意味著每次他們使用 VPN 並斷開連接時都會重新啟動。

因此,我尋找其他解決方案,並遇到了一些建議僅對管理員禁用 UAC 的解決方案。由於我的大多數需要 VPN 的使用者通常是他們筆記型電腦上的本地管理員,我認為這個解決方案可以工作。所以我測試了它,它確實有效。這是我的最終解決方案。

我創建了兩個單獨的 .reg 文件來修改系統系統資料庫,如下所示:

系統資料庫文件#1:禁用UACforAdmin

[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**的批處理文件。

所以我創建了我的預連接腳本來呼叫我的DisableUACforAdmin腳本,如下所示:

regedit.exe /s DisableUACforAdmin.reg

最後,我創建了一個向下腳本以在 VPN 隧道斷開連接時重新啟用 UAC - 因此,將使用者的機器恢復到原始狀態。

這是我所做的:

regedit.exe /s EnableUACforAdmin.reg

有了這個,OpenVPN GUI 執行沒有任何抱怨,路由從伺服器推送並在 Windows 7 客戶端上正確設置。我已經在多台 Windows 7 機器上對此進行了測試,並且一切正常。通過這樣做,我避免了禁用 UAC 帶來的強制重啟。再次感謝所有的幫助,我希望這會讓那些遇到同樣問題的人受益。

最後說明: 我意識到http://openvpn.se提供的 OpenVPN GUI不喜歡配置文件中的某些指令(例如script-securitykey-direction),除非您將它們註釋掉,否則不會啟動. 這可能並不適用於所有人,但我必須使用 OpenVPN 2.3.2 版附帶的 OpenVPN GUI

引用自:https://serverfault.com/questions/538820