1. 程式人生 > >例項講解 手把手教你搭建適合自己的VPN

例項講解 手把手教你搭建適合自己的VPN

 如果你既關注你的隱私又是在使用Wi-Fi熱點或者其他公共網路,那麼虛擬專用網VPN對你來說是最不可或缺的手段。現在發展的技術比如安全套接層SSL(為"https"形式的網路地址提供安全服務),可以防止資訊在電腦和郵件伺服器或者其他網路應用上傳輸時被惡意攔截,不過這種保護措施也具有其侷限性。

    VPN的安全優勢

    其一,絕大多數的網頁和郵件服務並不提供傳輸加密功能。如果你只是使用POP客戶端檢查來自Comcast、Earthlink或者其他任何網路服務供應 商的郵件,你可能會面臨安全風險。同樣地,你在Google、雅虎或者其他網頁上輸入查詢資訊,也會面臨一定的潛在風險。

    另外,即使在網站上提供SSL安全保護,但是多數情況下,還是很容易受到被稱為sidejacking的劫持(SideJacking是指籍著嗅探技術, 攫取附近WiFi使用者造訪網站時的cookies資料,儲存下來作為日後破解使用。被截獲的cookies可用來複制受害者先前建立連線的網站。),它 允許任何人進入你的網路,並且可以輕易讀取你的郵件和系統日誌。

    就連上個月初召開的黑帽大會上,三名通訊員使用簡易的監測工具探取會議釋出計算機網路,其中一人的密碼也被人竊取了。那麼,又有誰知道有多少網路搜尋、即使通訊和電子郵件資訊被暴露了呢?假設肇事者不透露半點風聲,這次攻擊也許不會被發現。

    這次事件也讓我們想到了虛擬專用網VPN。虛擬專用網是一種"基於公共資料網,給使用者一種直接連線到私人區域網感覺的服務"。VPN提供使用者一種私人專用 (Private)的感覺,因此建立在不安全、不可信任的公共資料網的首要任務是解決安全性問題。VPN的安全性可通過隧道技術、加密和認證技術得到解 決。

    VPN網路可以防止人們監測Wi-Fi熱點或者你的通訊本地網路,他們所能看到的也僅僅是被加密的資料包。最重要的是,這種保護能夠延伸到每一個網頁搜尋、即使通訊或者郵件收發。

    有許多中小企業裝備了價格低廉的VPN產品,但是卻暴露了不少安全問題。在VPN中,我們一致認為,使用OpenVPN可以為自己的網路帶來更可靠的安全 保障。OpenVPN是一個用於建立虛擬專用網路加密通道的軟體包,它允許參與建立VPN的單點使用預設的私鑰,第三方證書,或者使用者名稱/密碼來進行身份 驗證。它還大量使用了OpenSSL加密庫,以及SSLv3/TLSv1協議

    由於OpenVPN與生俱來便具備了許多安全特性,所以使用OpenVPN自然是不二之選。下面,本文將向你一步步講述如何在兩臺裝有XP機器上設立OpenVPN(一臺作為可靠的伺服器,另一臺作為客戶端上網衝浪)。

為動態IP設立域名和子網

    第一步:準備工作

    在安裝和配置OpenVPN之前,你需要考慮好幾個問題,才有便於計劃工作的順利開展。首先,如果你的使用者也是在區域網中執行的話,請確保他所擁有的子網與常見IP號碼的區別。大多數的路由器預設情況下一般都是使用192.168.1.x形式,其實這很容易出問題。如果在Wi-Fi熱點環境下使用相同的子網,那麼會出現IP衝突並導致無法連線網路的問題。

    為了避免這個問題,可以根據實際需要,對子網進行重新編號,比如可以選擇192.168.199.1。當你設定LAN時,要明確你所用到子網不會被其他主機用於連線網路。我們會在下面的講述中選擇從192.168.199.151開始的11個IP地址。

改變子網
改變子網

    
     第二步:設定伺服器和動態IP

    如果你沒有固定IP並且你的伺服器IP也沒有指定的話,那麼你需要一個域名對映到你伺服器的IP地址上(如果你的伺服器擁有固定IP,那麼你可以跳過這部分內容直接看下面的第三步)。你可以登陸DynDNS,免費使用他們的動態DNS服務功能(http://www.dyndns.com/services/dns/dyndns/)。

DynDNS頁面
DynDNS頁面

    
    為此,你需要先建立一個帳戶和密碼。提醒你注意的是,使用者名稱和密碼最好是你很容易識記,並且方便你使用的,因為你將會時常用到它們。建立好之後,登陸帳戶,並選擇新增主機服務連結(http://www.dyndns.com/services/dns/dyndns/)。它允許你建立自己的域名,然後自動對映到你的伺服器地址。為此,你需要填入一個域名,選擇"離線主機"選項,然後在頁面底部點選"建立主機"。我們選擇"openvpndemo.dyndns.org"域名。當然,你可以選擇自己中意的域名(前提是沒有被他人使用)。
新增主機
新增主機

    
     接下來,下載DynDNS升級軟體(點此下載),並安裝在伺服器上(選擇預設安裝方式)。當第一次執行時,它會提示你輸入使用者名稱和密碼,你直接輸入剛才建立的使用者名稱和密碼即可。

    一旦你輸入了使用者名稱和密碼,DynDNSUpdater就會顯示你剛才填入的域名,如果顯示無誤,那麼直接點選"應用"按鈕。

dyndns帳戶資訊
dyndns帳戶資訊


    
    現在,你已經為你的伺服器建立了一個域名。每當伺服器IP變化(假設它是動態設定的),DynDNS就會相應地更新域名系統。(如果這一步你還有什麼疑問的話,可以向DynDNS尋求幫助)
    
  

dyndnsupdater配置
dyndnsupdater配置
第三步:安裝和配置OpenVPN

    開啟OpenVPN的下載頁面並下載該軟體。在大多數情況下,你可能想要下載最新穩定版本的安裝程式,因此我們建議你下載OpenVPN-2.1rc9-install.exe。

下載OpenVPN
下載OpenVPN

    
    下載好之後,把它安裝在客戶端和伺服器端,並確保使用預設方式安裝。如果WindowsXP會顯示"TAP-Win32"或"ZRTPMiniport"未通過認證的警告資訊,你大可不必擔心,當它出現時,只要點下"繼續執行"即可。

    管理金鑰

    OpenVPN可以為伺服器提供對稱金鑰來驗證客戶端,也可以為客戶端驗證伺服器。這就使得金鑰管理會變得更加容易,但也會給帶來更多的安全風險。因此,無論如何,請不要選擇對稱金鑰選項。

    相反,使用OpenVPN的公開金鑰體系(PKI),可以提供更加可靠的安全保障。使用之前,你需要為伺服器和客戶端生成一個權威認證機構(CA)和獨立的金鑰。

    為OpenVPN生成和分發SSL金鑰並不是很簡單的事情,不過幸好OpenVPN有一套金鑰管理指令碼,你只需要簡單配置即可完成這一工作。首先,在服務 器端開啟命令視窗(選擇"開始">"執行",並鍵入"cmd"點選確定),在開啟的命令視窗中,鍵入"cd/ProgramFiles /OpenVPN/easy-rsa"(不包括引號),回車後可以發現,命令提示符該為了"C:/ProgramFiles/OpenVPN/easy- rsa>",緊接著輸入如下命令:

    init-config
    vars
    clean-all
    build-ca

    前三個命令輸入後,系統不會有什麼提示,當輸入最後一個命令後,系統就會提示你所有的資訊,包括兩個字母的國家程式碼和州或者省的程式碼。其他資訊可以不輸入 或者忽略,唯一需要輸入的是共同名稱,比如輸入OpenVPN-CA。至此,你已經成功建立好了金鑰所需的認證機構。

命令視窗中實現操作

    現在為伺服器建立金鑰,這需要在命令視窗中來實現。

生成證書管理的金鑰
生成證書管理的金鑰
    
    建立伺服器金鑰--伺服器端

    同剛才的命令類似,系統會給你提示一些資訊,要求你輸入某些字元。其實你大可忽略這些,包括其中一個要求你輸入密碼的提示資訊。唯一不能被忽略的是 CommonName欄位。當系統徵求名稱時,輸入"server";當詢問是否要求認證時,輸入"y";當問及是否要提交時,同樣輸入"y"。建立的這 些金鑰對是用在伺服器上來使用的。

生成伺服器端金鑰
生成伺服器端金鑰

    
    下面將要建立客戶端機器上的金鑰對。同樣地,你也需要在命令視窗中來實現。

    建立金鑰的pkcs12--客戶端1

    此命令將生成一個金鑰對,而且該金鑰對只能輸入你所選擇的密碼才能進行訪問。同剛才一樣,你可以忽略大部分內容,但是在CommonName字元下,你要 輸入"client1"。當它提示輸入密碼時,你可以忽略。當詢問是否要求認證時,輸入"y";當問及是否要提交時,同樣輸入"y"。接下來,系統會要求 你輸入和確認登出密碼。這一步相當重要,因為一旦客戶端被控制的話,它可以有效阻止偷盜者訪問VPN網路。請選擇一些既容易識記又不容易被人猜測到的密 碼。

生成客戶端金鑰
生成客戶端金鑰

    
    現在,你已經成功生成所有客戶端連線VPN伺服器所需要的金鑰。找到"C:/ProgramFiles/OpenVPN/easy-rsa/keys"並雙擊,就可以看到所有的金鑰。
    
   
金鑰資料夾
金鑰資料夾

    
    下面的工作,就是要把這些金鑰劃分到不同的地方。在這整個金鑰資料夾中,最重要的要數ca.key,它是CA權威認證負責給客戶端生成新金鑰以提供其連線 到伺服器的驗證請求。如果該檔案一旦丟失,那麼客戶端就無法實現與VPN伺服器的連線;如果該檔案被竊取,那麼偷盜者也可以利用它來連線伺服器。因此,請 把該檔案設定為最高安全級別,提供可靠的安全保障。

    其次,我們也要特別留心以下三個檔案:ca.crt,server.crt和server.key。開啟伺服器"C:/ProgramFiles /OpenVPN/config",並複製這三個檔案到這個資料夾中。最後,再回到"C:/ProgramFiles/OpenVPN/easy-rsa /keys",找到"client1.p12"檔案,複製該檔案到客戶端的"C:/ProgramFiles/OpenVPN/config"資料夾中。 至此,你已經完成設立OpenVPN的金鑰管理部分。

配置OpenVPN

    下面,我們要為伺服器和客戶端新增配置檔案,並更加需要進行一些修改。

    首先,下載一個server.ovpn檔案(點選此處下載)和client.ovpn檔案(點選此處下載)。然後對其重新命名,並分別複製到客戶端和伺服器端的"C:/ProgramFiles/openvpn/config"資料夾中。

    如果你是嚴格按照我們的做法操作,那麼這些檔案具有你所需要的大部分設定,除此之外,你還需要手動新增幾個檔案。首先,在伺服器中定位 到"C:/ProgramFiles/openvpn/config",開啟資料夾中的"server.ovpn"檔案(以文件編輯器開啟,或者滑鼠右鍵 以記事本方式開啟)。開啟之後,找到文字字串"server-bridge",並在其右邊有一行大寫字母的字串,你可以把設定好的引數替代這些字元 串。

server.ovpn
server.ovpn

    
    替代"DEFAULT.GATEWAY"的是你區域網的預設閘道器IP,在本文中,我們使用192.168.199.1。替代"SUBNET.MASK"的是子網掩碼,我們使用255.255.255.0。

    在前面講述的準備工作中,我們討論過子網IP衝突的問題。"BEGINNING.DHCP.RANGE"可以用來表示起始IP,而"END.DHCP.RANGE"表示中止IP。全部設定好後,該行變成如下形式:

    server-bridge192.168.199.1255.255.255.0192.168.199.151192.168.199.161

    並請記得儲存設定。

    接著,就是自定義客戶端上的配置檔案了。找到"PLACE.IP.NUMBER.OR.DOMAIN.NAME.HERE"字串,並根據本文講述,你可以設定成"openvpndemo.dyndns.org"並儲存該配置檔案。

client.ovpn
client.ovpn

    
    完成以上操作後,伺服器和客戶端上的"C:/ProgramFiles/OpenVPN/config"資料夾應該會如圖所示。
伺服器配置資料夾
伺服器配置資料夾
客戶端配置資料夾
客戶端配置資料夾
架設LAN

    第五步:橋接LAN

    安裝好OpenVPN後,網路連線中會出現一個新的本地連線。在網路連線視窗的右上方,有個裝置名稱一欄,你可以在該欄中找到"TAP-Win32AdapterV9"(若沒有,可以滑鼠右鍵,點檢視下的詳細資訊),選中滑鼠並右鍵選中橋接(如圖所示)。

橋接之前
橋接之前

    
  
橋接之後
橋接之後

    
    下面,我們可以測試連線是否正常。在伺服器桌面或者開始選單,找到OpenVPN圖示,滑鼠右鍵選選擇連線。如果你可以看到以下連線介面,說明一切正常。
伺服器連線介面
伺服器連線介面
    
    在客戶端執行OpenVPN之前,請先確保連線上了網路。然後雙擊執行,並測試連線。當出現連線介面後,系統會提示你輸入密碼。在輸入正確後,你若能看到如下客戶端連線視窗,說明客戶端連線正常。
客戶端連線介面
客戶端連線介面