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

来源:互联网 发布:java安装失败找不到uri 编辑:程序博客网 时间:2024/04/29 22:23

因為主機在遠端,無法在現場管理,為了資安的需求,我需要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

     >>http://www.dotblogs.com.tw/remhom/archive/2012/03/13/70717.aspx