5,991 瀏覽數

就是要上網 – OpenVPN ( 二) Client


OpenVPN 提供兩種版本,如果所需要的設定不太複雜建議使用 OpenVPN-AS 這版本,如果你的 VPN 還需要 Proxy 等的連線方式則建議使用 OpenVPN 的版本.雖然設定上會比 OpenVPN-AS 困難繁瑣多,但是可以依據你公司的環境做詳細的設定,所以請依據自己的需求做選擇.

OpenVPN-AS

OpenVPN

這邊採用的是 OpenVPN 為範例:

目前我的作業系統為 CentOS 5.5 32bit,關於 OpenVPN Server 的安裝請自行參考 http://benjr.tw/11786

Client 的設定方式主要是參考了 OpenVPN 官方的 Quick start 說明文件.

Linux Client

Linux Client 一樣要先行安裝 OpenVPN 套件,安裝好的 OpenVPN 已經為 Linux Clients 做好預設的設定檔並存放在 /usr/share/doc/openvpn-2.2.1/sample-config-files/client.conf

[root@vps1 openvpn]# cp /usr/share/doc/openvpn-2.2.1/sample-config-files/client.conf /etc/openvpn

要修改的地方就如同剛剛再修改 server 的設定檔一樣, ca, cert 以及 key 的實際位址,這些 Key 我們存放在 /etc/openvpn/easy-rsa/2.0/keys . 不過要特別注意的一點就是 client 的檔案當初在建立時是依據個別的名稱所建立的 client1 / client2 / client3 ,所以我們這邊要注意的將你的 cert/key 改成適當的名稱. ca 這個檔案是 server 與 client 共用,所以不用特別修改了.

[root@vps1 openvpn]# vi /etc/openvpn/client.conf
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/client1.crt
key /etc/openvpn/easy-rsa/2.0/keys/client1.key

和編譯 server 設定檔最大的不同是 client 設定檔要指定 OpenVPN server 的 hostname 或是 IP 以及剛剛 server 所使用的 port number 為 443.

先使用 ping 測試一下,看目前與遠端 OpenVPN Server 的連線是否正確.

[root@vps1 openvpn]# ping benjr.tw

在 Linux 下的環境我們是透過 openvpn 指令去建立 VPN 連線,這程式還會幫我們偵測定檔是否無誤.      

[root@vps1 openvpn]# openvpn client.conf
…. 
Initialization Sequence Completed

如果 client 設定檔設定正確無誤時會出現 Initialization Sequence Completed 的字串.這樣基本上 Linux 平台的 Server 以及 Client 的 VPN 連線已經建立完成,但我們常使用工作平台還是 Windows ,所以接下來看 Windows 下的環境要如何設定.

Windows Client

Windows 的 Client 第一步需要先下載 OpenVPN GUI 軟體,OpenVPN 的網站可以下載到 http://openvpn.se/files/install_packages/ 目前最新的是 openvpn-2.0.9-gui-1.0.3-install.exe .
接下來先確定 client 與 server 的連線沒有問題,可以透過 ping 的方式.

Microsoft Windows XP [版本 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Users\Benjr\ ping benjr.tw

需要的檔案同 Linux Client 所需

ca.crt
client1.crt
client1.key
client1.csr

並將他存放在 Windows 的目錄夾 C:\Program Files\OpenVPN\config\nuface_client1 之下,如同 Linux Client 的設定檔,我們需要在該目錄下建立一個 nuface_client1.ovpn 檔案,內容如同 Linux Client ,但 Key 的位置必須修改如下:

C:\Users\Benjr\ type C:\Program Files\OpenVPN\config\nuface_client1\nuface_client1.ovpn 
client
dev tun
remote benjr.tw 443
proto tcp-client
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3

工具列的右下方可以找到 OpenVPN GUI 的小圖示 openvpn01按右鍵點選 "connect" 即可以連接上 VPN 並取得由 VPN 所提供的 IP 位置.

Windows Client with HTTP proxy

大部分的公司會使用 HTTP proxy,所以 OpenVPN 也提供了下列 3 種驗證的模式:

  • No proxy authentication
  • Basic proxy authentication
  • NTLM proxy authentication

HTTP proxy 必須使用 TCP 來進行連線,所以在 client 以及 server 設定檔都必須使用 proto tcp,前面我們也都是使用該設定值:

接下來只要在 client 端的設定檔設定 http-proxy ,如果你的 HTTP proxy server 的 IP 為 192.168.4.1 /  port 1080,client 的設定檔如下:

http-proxy 192.168.4.1 1080

HTTP proxy + Basic authentication:

http-proxy 192.168.4.1 1080 stdin basic

HTTP proxy + NTLM authentication:

http-proxy 192.168.4.1 1080 stdin ntlm

上述兩種的身分驗證皆需要輸入帳號以及密碼,我們可以將帳號以及密碼些在檔案裡,並將 stdin 取代成為檔案名稱,檔案內容的第一行為帳號第二行為密碼.其實我不建議這麼做.

不過很可惜的是我在公司試的結果是不行的,錯誤訊息下:

Fri Oct 28 03:25:28 2011 OpenVPN 2.0.9 Win32-MinGW [SSL] [LZO] built on Oct 1 2006
Fri Oct 28 03:25:28 2011 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
Fri Oct 28 03:25:28 2011 LZO compression initialized
Fri Oct 28 03:25:28 2011 Control Channel MTU parms [ L:1576 D:140 EF:40 EB:0 ET:0 EL:0 ]
Fri Oct 28 03:25:28 2011 Data Channel MTU parms [ L:1576 D:1450 EF:44 EB:135 ET:32 EL:0 AF:3/1 ]
Fri Oct 28 03:25:28 2011 Local Options hash (VER=V4): '31fdf004'
Fri Oct 28 03:25:28 2011 Expected Remote Options hash (VER=V4): '3e6d1056'
Fri Oct 28 03:25:28 2011 Attempting to establish TCP connection with 10.36.6.65:3128
Fri Oct 28 03:25:28 2011 TCP connection established with 10.36.6.65:3128
Fri Oct 28 03:25:28 2011 Send to HTTP proxy: 'CONNECT benjr.tw:443 HTTP/1.0'
Fri Oct 28 03:25:28 2011 Attempting Basic Proxy-Authorization
Fri Oct 28 03:25:30 2011 HTTP proxy returned: 'HTTP/1.0 403 Forbidden'
Fri Oct 28 03:25:30 2011 HTTP proxy returned bad status
Fri Oct 28 03:25:30 2011 TCP/UDP: Closing socket Fri Oct 28 03:25:30 2011 SIGTERM[soft,init_instance] received, process exiting

當然你也可以不用像我這麼辛苦自己架設 VPN 外.你還可以找一些商用的 VPN 如: go-vpn 付點費用就可以使用了.

2 個網友的想法 “就是要上網 – OpenVPN ( 二) Client

  1. 自動參照通知: 就是要上網 – OpenVPN-AS (VPN+SSL) | Benjr.tw

  2. 自動參照通知: 就是要上網 – OpenVPN (一) Server | Benjr.tw

發表迴響