CentOS 6 建立私有 OpenVPN,想要穩定又快速的 VPN 不求人

2015-10-18 CentOS

近年 OpenVPN 頗為流行,尤其是在 Line 跨區載貼圖時期更是廣為人知,以往我在使用 VPN 的時候除了設備上的 site to site 以外就是使用 PPTP 加上 MSCHAP 或 MPPE 來達到加密的功能。

 

OpenVPN 是一個著重於加密型態的 VPN,基於 OpenSSL 的加密形式,可以相容於 Windows、OSX、Linux、Android、iOS 等裝置上,溝通於單一個連接埠,預設為 UDP 1194

 

對於企業來說 OpenVPN 更適用於 site to site 不中斷連接,OpenVPN 的穩定性以及加密都有頗高的水準,因為是採用 OpenSSL 所以可以進行憑證加密通道

 

然而他的跨平台相容性非常高,拿來作為一般使用者使用也是頗穩定,不過缺點是必須在安裝相對應的軟體,如 Tunnelblick (Mac)、OpenVPN (Windows)

 

 

 

CentOS 6 安裝 OpenVPN Server

 

Step.1 安裝 OpenVPN 套件

 

 

Step.2 從範例複製一份 server.conf 設定檔,並設定以下參數

 

主要以上設定必須要了解其作用,其他就採預設值。

 

Step.3 利用 easy-rsa 工具,來建立 OpenVPN 所須的認證 key

複製 easy-rsa 工具到 /etc/openvpn

 

設定 easy-rsa 的環境參數

 

 

建立 ca.crt、ca.key

 

建立伺服器憑證 server.crt、server.csr、server.key,當出現詢問是否註冊時請輸入 y

 

 

建立 Diffie Hellman key:dh2048.pem

 

 

建立 HMAC 加密憑證:tls.key

 

建立 Client 憑證:client.crt、client.csr、client.key,當出現詢問是否註冊時請輸入 y

 

 

Step.4 將所有憑證都建立好之後,把 ca.crt、server.crt、server.key、dh2048.pem、tls.key 都丟到 /etc/openvpn 好讓 server.conf 可以抓的到。

 

 

Step.5 設定 iptables 讓 10.8.0.0/24 允許 NAT,並開啟 udp 1194

 

Step.6 開啟 IP packet forwarding

 

Step.7 啟動 OpenVPN,並確認 listen 1194

 

OpenVPN Server 的部分到此就搞定了,再來就是要提供 Client 設定檔

 

 

 

OpenVPN Client Config ovpn

OpenVPN 的設定檔統一都是 .ovpn,必須提供使用者伺服器憑證以及TLS認證

 

你可以提供 ovpn 和憑證檔打包給使用者安裝,但有更簡單的方式是直接把憑證用 tag 的方式將憑證資訊包在 ovpn

 

以下就是將憑證資訊包在 ovpn 的作法,設定參數主要參考 server.conf

 

 

remote 為 OpenVPN Server 的位置和端口。

<ca> 包的是 ca.crt 憑證資訊

<cert> 包的是 client.crt 憑證資訊

<key> 包的是 client.key 憑證資訊

<tls-auth> 包的是 tls.key 憑證資訊,在最後務必加上 key-direction 1 判別為 client

 

 

對於一般的桌面裝置,只要你有安裝 OpenVPN,直接點選 .ovpn 就可以安裝

 

 

行動裝置安裝 ovpn 以 iPhone 為例 

那如果是 iOS / Android 裝置呢?小弟是上傳到雲端硬碟給行動裝置下載

 

上傳到 ownCloud 雲端後讓 iPhone 去打開,並且點選 Open with

IMG_0334

 

然後選擇 Open in OpenVPN

IMG_0336

 

就會將 .ovpn 設定檔匯入 OpenVPN 囉,這裡點選綠色的 + 就可以進行匯入

IMG_0335

 

 

打開連線的開關,連上 VPN 囉!!而且速度優於 PPTP 很多唷!

IMG_0340

 

OpenVPN 相較於 PPTP 或 L2TP/IPsec 來說相對穩定,速度在 OpenSSL 的硬體加速加持下實際使用也非常快,如果使用者對於另外安裝一套 OpenVPN 軟體不排斥的話,相信 OpenVPN 會是穩定與速度上的首選!

 

 

 

註1. 此篇採用的是 TUN Mode,TUN 必須於 OpenVPN Server 使用 NAT 的方式轉發封包,而 TAP 是允許 VPN Client 和 Server 同網段。

TAP 的方式可能會造成 IP 浪費並且目前也暫不支援 Android 系統。

 

 

參考資料:

iPhone OpenVPN Setup

How to Setup and Configure an OpenVPN Server on CentOS 6

 

 

 

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

彙整

分類

open all | close all

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱