1. 程式人生 > >實戰開源OpenVPN 享受廉價SSL VPN

實戰開源OpenVPN 享受廉價SSL VPN

提起VPN,估計大多數人都會想到各大廠商的硬體裝置。其實,VPN還有另外一大家族:軟體VPN。通過軟體的部署,實現Virtual Private Network的功能。
這篇文章將講述如何利用OpenVPN實現SSL VPN。OPENVPN是近年新出現的一個基於開源軟體體系的VPN專案(www.openvpn.net),具備SSL VPN解決方案的全部特徵,支援靈活的客戶端認證方式、分組許可權控制,負載平衡,容錯技術等。此外,它還有支援平臺多的優點,包括windows,linux,bsd,mac os等。
需要說明的是OpenVPN與其它常見的SSL VPN產品不同,不是一個基於web瀏覽器的VPN產品,而是一個全功能的VPN解決方案,支援所有協議,甚至IPX。
現在我們通過假設一個簡單的網路環境,展示OpenVPN的強大和易用:某公司職員在外出差,計劃利用網際網路與公司內部網路進行資料互動,並且利用VPN技術保證資料的安全性。其網路結構如下:
          OpenVPN作為一款完善、穩定的VPN軟體,完全可以勝任此項任務。其有兩種安全模式,一種是預先共享的靜態金鑰(Static Key)方式,另一種是基於使用SSL/TLS的RSA證書和金鑰的方式。前者具有配置簡單,無需維護X509 PKI的優點,但限制了使用者數量,只支援一對一的連線方式,此外,客戶端必須預先部署靜態金鑰,安全性也不夠高;後者則保證了安全性,但需要額外維護PKI,相對前者配置比較複雜。在企業環境中,推薦使用在此RSA證書和金鑰的方式進行安全認證。為了方便,我們在此選用靜態金鑰方式權當拋磚引玉。
一、軟體下載及安裝
         架設VPN之前,我們需要從
http://openvpn.net/download.html
下載安裝程式。目前 OpenVPN的最新版本是2005.04.17釋出的2.0版。假設Firewall伺服器和客戶端都使用了windows作業系統(當然其他作業系統也與此類似),我們需要下載僅1.7M的openvpn-2.0-install.exe。
           伺服器和客戶端都需要安裝OpenVPN程式。按照windows的傳統,一路“NEXT” 就可以成功安裝。期間,可能會彈出“TAP-Win32 Adapter V8網絡卡驅動沒有通過徽標測試”的警告,點選“仍然繼續”忽略此即可。安裝後,系統會多增加TAP-Win32 Adapter V8的虛擬網絡卡(無VPN連線時,狀態為斷開)。
二、生成靜態金鑰檔案
           此安全模式的關鍵是一個2048 bit OpenVPN static key。生成操作很簡單,點選以下快捷方式就會隨機產生一個2048位的靜態金鑰檔案(key.txt)並儲存在OpenVPN目錄下的config資料夾:
開始 -> 程式 -> OpenVPN ->Generate a static OpenVPN key。
然後把key.txt分別部署到伺服器和客戶端的config資料夾。
三、修改配置檔案
         程式安裝時,OpenVP自帶了兩種配置檔案範例儲存在sample-config資料夾下,並把副檔名.ovpn與記事本notepad進行了關聯。sample.ovpn是在靜態金鑰方式下的配置檔案範例,我們只需要簡單的修改一下就可以達到我們的需要:
(1) 遠端伺服器設定 (第8行remote myremote)如果是客戶端,則把myremote用伺服器的地址來代替;如果是服務端,則應把此行用“;”或“#”號註釋掉,否則會出現” Cannot resolve host address: myremote: [HOST_NOT_FOUND] The specified host is unknown.”的錯誤提示。
(2) 連線方式(第34行 dev tap)由於本實驗使用點對點IP連線,故把此行改為dev tun 。相應的,註釋掉tap的配置資訊,取消tun兩條配置資訊(tun-mtu和ifconfig)的註釋使其生效,並對ifconfig的兩個IP進行配置。其中,前一個IP地址(預設為10.3.0.1)為本機在虛擬區域網中的IP地址(非本地真實IP),第二個IP地址(預設為10.3.0.2)為遠端計算機在虛擬區域網中的IP地址。需要說明的是,虛擬區域網的IP分配並不是隨意的,不能與本地和遠端的計算機所在區域網的IP段衝突,否則就會造成路由混亂,無法正常通訊。我們在此試驗中,保持預設IP不變。
(3) 除以上兩點需要修改外,其他選項可以按需要修改,比如是通訊埠,靜態金鑰檔案,是否採用壓縮等。
         四、防火牆配置
請確保OpenVPN服務段的UDP1149埠開放。
事實證明,95%以上的連線問題都是由防火牆引起的。
         五、VPN測試
右擊配置檔案,選擇“Start OpenVPN on this config file”,分別啟動服務端和客戶端,虛擬網絡卡的狀態會由斷開轉為正常。成功連線後,OpenVPN會根據配置檔案自動分配IP給虛擬網絡卡(請確保系統的DHCP Client服務啟動,否則會不能獲得IP)。
為了驗證VPN已經建立,可以使用ping 命令測試一下。
在此基礎上,簡單的配置一下路由資訊,就可以讓VPN客戶端訪問VPN服務端所在網段的全部資源。由此可見,OpenVPN的配置是很簡單的,即使通過基於使用SSL/TLS的RSA證書和金鑰進行認證也不是很複雜。
OpenVPN實現了利用SSL來保證網路通訊安全性的目的,同時避免了當前大多數SSL VPN產品僅提供簡單的web應用的不足。雖然,此方案丟掉了“零客戶端”的光環,但也因此得到了功能上的增強,是一個不錯的產品。Catalis的資深工程師Duffy說:“在這個專案中Catalis惟一的投資就是花費時間。”如果你只需要最基本的、可靠的安全策略和基本的訪問方式,對其他方面無特別的要求,那麼免費的OpenVPN或許是一個不錯的選擇。