爛泥:ubuntu 14.04搭建Open***服務器

本文首發於爛泥行天下html

公司分部須要鏈接公司內部的服務器,可是該服務器只容許公司內部的網絡訪問。linux

爲了解決這個問題,打算使用×××。對於×××之前使用最多的是PPTP這個解決方案,可是PPTP相對於open***來講,沒有open***安全,並且PPTP在linux下命令行支持不是很好,穩定性也不如open***。因此最後就選擇open***來搭建×××。ubuntu

PS:本文在ubuntu 14.04上安裝,open***服務器地址爲192.168.1.8。vim

有關open***在centos6.6 64bit的配置徹底可使用,已經通過驗證。文章後有centos詳細配置命令及步驟。windows

1、open***原理centos

open***經過使用公開密鑰(非對稱密鑰,加密解密使用不一樣的key,一個稱爲Publice key,另一個是Private key)對數據進行加密的。這種方式稱爲TLS加密安全

open***使用TLS加密的工做過程是,首先××× Sevrver端和××× Client端要有相同的CA證書,雙方經過交換證書驗證雙方的合法性,用於決定是否創建×××鏈接。服務器

而後使用對方的CA證書,把本身目前使用的數據加密方法加密後發送給對方,因爲使用的是對方CA證書加密,因此只有對方CA證書對應的Private key才能解密該數據,這樣就保證了此密鑰的安全性,而且此密鑰是按期改變的,對於竊聽者來講,可能尚未破解出此密鑰,×××通訊雙方可能就已經更換密鑰了。網絡

2、安裝open***ssh

open***的安裝咱們分爲apt-get方式和源碼方式,下面咱們只講解apt-get方式的安裝。有關源碼方式安裝open***,可自行百度。

apt-get方式安裝,咱們可使用以下命令:

sudo apt-get -y install open*** libssl-dev openssl

clip_p_w_picpath001

open***安裝完畢後,咱們來查看open***的版本,以下:

open*** --version

clip_p_w_picpath002

經過上圖,咱們能夠看到open***目前的版本爲2.3.2。這個版本號,建議記住。

咱們再來查看下open***安裝時產生的文件,以下:

dpkg -L open*** |more

clip_p_w_picpath003

經過上圖,咱們能夠很明顯的看出open***已經有相關配置的模版了。

open***安裝完畢後,咱們再來安裝easy-rsa。

easy-rsa是用來製做open***相關證書的。

安裝easy-rsa,使用以下命令:

sudo apt-get -y install easy-rsa

clip_p_w_picpath004

查看easy-rsa安裝的文件,以下:

dpkg -L easy-rsa |more

clip_p_w_picpath005

經過上圖,咱們能夠很明顯的看到easy-rsa已經安裝到/usr/share/easy-rsa/目錄下。

3、製做相關證書

根據第一章節open***的工做原理,咱們能夠知道open***的證書分爲三部分:CA證書、Server端證書、Client端證書。

下面咱們經過easy-rsa分別對其進行製做。

3.1 製做CA證書

open***與easy-rsa安裝完畢後,咱們須要在/etc/open***/目錄下建立easy-rsa文件夾,以下:

sudo mkdir /etc/open***/easy-rsa/

clip_p_w_picpath006

而後把/usr/share/easy-rsa/目錄下的全部文件所有複製到/etc/open***/easy-rsa/下,以下:

sudo cp -r /usr/share/easy-rsa/* /etc/open***/easy-rsa/

clip_p_w_picpath007

固然,咱們也能夠直接在/usr/share/easy-rsa/製做相關的證書,可是爲了後續的管理證書的方便,咱們仍是把easy-rsa放在了open***的啓動目錄下。

注意:因爲咱們如今使用的是ubuntu系統,因此咱們必須切換到root用戶下才能製做相關證書,不然easy-rsa會報錯。若是是centos系統,則不存在此問題。

切換到root用戶下,使用以下命令:

sudo su

clip_p_w_picpath008

在開始製做CA證書以前,咱們還須要編輯vars文件,修改以下相關選項內容便可。以下:

sudo vi /etc/open***/easy-rsa/vars

export KEY_COUNTRY="CN"

export KEY_PROVINCE="HZ"

export KEY_CITY="HangZhou"

export KEY_ORG="ilanni"

export KEY_EMAIL="ilanni@ilanni.com"

export KEY_OU="ilanni"

export KEY_NAME="***ilanni"

clip_p_w_picpath009

vars文件主要用於設置證書的相關組織信息,紅色部分的內容能夠根據本身的實際狀況自行修改

其中export KEY_NAME="***ilanni"這個要記住下,咱們下面在製做Server端證書時,會使用到。

注意:以上內容,咱們也可使用系統默認的,也就是說不進行修改也是可使用的。

而後使用source vars命令使其生效,以下:

source vars

./clean-all

clip_p_w_picpath010

注意:執行clean-all命令會刪除,當前目錄下的keys文件夾。

如今開始正式製做CA證書,使用以下命令:

./build-ca

clip_p_w_picpath011

一路按回車鍵便可。製做完成後,咱們能夠查看keys目錄。以下:

ll keys/

clip_p_w_picpath012

經過上圖,咱們能夠很明顯的看到已經生成了ca.crt和ca.key兩個文件,其中ca.crt就是咱們所說的CA證書。如此,CA證書製做完畢。

如今把該CA證書的ca.crt文件複製到open***的啓動目錄/etc/open***下,以下:

cp keys/ca.crt /etc/open***/

ll /etc/open***/

clip_p_w_picpath013

3.2 製做Server端證書

CA證書製做完成後,咱們如今開始製做Server端證書。以下:

./build-key-server ***ilanni

clip_p_w_picpath014

clip_p_w_picpath015

注意:上述命令中***ilanni,就是咱們前面vars文件中設置的KEY_NAME

查看生成的Server端證書,以下:

ll keys/

clip_p_w_picpath016

經過上圖,能夠很明顯的看到已經生成了***ilanni.crt、***ilanni.key和***ilanni.csr三個文件。其中***ilanni.crt和***ilanni.key兩個文件是咱們要使用的。

如今再爲服務器生成加密交換時的Diffie-Hellman文件,以下:

./build-dh

clip_p_w_picpath017

查看生成的文件,以下:

ll keys/

clip_p_w_picpath018

經過上圖,咱們能夠很明顯的看出已經生成了dh2048.pem,這個文件。

以上操做完畢後,把***ilanni.crt、***ilanni.key、dh2048.pem複製到/etc/open***/目錄下,以下:

cp keys/***ilanni.crt keys/***ilanni.key keys/dh2048.pem /etc/open***/

clip_p_w_picpath019

如此,Server端證書就製做完畢。

3.3 製做Client端證書

Server端證書製做完成後,咱們如今開始製做Client端證書,以下:

./build-key ilanni

clip_p_w_picpath020

clip_p_w_picpath021

注意:上述命令中的ilanni,是客戶端的名稱。這個是能夠進行自定義的。

若是你想快速生成用戶證書不須要手工交互的話,可使用以下命令:

./build-key --batch test1

clip_p_w_picpath022

clip_p_w_picpath023

查看生成的證書,以下:

ll keys/

clip_p_w_picpath024

經過上圖,咱們能夠很明顯的看出已經生成了ilanni.csr、ilanni.crt和ilanni.key這個三個文件。其中ilanni.crt和ilanni.key兩個文件是咱們要使用的。

如此,Client端證書就製做完畢。

4、配置Server端

全部證書製做完畢後,咱們如今開始配置Server端。Server端的配置文件,咱們能夠從open***自帶的模版中進行復制。以下:

cp /usr/share/doc/open***/examples/sample-config-files/server.conf.gz /etc/open***/

cd /etc/open***/

clip_p_w_picpath025

解壓server.conf.gz 文件,使用以下命令:

gzip -d server.conf.gz

clip_p_w_picpath026

注意:上述命令的意思是解壓server.conf.gz文件後,而後刪除原文件。

如今咱們來修改server.conf文件,以下:

grep -vE "^#|^;|^$" server.conf

port 1194

proto tcp

dev tun

ca ca.crt

cert ***ilanni.crt

key ***ilanni.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status open***-status.log

verb 3

clip_p_w_picpath027

與原模版文件相比,在此我修改幾個地方。

第1、修改了open***運行時使用的協議,由原來的UDP協議修改成TCP協議。生成環境建議使用TCP協議。

第2、修改了open***服務器的相關證書,由原來的server.csr、server.key修改成***ilanni.crt、***ilanni.key。

第3、修改了Diffie-Hellman文件,由原來的dh1024.pem修改成dh2048.pem。

注意:上述server.conf文件中***ilanni.crt、***ilanni.key、dh2048.pem要與/etc/open***/目錄下的相關文件一一對應。

同時,若是上述文件若是沒有存放在/etc/open***/目錄下,在server.conf文件中,咱們要填寫該文件的絕對路徑。以下所示:

clip_p_w_picpath028

配置文件修改完畢後,咱們如今來啓動open***,使用以下命令:

/etc/init.d/open*** start

netstat -tunlp |grep 1194

clip_p_w_picpath029

經過上圖,咱們能夠很明顯的看出open***已經在此啓動,並且也確實使用的TCP協議的1194端口。

5、配置Client端

Server端配置並啓動後,咱們如今來配置Client端。Client端根據操做系統的不一樣,又分爲Linux OS上和Windows OS上。如下咱們對此一一驚醒講解。

5.1 在Windows OS上

不管是在Windows OS仍是在Linux OS上Client端的配置,咱們都須要把Client證書、CA證書以及Client配置文件下載下來。

先來下載Client證書和CA證書,Client證書咱們主要使用crt和key結尾的兩個文件,而CA證書咱們主要使用crt結尾的文件。以下:

clip_p_w_picpath030

先把這幾個文件複製到/home/ilanni/目錄下,而後再把open***客戶端的配置文件模版也複製到/home/ilanni/目錄下。以下:

cp ilanni.crt ilanni.key ca.crt /home/ilanni/

cp /usr/share/doc/open***/examples/sample-config-files/client.conf /home/ilanni/

clip_p_w_picpath031

修改以上幾個文件的用戶屬性,以下:

chown ilanni:ilanni ilanni.*

chown ilanni:ilanni ca.crt

clip_p_w_picpath032

修改完畢後,退出root用戶,回到ilanni用戶的家目錄下,而後使用sz命令把這幾個文件下載下來。以下:

sz -y ilanni.crt ilanni.key ca.crt client.conf

clip_p_w_picpath033

clip_p_w_picpath034

下載完畢後,把client.conf文件重命名爲client.o***,而後進行編輯,以下:

client

dev tun

proto tcp

remote 192.168.1.8 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert ilanni.crt

key ilanni.key

ns-cert-type server

comp-lzo

verb 3

clip_p_w_picpath035

Client配置文件client.o***,我修改了幾個地方:

第1、使用的協議,由原來的UDP修改成TCP,這個必定要和Server端保持一致。不然Client沒法鏈接

第2、remote地址,這個地址要修改成Server端的地址。

第3、Client證書名稱,這個要和咱們如今使用的Client證書名稱保持一直。

以上修改完畢後,咱們要把這個幾個文件放在同一個文件夾中,而且必定要保持client.o***這個文件名稱是惟一的。不然在open***客戶端鏈接時,會報錯。以下:

clip_p_w_picpath036

安裝open*** for windows客戶端,咱們能夠從這個地址下載,以下:http://build.open***.net/downloads/releases/

注意:下載的客戶端版本號必定要與服務器端open***的版本一直,不然可能會出現沒法鏈接服務器的現象。

咱們如今服務器端的open***版本是2.3.2,因此客戶端也建議使用2.3.2的版本。

下載並安裝後,把testilanni這個文件夾複製到open***客戶端安裝的config文件夾。以下:

clip_p_w_picpath037

如今咱們來啓動open***客戶端鏈接Server,以下:

clip_p_w_picpath038

注意:上圖中的client就是根據client.o***,這個文件名來的。

點擊connect,會出現以下的彈窗:

clip_p_w_picpath039

若是配置都正確的話,會出現以下的提示:

clip_p_w_picpath040

經過上圖,咱們能夠很明顯的看到Client已經正確鏈接Server端,而且得到的IP地址是10.8.0.6。

下面咱們在本機查看下,該IP地址,以下:

clip_p_w_picpath041

經過上圖,咱們能夠看到本機確實已經鏈接到Server端,並且得到的IP地址也確實爲10.8.0.6。

5.2 在Linux OS上

在Windows OS上測試完畢後,咱們如今在切換到linux系統。在此咱們以ubuntu14.04爲例。

要在ubuntu上鍊接open***Server端,咱們須要先安裝open***軟件,以下:

sudo apt-get -y install open***

clip_p_w_picpath042

安裝完畢後,把咱們剛剛在Windows系統配置的文件上傳到ubuntu系統中。以下:

clip_p_w_picpath043

注意:上傳完畢後,咱們不須要修改任何配置文件。由於這幾個文件在Windows下已經能夠正確鏈接open*** Server端。

注意:在鏈接Server端以前,必定要切換到root用戶下。由於在鏈接Server端時,open***會在本機建立一個虛擬網卡,若是使用普通用戶的話,是沒有權限建立虛擬網卡的。

切換到root用戶,使用sudo su命令,以下:

sudo su

clip_p_w_picpath044

如今開始鏈接Server端,使用以下命令:

open*** --config client.o***

clip_p_w_picpath045

若是出現上圖的信息,說明已經正確鏈接Server端。

如今咱們在本機使用ifconfig進行查看,在此建議從新開啓一個新的ssh窗口,以下:

ifconfig

clip_p_w_picpath046

經過上圖,咱們能夠很明顯的看出,本機已經正確鏈接Server端,而且也在本機虛擬出一個叫tun0的虛擬網卡。

若是想讓ubuntu開機啓動並後臺運行的話,能夠把這條命令寫入rc.local文件中。以下:

/usr/sbin/open*** --config /home/ilanni/testilanni/client.o*** >/var/log/open***.log &

clip_p_w_picpath047

注意,命令末尾的&符號不能省略,不然將可能阻塞系統的正常啓動。

同時這個時候,client.o***文件中有關證書的配置必定要寫成絕對路徑,要否則系統會報錯。以下:

clip_p_w_picpath048

若是是centos系統的話,咱們首先須要安裝epel源,而後安裝open***軟件包。以下:

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

yum -y install open***

以上安裝完畢後,把Windows已經成功鏈接的Client相關文件上傳到centos系統中,而後鏈接方法和ubuntu系統上同樣。

注意:若是在centos系統要開機啓動的話,也是和ubuntu系統是同樣的,可是有一點須要指出就是Client相關配置文件不能放在/root目錄下。

給一個正確配的例子,以下:

clip_p_w_picpath049

clip_p_w_picpath050

clip_p_w_picpath051

由於centos的open*** server配置和unubutn基本同樣,因此就再也不單獨寫一篇有關centos下安裝配置open*** sever的文章。

可是附上在centos下,全部執行的命令。以下:

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

yum -y install open***

rpm -ql open***

cat /usr/share/doc/open***-2.3.7/sample/sample-config-files/README

http://open***.net/howto.html

yum -y install easy-rsa

rpm -ql easy-rsa

cd /usr/share/easy-rsa/2.0/

vim vars

export KEY_COUNTRY="CN"

export KEY_PROVINCE="HangZhou"

export KEY_CITY="HZ"

export KEY_ORG="ilanni"

export KEY_EMAIL="ilanni@ilanni.com"

export KEY_OU="MyOrganizationalUnit"

export KEY_NAME="ilanni"

source vars

./clean-all

./build-ca

./build-key-server ilanni

./build-dh

./build-key centos

cd  keys

cp ca.crt ilanni.key ilanni.crt dh2048.pem /etc/open***/

cp ca.crt centos.key centos.crt /root/

cp /usr/share/doc/open***-2.3.7/sample/sample-config-files/client.conf /root

cp /usr/share/doc/open***-2.3.7/sample/sample-config-files/server.conf /etc/open***/

服務器端配置文件:

vim /etc/open***/server.conf

grep -vE ";|#|^$" /etc/open***/server.conf

port 1194

proto udp

dev tun

ca ca.crt

cert ilanni.crt

key ilanni.key

dh dh2048.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

keepalive 10 120

comp-lzo

persist-key

persist-tun

status open***-status.log

verb 3

客戶端配置文件:

grep -vE ";|#|^$" centos.conf

client

dev tun

proto udp

remote 182.254.223.140 1194

resolv-retry infinite

nobind

persist-key

persist-tun

ca ca.crt

cert centos.crt

key centos.key

remote-cert-tls server

comp-lzo

verb 3

相關文章
相關標籤/搜索