萬盛學電腦網

 萬盛學電腦網 >> Linux教程 >> 基於linux操作系統架構openvpn總結

基於linux操作系統架構openvpn總結

class="21581">

使用OPENVPN實現各機房的互通 1

1 現狀 2

2 網絡結構 2

3 服務器信息以及網絡安全 4

3.1 服務器信息 4

3.2 網絡安全 4

4 使用openvpn實現南北互通 5

4.1 Openvpn簡介 5

4.2 下載 5

4.3 安裝 6

4.4 你的操作系統支持tun嗎? 6

4.5 配置C/S結構的VPN網絡 7

4.5.1 如何生成ca和cert/key? 7

4.5.1.1 產生MASTER Certificate Authority(CA) 的公鑰(certificate)和私鑰(key) 7

4.5.1.2 創建server端的cert和key文件 8

4.5.1.3 創建3個client端cert和key文件 9

4.5.1.4 建立 Diffie Hellman文件 9

4.5.1.5 所有文件的列表及使用的主機 9

4.5.2 OpenVPN Server端的配置 10

4.5.3 OpenVPN Client端的配置 12

4.5.4 運行OpenVPN 14

5 其它配置 15

5.1 讓多個client的子網間互通 15

5.2 控制運行中的openvpn進程 15

5.3 windows下的配置: 15

6 實際應用情況 16

7 參考文檔 17

1 現狀

假設現在的某公司的服務器存放在廣州、河北、杭州三個機房中,每個機房使用不用的子網:

代碼:

機房 子網(內部)

廣州 10.1.0.0/16

河北 10.2.0.0/16

杭州 10.3.0.0/16

各機房使用不同的網段,為使用vpn連接創造了有利條件。

由於電信至網通間的網絡速度是否緩慢,對廣州與河北機房間的數據同步帶來非常大的困難。我們找到一台即連接了網通的線路,又連接了電信線路的服務器,但卻不能直接用其作為路由。如果使用porxy的方式或轉發的方式又會降低同步的效率。

采用C/S結構的vpn方式,即解決了同步的問題,又不會影響同步的效率。

2 網絡結構

下圖是三個機房實現互連互通後的拓撲圖:

(由於是發到論壇的關系,請看貼子最後的圖)

從上圖可以看到,該VPN系統是一個C/S的結構。中間為VPN SERVER;廣州、河北、杭州三個機房各取出一台服務器作為VPN CLIENT。

VPN SERVER擁有兩塊網卡和兩條線路(電信和網通),兩個網卡均需要設置公網IP。根據實際的情況設置路由,這裡我是設置電信的線路為默認路由,設置到河北機房網段的走網通的路由。

VPN CLIENT可以有兩塊網卡也可以只用一塊網卡,如果是電信的線路則連接vpn server的電信的IP;如果是網通的線路則連接網通的vpn server 的網通方面的IP。

3 服務器信息以及網絡安全

3.1 服務器信息

在本文中我們使用了4台服務器分別作為vpn server和client。由於使用vpn傳輸數據對服務器的負載不大,所以除了vpn server需要一台新的服務器外,各機房的client服務器只需要找一台負載輕的服務器來擔當即可。

本文使用的四台服務器的詳細信息:

代碼:

機房 Vpn 模式 操作系統 服務器IP

Vpn server RedHat 9.0 公網IP1 (網通)

公網IP2(電信)

廣州機房 Vpn client FreeBSD4.9 10.1.0.1

河北機房 Vpn client RedHat9.0 10.2.0.1

杭州機房 Vpn client FreeBsd4.9 10.3.0.1

3.2 網絡安全

除vpn server外,其它的機房中的vpn client均無需公網IP,所以vpn server需要加強安全方面的設置。

該服務器是RedHat9.0的操作系統,登陸界面使用的是grub,並設置的grub密碼,保證物理上的安全。

使用Iptables設置包過濾防火牆,只允許你的服務器對其進行訪問:

代碼:

iptables –F

iptables -A INPUT -s 10.0.0.0/8 -j ACCEPT

iptables -A INPUT -s YOURNETWORK -j ACCEPT

iptables -A INPUT -p udp --dport 1194 –j DROP

4 使用openvpn實現南北互通

4.1 Openvpn簡介

OpenVPN 是一個強大、高度可配置、基於ssl的 VPN (Virtual Private Network)Open Source 軟件。它具有多種的驗證方式以及許多強大的功能。

OpenVPN工作在OSI模型的第2或第3層,使用SSL/TLS協議進行網絡傳輸。支持多種客戶認證方法,如證書、smart cards,加上用戶名密碼的證書認證等。除此以外,還有強大的ACL功能限制客戶的信息交換。

OpenVPN可以運行在多種操作系統中,包括:

Linux, Windows 2000/XP and higher, OpenBSD, FreeBSD, NetBSD, Mac OS X, and Solaris.

使用OpenVpn,可以實現:

● 使用特定udp或tcp端口實現兩台主機的之間的vpn連接。

● 實現C/S結構,實現多台client通過server服務器互連互通。

● 通過TLS/SSL加密保證數據傳輸的安全。

● 通過數據的壓縮,提高數據傳輸的速度。

(由於其它功能在本文中並不需要使用,如想要詳細了解請訪問http://openvpn.net)

4.2 下載

從以下網址下載最新版本的openvpn source包。

http://nchc.dl.sourceforge.net/sourceforge/openvpn/openvpn-2.0_rc16.tar.gz

由於openvpn需要使用數據壓縮,所以還需要安裝lzo包:

http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz

4.3 安裝

Linux:

代碼:

軟件 編譯安裝

Lzo ./configure Make && make install

Openvpn ./configure -prefix=/opt/openvpn Make && make install

FreeBSD:

代碼:

Lzo ./configure Make && make install

Openvpn ./configure -prefix=/opt/openvpn --with-lzo-headers=/usr/local/include --with-lzo-headers=/usr/local/include Make && make install

參照上面的安裝方法分別在linux和freebsd主機上安裝好openvpn。

4.4 你的操作系統支持tun嗎?

從我安裝過的操作系統看,RedHat9.0和FreeBSD4.9的內核默認已經支持TUN,並且已經安裝tun模塊。RedHat AS3則沒有該模塊,需要重新編譯內核支持。

加載tun模塊:

●Linux 2.4 or higher (with integrated TUN/TAP driver):

(1) make device node: mknod /dev/net/tun c 10 200

(2a)add to: echo "alias char-major-10-200 tun" >> /etc/modules.conf

(2b) load driver: modprobe tun

(3) enable routing: echo 1 > /proc/sys/net/ipv4/ip_forward

●FreeBSD 4.1.1+:

kldload if_tap

4.5 配置C/S結構的VPN網絡

4.5.1 如何生成ca和cert/key?

代碼:

Ca certificate

authority(認證授權),所有的server和client均使用同一個ca文件。

cert certificate(證書)。公鑰,每一個server和client各自獨立生成的公鑰。

key 私鑰,每一個server和client工作獨立生成的私鑰。

◎ server端只需要知道它自己的cert和key。它不需要知道每一個可以連接到它的client的cert。

◎ server端接受的client必須擁有以server的CA產生的cert。server能使用它自己的CA私鑰來確認client的cert中是否帶有其CA的記號。

4.5.1.1 產生MASTER Certificate Authority(CA) 的公鑰(certificate)和私鑰(key)

#######

In this section we will generate a master CA certificate/key, a server certificate/key, and certificates/keys for 3 separate clients

#######

在本節,我們會嘗試建立一對master CA的cert和key,一對server端的cert和key,和3個不同client的年的cert和keys。

UNIX:

在openvpn的源碼中可以找到easy-rsa文件夾。

cd easy-rsa

. ./vars 建立環境變量 #這個地方很多人會弄錯,兩點之間是有空間的

./clean-all 清除以前的

./build-ca 建立CA

最後一個命令會調用openssl來創建CA的公鑰和私鑰:

代碼:

Country Name (2 letter code) [KG]:

State or Province Name (full name) [NA]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [OpenVPN-TEST]:yourcorp 在此輸入公司名

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:hbroute 在此輸入主機名或隨便輸一個名字

Email Address [[email protected]]:

其它的按默認即可。

完成後會在keys目錄中創建ca.crt ca.key index.txt serial四個文件。

4.5.1.2 創建server端的cert和key文件

cd easy-rsa

./build-key-server server

代碼:

Country Name (2 letter code) [KG]:

State or Province Name (full name) [NA]:

Locality Name (eg, city) [BISHKEK]:

Organization Name (eg, company) [OpenVPN-TEST]:yourcorp 輸入公司名

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server's hostname) []:hbrouteserver 輸入主機名或隨便一個名字

Email Address [[email protected]]:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

Sign the certificate? [y/n]:y 輸入y

1 out of 1 certificate requests certified, commit? [y/n]y 輸入y

Write out database with 1 new entries

<
copyright © 萬盛學電腦網 all rights reserved