Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5175449
  • 博文数量: 1644
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12469
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
  • 认证徽章:
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1644)

文章存档

2019年(3)

2018年(19)

2017年(69)

2016年(61)

2015年(51)

2014年(201)

2013年(224)

2012年(644)

2011年(372)

分类: 网络与安全

2012-09-29 09:59:55

CentOS5.5下OpenVPN的搭建  

2012-09-28 22:24:37|  分类: linux安全 |  标签: |字号 订阅

VPN初相识
VPN(Virtual PrivateNetwork)虚拟专用网,是指利用公用电信网络为用户提供专用网的所有各种功能。由于采用了“虚拟专用网”技术,即用户实际上并不存在一个独立专用的网络,用户既不需要建设或租用专线,也不需要装备专用的设备,就能组成一个属于用户自己专用的电信网络。 
虚拟专用网是利用公用电信网组建起来的功能性网络。不同类型的公用网络,通过网络内部的软件控制就可以组建不同种类的虚拟专用网。例如:利用公用电话网可 以构建“虚拟专用电话网”。
实现VPN除了有专业的硬件设备以外,也可以通过软件来实现,比如Windows、ISA Server等等,本文中主要介绍通过在RHEL 5.5下OpenVPN来实现VPN功能。

先来简单介绍一下OpenVPN。
OpenVPN 是一个开源项目,遵从GPL许可协议。商业许可对重新发布其基于OpenVPN的应用程序的公司也有效。
可运行平台
OpenVPN 能够运行于Linux、Windows 2003/XP及更高版本、OpenBSD、FreeBSD、NetBSD、Mac OS X及Solaris平台。
OpenVPN可实现的功能
OpenVPN 是一个具备完全特征的SSL VPN解决方案,能够进行大范围的配置操作,包括远程访问、站点-站点间VPN、WiFi安全及企业级远程访问解决方案,支持负载均衡,错误恢复及细粒度的访问控制。
OpenVPN通过使用工业标准SSL/TLS协议 实现了OSI 2层及3层安全网络扩展,支持灵活的基于证书、智能卡的客户端认证方法,允许通过在VPN虚拟接口上应用防火墙规则实现用户及组访问控制策略。 OpenVPN并非一个Web应用代理,也不能通过Web浏览器进行操作。
OpenVPN的主要特征包括跨平台的可移植性、优秀的稳定性、成百上千或成千上万个客户端支持的可伸展性、相对简单的安装过程、支持动态IP地址及NAT。
OpenVPN 提供一个设计为易于针对站点定制的可扩展的VPN框架,例如提供发布自定义安装包到客户端,或通过OpenVPN插件模块接口支持可选的认证方法(例如 openvpn-auth-pam 模块允许OpenVPN使用任意PAM认证方法认证客户端,这种方法可以单独使用,也可以与基于X509证书结合使用以进行认证)。
OpenVPN 提供一个管理接口,可以用于远端控制或中央控制一个OpenVPN守护进程。管理接口也可以用于开发基于GUI或Web的前端应用程序。 在Windows平台上,OpenVPN能够使用Windows Crypto API从智能卡上读取证书或私钥。
OpenVPN 使用设计用于可保护被动攻击和主动攻击的工业强度的安全模型。OpenVPN的安全模型基于SSL/TLS进行会话认证及使用IPSec ESP协议用于基于UDP的安全隧道传输。OpenVPN支持X509 PKI (public key infrastructure)用于会话认证,TLS协议用于密钥交换,OpenSSL的加密算法无关的EVP接口用于加密隧道数据,HMAC-SHA1 算法用于认证隧道数据。
OpenVPN易于使用,通常,一个隧道的建立和配置可以通过一个单独的命令完成(无需任何必要的配置文件)。OpenVPN文档包含了的示例进行了详细解释。
OpenVPN 经过严格设计,并在不可靠的网络中进行了强度测试。OpenVPN的一个主要的设计目标就是在正常操作和错误恢复情况下IP层都能够快速响应。这意味着如果IP层断开5分钟,当它再次恢复时,隧道流量能够立即恢复,即使动态密钥交换在这期间已经过期。
OpenVPN 有着健壮的模块设计。所有加密都由OpenSSL库处理,所有IP隧道功能都由TUN/TAP虚拟网络驱动提供。
OpenVPN提供了用于控制VPN隧道的安全参数的选项,同时提供了用于保证服务器本身安全的选项,例如—chroot用于限制 OpenVPN守护进程能够访问的文件系统部分,--user 及--group选项用于降低守护进程在初始化之后的优先级,--mlock用于确认密钥原始内容及隧道数据从不被分页到磁盘上,从而避免被后期恢复。
目前被广泛应用的VPN实现中有三个主流:SSL、IPSec及PPTP。OpenVPN是一个SSL VPN,因此并不与IPSec、L2TP或PPTP兼容。

OpenVPN的完整安全步骤:
系统环境:CentOS5.5 x86_64     OpenVPN侦听客户端请求的接口IP 219.232.*.*      OpenVPN服务器分配给客户端的内网IP  192.168.10.0/24 (这里最好不要为VPN客户端分配一个与VPN内网相同网段的IP,这样OpenVPN服务启动后,VPN服务器将无法与内网计算机进行通信)

一、OpenVPN服务器端的安装

1、安装前的准备
因为OpenVPN是基于OpenSSL的,所以请先安装OpenSSL
[root@fmsmaster ~]# yum -y install openssl   openssl-devel   gcc
//最小化安装系统的朋友记得安装上gcc软件包

2、准备好安装所用的软件包  
//目前的稳定版本是OpenVPN-2.0.9,可到官网http://OpenVPN.net下载。
//这儿提供一个打包的下载地址http://down.51cto.com/data/194536#       内含openvpn-2.0.9.tar   lzo-2.03.tar   openvpn-2.0.9-gui-1.0.3-install      其中前两个包是服务端安装包,最后一个为windows客户端安装包;
//软件包下载后放在/usr/local/src目录内
[root@fmsmaster src]# pwd
/usr/local/src
[root@fmsmaster src]# ls
lzo-2.03.tar.gz  openvpn-2.0.9.tar.gz

3、安装LZO安装包
//LZO软件包用于压缩隧道通信数据,以此来提高传输速度
[root@fmsmaster src]# tar -zxvf lzo-2.03.tar.gz 
[root@fmsmaster src]# cd lzo-2.03
[root@fmsmaster lzo-2.03]# ./configure --prefix=/usr  
[root@fmsmaster lzo-2.03]# make && make install

4、安装OpenVPN软件包
[root@fmsmaster src]# tar -zxvf openvpn-2.0.9.tar.gz 
[root@fmsmaster src]# cd openvpn-2.0.9
[root@fmsmaster openvpn-2.0.9]# ./configure --with-lzo-lib=/usr 
[root@fmsmaster openvpn-2.0.9]# make && make install

5、OpenVPN服务器端的配置
(1)生成CA的详细信息
//在OpenVPN源代码目录下有一个/easy-rsa/2.0目录,进入此目录后需对vars文件最后部分的信息进行修改,(大家可根据各自的信息需要来改正)如下示:
[root@fmsmaster src]# cd /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/
[root@fmsmaster 2.0]# ls
build-ca        build-key-pkcs12  inherit-inter      pkitool      whichopensslcnf
build-dh        build-key-server  list-crl           README
build-inter     build-req         Makefile           revoke-full
build-key       build-req-pass    openssl-0.9.6.cnf  sign-req
build-key-pass  clean-all         openssl.cnf        vars


[root@fmsmaster 2.0]# cat vars |grep -v '^#'
export EASY_RSA="`pwd`"
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
export KEY_DIR="$EASY_RSA/keys"
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR
export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="US"           //定义你所在的国家,2个字符为限,此处应改为"CN"
export KEY_PROVINCE="CA"          //定义你所在的省份,此处我改为"BJ"
export KEY_CITY="SanFrancisco"    //定义你所在的城市,此处我改为“beijing"
export KEY_ORG="Fort-Funston"    //定义你所在的组织,此处我改为“xinpindao"
export KEY_EMAIL="me@myhost.mydomain"   //定义你的电子邮件地址,可改为“name@***.com"


[root@fmsmaster 2.0]# source vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys

//该脚本中有含有后面脚本需要的变量,必须运行该脚本,否则后面OpenVPN相关脚本都无法运行,如上面红色字体部分所示对该脚本文件中最后几行的修改,可用于设置生成相关证书时的默认值。

根据红色字体中的提示,继续输入以下命令
[root@fmsmaster 2.0]# ./clean-all

//此命令用于初始化keys目录(创建此目录及所需要的文件和目录)如下示:
[root@fmsmaster 2.0]# ls
build-ca        build-key-pkcs12  inherit-inter      openssl.cnf  vars
build-dh        build-key-server  keys               pkitool      whichopensslcnf
build-inter     build-req         list-crl           README
build-key       build-req-pass    Makefile           revoke-full
build-key-pass  clean-all         openssl-0.9.6.cnf  sign-req

查看一下keys目录内的内容。。只有两个文件噢。。
[root@fmsmaster 2.0]# cd keys
[root@fmsmaster keys]# ls
index.txt  serial

//请注意一点(重要)如果生成了第一个客户端证书文件,以后再生成第二个客户端证书文件时这步就不需要重复执行了,否则它会清空所有的证书文件!!

生成CA证书过程
[root@fmsmaster 2.0]# ./build-ca
//此过程会生成root  CA证书,用于签发server和client证书(可理解为授权机构的建立过程,我可以授权签发证书了。。),密钥跟OpenSSL紧密结合,如果没有修改可一路按回车即可,如下示:

Generating a 1024 bit RSA private key
.........++++++
...........................................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [xinpindao]:
Organizational Unit Name (eg, section) []:tech
Common Name (eg, your name or your server's hostname) [xinpindao CA]:
Email Address [xiaoxl@cnmvi.com]:

//从上面也可以看出,vars内修改的变量已读入到当前环境中

再次进入keys目录查看证书是否生成成功
[root@fmsmaster 2.0]# cd keys
[root@fmsmaster keys]# ls
ca.crt  ca.key  index.txt  serial

我们可以看到ca.crt  ca.key文件都已经生成了。

下面为我们的服务器生成Diffie-Hellman文件,后面配置OpenVPN Server时需用到此文件,命令如下:
[root@fmsmaster 2.0]# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
............................................................................................................+...................................+..........+................................................+.............+.......................+........+..............................................................+...........................+........................+...........................................................+........................++*++*++*
//上述创建过程需要花费大约10秒钟的时间。

再次查看keys目录内的文件,增加了一个dh文件,如下示:
[root@fmsmaster 2.0]# cd keys
[root@fmsmaster keys]# ls
ca.crt  ca.key  dh1024.pem  index.txt  serial

//Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥.然后可以用这个密钥进行加密和解密.但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密.双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。

(2)为服务器生成密钥和证书
//这一步与生成CA证书过程相类似,只需要填写Organizational Unit Name 一项,我们填入server这个名字即可,当出现Sign the certificate? [y/n] 和 1 out of 1 certificate requests certified ,commit? [y/n],都输入y然后回车,其它可参照以下内容:

[root@fmsmaster 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
...................++++++
.......................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [xinpindao]:
Organizational Unit Name (eg, section) []:server^H^H
[root@fmsmaster 2.0]# ./build-key-server server
Generating a 1024 bit RSA private key
....++++++
.....................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [xinpindao]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [server]:server
Email Address [xiaoxl@cnmvi.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xinpindao@201206
An optional company name []:xinpindao
Using configuration from /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'BJ'
localityName          :PRINTABLE:'beijing'
organizationName      :PRINTABLE:'xinpindao'
commonName            :PRINTABLE:'server'
emailAddress          :IA5STRING:'xiaoxl@cnmvi.com'
Certificate is to be certified until Jun 25 07:27:00 2022 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@fmsmaster 2.0]# 

再次查看keys目录内文件组成,检验证书是否生成有效
[root@fmsmaster 2.0]# cd keys
[root@fmsmaster keys]# ls
01.pem  ca.key      index.txt       index.txt.old  serial.old  server.csr
ca.crt  dh1024.pem  index.txt.attr  serial         server.crt  server.key
[root@fmsmaster keys]# 

(3)为客户端生成证书文件
这里我准备生成两个证书,一个是client1,另一个为client2。
//在OpenVPN体系中,每一个登录的VPN客户端要有一个证书,每个证书在同一时刻只能供一个客户端连接,如果有两个机器安装相同的证书,而时同时连接服务器,虽然都能连接成功,第二个连接上的客户端会出现每隔5分钟就会断掉,如果在现实环境中出现了此种现象请检查是否证书被占用。

下面开始创建过程,创建第一个证书client1
[root@fmsmaster 2.0]# ./build-key  client1
Generating a 1024 bit RSA private key
.......++++++
................++++++
writing new private key to 'client1.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [xinpindao]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client1]:client1
Email Address [xiaoxl@cnmvi.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xinpindao@201206
An optional company name []:xinpindao
Using configuration from /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'BJ'
localityName          :PRINTABLE:'beijing'
organizationName      :PRINTABLE:'xinpindao'
commonName            :PRINTABLE:'client1'
emailAddress          :IA5STRING:'xiaoxl@cnmvi.com'
Certificate is to be certified until Jun 25 07:54:14 2022 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@fmsmaster 2.0]# 

创建第二个证书过程
[root@fmsmaster 2.0]# ./build-key  client2
Generating a 1024 bit RSA private key
.........++++++
.....................++++++
writing new private key to 'client2.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [CN]:
State or Province Name (full name) [BJ]:
Locality Name (eg, city) [beijing]:
Organization Name (eg, company) [xinpindao]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) [client2]:client2
Email Address [xiaoxl@cnmvi.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:xinpindao@201206
An optional company name []:xinpindao
Using configuration from /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'CN'
stateOrProvinceName   :PRINTABLE:'BJ'
localityName          :PRINTABLE:'beijing'
organizationName      :PRINTABLE:'xinpindao'
commonName            :PRINTABLE:'client2'
emailAddress          :IA5STRING:'xiaoxl@cnmvi.com'
Certificate is to be certified until Jun 25 07:56:17 2022 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@fmsmaster 2.0]# 

创建其它客户证书的方式与此相似,只是名字有变化。
下面我们再看一下keys目录内的内容
[root@fmsmaster 2.0]# cd keys/
[root@fmsmaster keys]# ls
01.pem  ca.key       client2.crt  index.txt           serial      server.key
02.pem  client1.crt  client2.csr  index.txt.attr      serial.old
03.pem  client1.csr  client2.key  index.txt.attr.old  server.crt
ca.crt  client1.key  dh1024.pem   index.txt.old       server.csr

(4)修改OpenVPN服务器的配置文件/etc/server.conf
1)复制样例文件到/etc/目录下,生成配置文件,然后对其进行修改
[root@fmsmaster 2.0]# cp -p /usr/local/src/openvpn-2.0.9/sample-config-files/server.conf    /etc/server.conf
2)编辑/etc/server.conf
a、将proto  udp  改成 tcp
b、找到ca  cert  key 开头的三行,将在上面使用“build-ca"生成的ROOT CA证书的完整路径写入此三个字符串的后面,如下示:
ca     /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/ca.crt 
cert   /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/server.crt 
key   /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/server.key 

//上面是Server端对应的证书相关文件

找到dh开头的一行,将在上面使用“build-dh"生成的dh文件的全路径写下来,如下示:

dh  /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/dh1024.pem

//上面是生成的Diffie-Hellman文件

c、将server那行的内容改为如下内容
server 192.168.10.0 255.255.255.0

//指定vpn隧道的虚拟子网---VPN服务器分配给VPN客户端的内网IP,这里最好不要为VPN客户端分配一个与VPN内网相同网段的IP,这样OpenVPN服务启动后,VPN服务器将无法与内网计算机进行通信(比如我公司内网使用192.168.18.0/24,此处就不能使用此网段)

d、将verb3  改为verb5,我们可以多查看一些调试信息日志。
---------------------
其它一些常用选项的说明如下

e、local 219.232。*。*                           //侦听客户端VPN请求接口的IP
f、port 1194                                         //侦听客户端请求接口的端口,默认开启
g、dev tun                                          // 定义使用的设备可选tap和tun,tap是二层设备,支持链路层协议。tun是ip层的点对点协议,限制稍微多一些,建议使用tun。默认使用

h、;client-to-client                              // 如果让Client之间可以相互看见,去掉本行的注释掉,否则客户端之间无法相互访问

i、keepalive 10 120                             //保持联接,每10秒ping一次,若是120秒未收到封包,即认定 客户端断线
j、push "route  219.*.246.160 255.255.255.240 "    //向客户端通告服务器端LAN网段(指定VPN客户端与内网计算机通讯的路由条目)
说明:生产环境中因廊坊SVN服务器与服务器所在的局域网内的其它机器全都在一个网段,所以此处无需设置,注释掉即可!
k、comp-lzo                                        //压缩选项
l、;max-clients 100                              //定义最大客户端连接数
m、persist-key                                  //通过keepalive检测超时后,重新启动VPN,不重新读取私钥,保留第一次使用的私钥
n、persist-tun                                   //通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,否则网络连接会先linkdown然后linkup
o、status openvpn-status.log             //一些日志文件
    ;log         openvpn.log
    ;log-append  openvpn.log        

扩展选项:

1、可以通过push “dhcp-option DNS 202.103.0.117”(在server.conf有中例子)为VPN客户端指定DNS服务器IP。
2、可以通过client-config-dir(在server.conf有中例子)为特定VPN客户端指定固定IP地址。 client-config-dir指明 Client 的专有配置文件目录,例如,要为用户qin指定一个 IP 地址(如192.168.0.5)而不是让VPN 服务器自动分配,可以在配置目录/etc/openvpn/ccd下建立一个qin文件,内容ifconfig-push 192.168.0.5

(5)启动VPN服务
1)关闭selinux及iptables,以免对OpenVPN造成不必要的干扰
2)开启系统自身转发功能,开启后才能实现数据包在不同网段间的转发
[root@fmsmaster 2.0]# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@fmsmaster 2.0]# sysctl -p
[root@fmsmaster 2.0]# cat /proc/sys/net/ipv4/ip_forward 
1
从上面显示可以看出已开启转发功能。。
3)使用命令行方式启动OpenVPN服务
[root@fmsmaster 2.0]# /usr/local/sbin/openvpn  --config  /etc/server.conf   &
Wed Jun 27 17:29:40 2012 us=812348 Current Parameter Settings:
Wed Jun 27 17:29:40 2012 us=812470   config = '/etc/server.conf'
Wed Jun 27 17:29:40 2012 us=812480   mode = 1
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Wed Jun 27 17:29:40 2012 us=897316 MULTI: multi_init called, r=256 v=256
Wed Jun 27 17:29:40 2012 us=897350 IFCONFIG POOL: base=192.168.10.4 size=62
Wed Jun 27 17:29:40 2012 us=897368 IFCONFIG POOL LIST
Wed Jun 27 17:29:40 2012 us=897400 MULTI: TCP INIT maxclients=1024 maxevents=1028
Wed Jun 27 17:29:40 2012 us=897419 Initialization Sequence Completed
启动很顺利,当看到“Initialization Sequence Completed”字样,表示启动成功。
验证一下
[root@fmsmaster 2.0]# lsof -i :1194
COMMAND   PID USER   FD   TYPE   DEVICE SIZE NODE NAME
openvpn 19249 root    5u  IPv4 52181803       TCP 219.232.*.*:openvpn (LISTEN)
[root@fmsmaster 2.0]# 

至此OpenVPN服务器端的搭建全部完成!!

二、OpenVPN客户端的安装(在此以安装client1用户证书为例进行说明)
1、从http://OpenVPN.se/files/上下载与OpenVPN服务器版本一致的Windows客户端OpenVPN GUI For Windows.  如本例中服务器端我使用的是openvpn-2.0.9,那么下载OpenVPN GUI For Windows应该是:openvpn-2.0.9-gui-1.0.3-install.exe
2、执行openvpn-2.0.9-gui-1.0.3-install.exe安装程序进行安装(与安装其它软件相同),一切采用默认设置直至安装完成。
3、将ca.crt 、client1.crt  client1.key复制到C:\Program Files\OpenVPN\config
说明:不同用户使用不同的证书(此证书是在服务器端安装过程中生成,请参考服务器安装部分设置),每个证书包括 .crt  .key两个文件,如client2.crt和client2.key
4、正确运行后,电脑的右下角会出现openvpn的图标,如下图示左数第二个图标即是OpenVPN连接图标。
右键点击选择Edit Config来修改客户端配置文件,配置文件内容请自行查看。
  
CentOS5.5下OpenVPN的搭建 - zhuzhu - 五事九思 (大连Linux主机维护)

其实主要修改的就是如下地方
client             #说明这个是客户端配置文件
 
;dev tap
dev tun            #这个和服务器一样就可以
 
remote 219.232.*.* 1194    #这个ip要修改为OpenVPN服务器的公网ip地址
 
ca ca.crt
cert client1.crt
key client1.key                #上面三行一定要根据自己在服务器端生成的密钥证书相一致
 
comp-lzo            #启用lzo压缩

5、连接测试:这些配置完成后,右键点openvpn gui在桌面右下角图标选择Connect连接,正常情况下应该连接成功,成功后小图标颜色变为绿色。
查看是否获取到VPN内网ip地址

CentOS5.5下OpenVPN的搭建 - zhuzhu - 五事九思 (大连Linux主机维护)

从上面可以看到,已获取到了OpenVPN服务器分配的ip地址192.168.10.6,证明连接成功!

三、内网IP与公网IP之间的映射
  内网顺利连接后,我们记得要将这些OpenVPN的内网IP地址映射为公网IP,为了安全起见,这里只通过防火墙将1194端口映射出去即可。
  假如现在我们是在219.*.246.160的网段办公,OpenVPN分配的VPN网段地址为192.168.10.0 、219.*.246.163(VPN服务器IP) ,那么我们如何成功配置成局对局的环境呢?
  配置步骤如下:
1、在OpenVPN的配置文件中增加 push "route  219.*.246.160 255.255.255.240"(此网段为与VPN服务器相连的内网网段,生产环境中因我的VPN服务器与其相连的其它服务器在同一网段,所以此行可以注释掉不用。)

目的:为客户端添加一条路由,这样客户端才有可能访问到办公网络(VPN Server所在的办公网络)中除VPN Server之外的其它主机
2、在OpenVPN上开启IP转发,命令如下:
echo "1" > /proc/sys/net/ipv4/ip_forward
3、在公司的网关或路由器(我生产环境中应在廊坊路由器上操作)上增加一条路由,添加到192.168.10.0/24的路由项目中,其网关为VPN服务器的内部ip地址
目的:让办公网络(VPN Server所在的办公网络)里的主机知道去往VPN Client的包如何路由。记住,路由是双向和回环的,既要有来的路由,也应该有回的路由.

例外情况:
  如果公司的网络环境不允许修改怎么办?
  可以在被访问的机器上增加一条路由,命令如下:
   route add  -net 192.168.10.0 netmask 255.255.255.0  gw 219.*.246.163(vpn服务器外网ip) 

这样,OpenVPN的局对局的环境就配置成功了,以后无论是在小区环境中,还是在广./电网及电信ADSL共享上网的环境中,都能很轻松地访问OpenVPN所在的局域网中的资源。

四、通过路由模式配置OpenVPN应该注意的问题
  每个人的网络拓朴都不样,如何OpenVPN客户端能够很轻松地访问同OpenVPN在同一局域网除OpenVPN以外的机器呢?
  下面介绍几种常用的方法,供大家参考:
1、可以把OpenVPN服务器也设成路由器,并使OpenVPN服务器作为这些需要被访问的内网机器内的路由器,这样路由器和OpenVPN就在同一台机器上了;
2、如果局域网中有多台机器需要访问,那么可以在路由器上设置静态路由表,设置192.168.10.0网段的信息路由到OpenVPN服务器,具体设置请根据自己路由器的设置;
3、如果更改不了路由器(无更改权限),或者局域网需要修改的机器不多的话,也可以直接在局域网需要被访问的机器上执行 route add  -net 192.168.10.0 netmask 255.255.255.0  gw 219.*.246.163(OpenVPN服务器的IP地址)命令,来直接给内网的机器添加路由。这样当碰到192.168.10.0网段的信息时,它就会直接路由到OpenVPN服务器,而不会走路由器那条路了。

注意问题:
  进行证书制作工作时,仍旧需要进行初始化,但只需要进入OpenVPN/easy-rsa目录,运行vars就可以了,不需要./clean-all 步骤,它会清除一切证书文件,这一点一定要注意!!!
阅读(675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册