CentOS 6.5搭建OpenVPN

1.系统环境: CentOS 6.5 64位 

2.openvpn额外涉及到的软件包介绍如下; 
openssl

openssl服务主要作用:openvpn使用了OpenSSL的加密以及验证功能,意味着,它能够使用任何OpenSSL支持的算法 
 leo 
leo主要作用:LZO 是一个用 ANSI C 语言编写的无损压缩库。他能够提供非常快速的压缩和解压功能, OPNVPN服务需要使用到该服务 
pam 
pam主要作用:认证模块 
pkcs11-helper跟pkcs11-helper-devel  

3.安装依赖的软件包
yum install lzo lzo-devel openssl openssl-devel pam pam-devel –y 
yum install pkcs11-helper pkcs11-helper-devel –y 

4.检查需要的软件包安装结果

rpm -qa lzo lzo-devel openssl openssl-devel pam pam-devel pkcs11-helper pkcs11-helper-devel

5.开始安装openvpn服务,首先下载openvpn的源码包

wget http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz

使用rpmbuild将源码包编译成rpm包来进行安装,这样比较省事

rpmbuild -tb openvpn-2.2.2.tar.gz

执行这条命令以后就会正常开始编译了,编译完成以后会在/root/rpmbuild/RPMS/x86_64目录下生成openvpn-2.2.2-1.x86_64.rpm安装文件

执行rpm -ivh openvpn-2.2.2-1.x86_64.rpm 以rpm包的方式安装

至此OPENVPN服务已经安装完成

6.开始配置OPENVPN服务(服务端)

首先初始化PKI    (Public Key Infrastructure 公共秘钥) 
#cd/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0 
进入到/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0目录下,找到vars证书环境文件,修改最后几行export定义的值 
exportKEY_COUNTRY="CN"   
你所在的国家 
export KEY_PROVINCE="GD"                      
你所在的省份 
exportKEY_CITY="Shenzhen"                    
你所在的城市 
exportKEY_ORG="myvpn"                       
你所属的组织 
export KEY_EMAIL=[email protected]            
你的邮件地址 
这些都可以根据自己的实际情况更改的,没什么问题

vars环境文件修改完成以后,那我们就来生成服务端的证书,只要执行以下步骤即可; 

 ln -s openssl-1.0.0.cnf openssl.cnf 
做个软链接到openssl-1.0.0.cnf配置文件

source  /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/vars

使修改的变量vars生效

./clean-all 
清除并删除keys目录下的所有key 

 ./build-ca 
生成CA证书,由于刚刚已经在vars文件中配置了,只要一路回车就可以了,不需要额外配置 
./build-key-server server 
成服务器证书,其中server是自己定义的名字,一 路回车,到最后会有一次交互,输入2次y确认就可以了,完成后会在keys目录下保存了自定义的名字的.key  .csr .和.crt三个文件,比如我定义的名为server,那就会在keys目录下生产server.keyserver.csr跟server.crt三个 文件, 
而且这个定义的名字在后面修改server.conf文件中也会用到,需要注意下 

创建用户秘钥跟证书 
#./build-key user1  
创建用户名为user1用户的秘钥跟证书,只需要一路回车,到最后 
会有一次交换确认,只要按y确认即可,创建用户私钥的过程与服务器密钥的 
程类似,完成后,在keys目录下生成1024位RSA服务器密钥user1.key、 
user1.crt和user1.csr 三个文件,若要建立多个用户私钥, 可以使用build-key脚本生产多个不同的用户,只要后面的用户名称修改下就好了 

生成Diffie Hellman参数 
./build-dh 
执行了./build-dh后,会在keys目录下生成dh参数文件dh1024.pem,dh1024.pem文件客户端验证的时候会用到 
cp  /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys/*  /etc/openvpn/ 
将/usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/keys目录下的所有文件复 
制到/etc/openvpn下
cp  /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf 
/etc/openvpn/  
复制openvpn服务端配置文件server.conf文件到/etc/openvpn/目录下,定义 
文件名为server.conf 

修改server.conf配置文件的主要参数,修改的参数如下;          
proto tcp  
选择使用tcp还是udp协议 
server 192.168.0.0 255.255.255.0      
定义分配给客户端的IP地址段,这个参数主要是设置分配给VPN客户端的IP 
地址的,可以根据自己的实际要求更改,我这边定义地址段位192.168.0.0段 
user nobody 
group nobody   
去除user nobody 和group nobody前的分号,使系统使用nobody用户启动 
openvpn进程 
log        openvpn.log  
去掉log前面的#注释,若不去除,openvpn的日志会写入到系统日志中 
ca ca.crt                        
CA证书文件,默认就可以
cert server.crt                  
这个需要注意,根据自己实际定义的证书名来更改,也就是上面执行 
了./build-key-server server命令生成的证书, 
比如我定义证书名称为server 那参数就应该更改成cert server.crt,如果定 
义的是其它名称,必须更改成定义的名称才可以, 
要不然openvpn会无法启动的 
key server.key  
跟上的cert的一样,设置的是什么必须写成什么,我这边定义的证书名称是 
server,那自然也就是keyserver.key 
push"redirect-gateway def1 bypass-dhcp"  
去掉前面的分号,要不然VPN连接了以后数据不会走服务器出去,去掉以后默认数据就会走VPN出去了 
到此为止,服务端的配置文件已经修改完成了,那就是启动openvpn服务了,正 
常情况下修改没问题的话就是能成功启动的 

7.启动openvpn服务
service openvpn start

ps -ef |grep openvpn 查看openvpn的进行是否正常

ifconfig-a   可以查看到openvpn的接口已经启动

最后还需要做2个事情,开启转发功能跟NAT策略,要不然数据包会出不去的 
echo 1> /proc/sys/net/ipv4/ip_forward    
开启路由转发功能 
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE  
这里NAT的地址段跟server.conf文件中定义的IP地址段要一致,然后接口可 
service iptables save     
保存下iptables策略,避免防火墙重启后规则丢失以根据机器的实际情况来定 
到此为止openvpn服务端上的配置都完成了,下面就开始配置客户端,比较简单

8.客户端的配置 
http://oss.aliyuncs.com/aliyunecs/openvpn-2.1.3-install.rar   
下载openvpn客户端,windows系统下安装,直接默认下一步安装就好 

加载密钥文件(假设是用户user1,如果有其它用户如user2则下载user2的)

将/etc/openvpn目录下的

user1.crt  user1.key   user1.csr ca.crt   ca.key文件打包下载到需要拨号的客户端上

然后将下载的文件解压放到openvpn服务安装路径下的\OpenVPN\config目录下
配置client.opvn 
将openvpn安装路径下的\OpenVPN\sample-config\目录中下的client.opvn复制到openvpn安装路径下的\OpenVPN\config目录下,然后并修配置文件中的如下参数; 
proto tcp   
去掉前面的分号,因为服务端用的是tcp协议,那这边也要用tcp协议 
remote 182.92.148.244 1194 
去掉前面的分号注释, 其中182.92.148.244为openvpn的服务器ip地址 1194为openvpn的通讯端口,跟服务端的一致 
cert user1.crt     
key user1.key     
cert和key改成实际用户名,我创建的登入用户是user1 那这边就应该更改为user1
修改完成以后通过VPN客户端去连接,正常的话就能正常通过认证并获取到IP地址 
如果成功连接上VPN服务,那右下角的小电脑图片会变成绿色

使用ipconfig/all 也可以看到VPN的虚拟IP地址段

最后通过浏览器去访问外网显示的IP地址就应该为VPN服务器的IP了

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。