免費的OPENVPN,建立你的專屬區網

免費的VPN OPENVPN

因為主機在遠端,無法在現場管理,為了資安的需求,我需要VPN來建立起較安全的網路環境,

之前是使用 Hamachi,但是到了最近,常發現我的網路會自己中斷,然後發生網頁無法瀏覽,MSN卻可以用的怪事,

下了tracert指令,發現原來找不到DNS,變成我必須要停用、啟用網路,才能恢復正常,

到了最近更是要常常每3~5分鐘就要做一次,真的快把我逼瘋了…

 

苦思不得其解,以為是電腦中毒了,要使出大絕 (重灌),才突然想起停用Hamachi看看,結果居然正常了!嘿!

我想應該是我超過免費使用的流量,所以才被 Server端 卡住吧!

本來想花錢買套 Hamachi,上了官網才發現,蛤?只能用租的!而且每台都算錢!當下立刻放棄= =

 

這怎麼可以呢?我可是一天18小時都在上網的男人耶!所以開始找尋VPN的替代方案,後來被我找到了Open VPN,

剛開始以為要錢,後來才發現他有兩種方式,一種是他提供Server讓你認證(要錢、算流量),一種是你自己架,

當然選不用錢的啦,Open Source的真好啊!又可以省下一筆了。

 

我工作上的需求:

  • 遠端桌面
  • MS SQL連線
  • FTP連線

 

看來看去也只有VPN可以救我了,我可不想一天到晚被駭啊。

 

環境說明:

Server 端:Windows Server 2008 Web Edition x64 ( 就是沒有內建VPN…殘念 )

Client 端:Windows 7 x64、Windows Server 2008 Web Edition x64

VPN軟體:Open VPN

本文日期:2012.3.13

 

安裝 Open VPN

image

請先到官網下載 Windows 版安裝檔案 http://openvpn.net/index.php/download/community-downloads.html

今日最新的版本為 OpenVPN 2.2.2 版

安裝時,跑預設即可,基本上會安裝在例如:C:\Program Files (x86)\OpenVPN 底下,不過怕可能會有檔案權限的問題,

建議安裝在 C:\OpenVPN 底下

Sever 跟 Client 都是安裝同一套程式,基本上僅客戶端會需要使用到UI。

 

OpenVPN設定算簡單,但是由於沒有較好的防呆機制,且參數幾乎都是透過文字檔處理,

所以只要有些小細節沒注意到,可是會搞死人,所以將我的架設心得與大家分享,希望能幫到人。

 

Server端設定

安裝完後,請先在C:\OpenVPN\config 裡,新增一個設定檔,server.ovpn (檔名可以亂取,但副檔名一定要ovpn)

內容請複製貼上,然後存檔

在這邊先簡單說一下眉角,

proto udp 採用udp連線,你也可以改成tcp,但是注意,主機跟客戶端的通訊協定要一致,不過建議採用udp,

因為tcp的速度很慢,可能不到udp速度的1/3,而且你會很明顯的感覺遠端桌面會頓頓的。

## server.ovpn ##
port 1194  # 連接的埠號#
proto udp  # 採用udp連線。#
dev tap
ca ca.crt  #認證檔案#
cert server.crt  #認證檔案#
key server.key #認證檔案#
dh dh2048.pem #採用2048位元加密,也可以改為1024#

#網路設定#
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option WINS 10.8.0.1"
push "dhcp-option DNS 10.8.0.1"
keepalive 10 120
comp-lzo
max-clients 10
persist-key
persist-tun
status openvpn-status.log
verb 3

#如果要讓連上來的 client 可以互連的話,請加下列參數#
client-to-client

注意!可能是官方安裝檔案沒包好的緣故,在後續幾個指令執行過程中,常會出現找不到 C:\openssl\ssl\openssl.cnf 的錯誤訊息,

所以請先手動建立 C:\openssl\ssl 這個資料夾,並將 C:\OpenVPN\easy-rsa\openssl-1.0.0.cnf 複製過去並更名為 openssl.cnf

 

首先先跑下列指令,產生 vars.bat 檔案

cd C:\OpenVPN\easy-rsa

init-config

請編輯 vars.bat檔案,將下列內容的改成自己的資料,隨便填也行!因為後續的指令都會載入這個設定檔,所以先修改好,避免每次都要打。

set KEY_COUNTRY=你的國家
set KEY_PROVINCE=你的省份
set KEY_CITY=你的城市
set KEY_ORG=你的組織
set KEY_EMAIL=你的電子郵件
set KEY_NAME=你的名字

在C:\OpenVPN\easy-rsa下,建立一個keys的資料夾,然後繼續下指令產生兩個新的 empty index and serial files (只需跑一次)

1. vars
2. clean-all

image

 

建立 ca key (只需跑一次),因為我們已經修改過,所以你可以直接按下enter,使用剛剛我們預先建好的值。

( 注意!只需跑一次,如果你發佈給使用者後,又跑了第二次,那抱歉,請重新更新你所有 Client 的金鑰,因為已經無法連接了。 )

1. vars
2. build-ca

image

此時後在 C:\OpenVPN\easy-rsa\keys 資料夾會產生ca.crt ,請將它複製到 C:\OpenVPN\config 中。

 

建立  DH file,因為我們用2048 bit 加密,所以要跑比較久些,以我電腦為例(i5、8G),跑了約4~5分鐘。

1. vars
2. build-dh

image

執行完畢後,會在keys資料夾中產生 dh2048.pem 檔案,請將它複製到 C:\OpenVPN\config 中。

 

接下來要建立Server端的金鑰

1. vars
2. build-key-server <machine-name> ( 我是直接打build-key-server server)

這邊注意,當有詢問到y/n的時候,請記得要打y,不然會出錯!

image

執行完畢後,會在keys資料夾中產生 server.crt、server.key檔案,請將它複製到 C:\OpenVPN\config 中。

 

啟動服務,請到服務管理員中找到 OpenVPNService,並將它設定為自動,並啟用,如此Server端的設定就完成了。

爾後如果C:\OpenVPN\config\server.ovpn如果有異動的話,請記得從新啟動服務,才能套用更新。

 

產生Client端的金鑰

1. vars
2. build-key <machine-name 你要給的客戶端主機名稱,不一定要是該電腦的名稱>

例如我建立 build-key client1,執行的畫面如下,

注意!記得在Common Name的地方要更改成其他名稱,不能再用預設的,不然會報錯,然後如果你已經建立過client1,那下次就不能再重複使用了,因為它已經寫入到它的資料庫了。你要改用client2之類的。

錯誤訊息:

CERTIFICATE WILL NOT BE CERTIFIED
找不到 C:\OpenVPN\easy-rsa\keys\*.old

image

執行完後會在 C:\OpenVPN\easy-rsa\keys 產生client1.crt與client1.key 兩個檔案,

請將這兩個檔案與 ca.crt 一併複製到客戶端的安裝目錄中 ( C:\OpenVPN\config )

 

Cilent端設定

安裝完後,請先在C:\OpenVPN\config 裡,新增一個設定檔,client.ovpn (檔名可以亂取,但副檔名一定要ovpn)

內容請複製貼上,然後存檔。

## remote.ovpn ##
client
dev tap
proto udp
remote 遠端主機的ip或是domain name 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

#最後這兩行要加,不然我win7連線成功,windows server 2008卻失敗#

route-method exe
route-delay 2

 

準備連線

開啟 所有程式=>OpenVPN=>OpenVPN GUI ,你會看到有個圖示出現,雙擊圖示以開啟連線。

image

 

連接中時,會由紅燈轉為黃燈

image

 

連接訊息

image

 

連接上去後會轉為綠燈,並取得IP,成功!

image

 

 

設定固定IP


接下來我們希望撥接上去的 Client 都有各自的固定IP,這時候我們需要再Server端的設定檔加上一行字,然後記得重啟服務

client-config-dir /openvpn/ccd

然後在C:/openvpn 下建立一個資料夾 ccd,如果你要幫 client1 設定固定ip的話,

請在ccd內新增一個檔案,取名叫做 client1 (沒有副檔名),然後在檔案內新增下列文字,重新連線即可。

ifconfig-push 10.8.0.2 255.255.255.0 #如果你要設定client的ip為10.8.0.2的話#
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option WINS 10.8.0.1"
push "dhcp-option DNS 10.8.0.1"

 

Cient 端自動執行

因為安裝OpenVPN的時候,已經有設定為服務,所以你只要把服務中的 OpenVPN Service設定為自動即可,

開機後,他就會自動連線,而這種方式,是沒有UI的,所以你可以用 ipconfig的指令,來確認是否成功。

image

 

image

************* 2013/8/16 更新 *********************

最近作業系統改為win8 ,重新安裝了 OpenVPN的client,發現上網速度慢到讓我受不了...
後來將Server端的config 修改為 push "dhcp-option DNS 8.8.8.8"
將分派的DNS改為Google的DNS,速度恢復正常,VPN連線也正常,供大家參考。