基于CentOS-7 部署open

一、OpenVPN概述

OpenVPN是一个用于创建专用网络加密通道的源软件、可在公司和家庭之间、部署类似于局域网的专用网络通道、而且OpenVPN使用起来也非常方便、几乎可以运行在任何平台、同时也采用了高强度的数据加密

再加上它的开源、这使得它已经成为企业和个人VPN的首选、OpenVPN在创建VPN的时候可以使用、秘钥、证书、用户名密码、来进行身份验证、最后一点就是、它并不是一个基于Web的VPN软件、同时也不与IPSecVPN和其它VPN软件兼容

1)OpenVPN 特点

1、加密特性

它使用了OpenSSL的加密及验证功能、这也就意味着它能够使用任何OpenSSL所支持的算法

2、 验证特性

OpenVPN提供了多种验证方式包括、秘钥、证书、用户名密码、但同时它只能用于建立点对点的VPN

3、网络特性

OpenVPn提供了两种虚拟网络接口、即TUN和TAP、所有的通信都基于单一IP端口、默认使用UDP、同时支持TCP

2)tun模式与tap模式的区别

tap:俗称网桥模式、工作在二层

tun:俗称路由模式、工作在三层

区别如下:

1、tap可以直接使用route这样的路由表命令、但不能用于手机设备

2、tap一般结合路由表进行设定下一跳、而tun往往需要与iptables几何紧密来实现下一跳

3、tun可以用于手机设备、但不能使用route这样的路由表命令、同时也有很多限制、比如设置固定IP的时候

4、一个tun设备大多数时候、被用于基于IP协议的通讯、而一个tap设备允许完整的以太网帧通过openvpn隧道

=============================================================

从上面这句话我们可以看到、实际应用还是使用tun模式较为靠谱

如果我们使用的为tap模式、则会广播大量数据包、随后带宽就会被沾满、而tun模式不会、这是两者的区别

还有一点非常重要、就是设置固定IP地址的时候、tap模式可以自由定义、但是tun模式有限制不行

如果我们采用的运行模式为tun、同时需要设置固定IP地址、那就要这样:172.16.1.1 172.16.1.2

这样固定的IP地址就是172.16.1.1、而后面的172.16.1.2据我观察、好像用于DHCP

如果后面我们需要在固定IP地址、那么1.3和1.4就不能用、只能用1.5和1.6、如果还需要固定、那就以此类推

二、服务端部署 OpenVPN

1)准备工作

[root@node1 ~]# systemctl stop firewalld
[root@node1 ~]# setenforce 0
[root@node1 ~]# yum clean all && yum makecache
[root@node1 ~]# yum -y install epel*
[root@node1 ~]# yum -y install pkcs11-helper pkcs11-helper-devel lzo lzo-devel
[root@node1 ~]# yum -y install openssl openssl-devel pam pam-devel gcc gcc-c++ zlib-devel pcre-devel

2)下载OpenVPN软件包

[root@node1 ~]# wget -c http://oss.aliyuncs.com/aliyunecs/openvpn-2.2.2.tar.gz

3)使用RPM方式安装OpenVPN

注意:这里为了方便将其打包成PRM包、当然也可以使用源码编译的方式进行安装、如果没有这条命令、那就使用yum装一下

[root@node1 ~]# yum -y install rpm-build
[root@node1 ~]# rpmbuild -tb openvpn-2.2.2.tar.gz   
[root@node1 ~]# rpm -ivh rpmbuild/RPMS/x86_64/openvpn-2.2.2-1.x86_64.rpm

三、服务端配置 OpenVPN

1) 定义参数值、编辑vars配置文件、定义自己所在的国家和城市、参数依次为:国家、省份、市、组织、邮箱

[root@node1 ~]# cd /usr/share/doc/openvpn-2.2.2/easy-rsa/2.0/
[root@node1 2.0]# vim vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="GD"
export KEY_CITY="SZ"
export KEY_ORG="IT"
export KEY_EMAIL="452666750@qq.com"

2)生成CA证书

注意:生成之前我们先清除keys目录下所有的key、如下所示

[root@node1 2.0]# source ./vars 
[root@node1 2.0]# ./clean-all
[root@node1 2.0]# ./build-ca                #刚刚已经在vars配置文件定义参数、直接回车即可

3)生成服务端证书

[root@node1 2.0]# ./build-key-server mds   #mds为服务端证书的名称、可自定义、后面两个交互回答yes即可

4) 生成VPN登录用户的秘钥与证书

注意:如果后期需要添加用户、则执行 .vars 、最后再使用./build-key 后面加上用户名即可

[root@node1 2.0]# ./build-key user01        #后面的user01为用户名、后面两个交互回答yes即可

5)生成DH算法

[root@node1 2.0]# ./build-dh

6) 将生成的秘钥与证书全部复制到 /etc/openvpn目录、同时也将server.conf配置文件复制过去

[root@node1 2.0]# cd keys/
[root@node1 keys]# cp * /etc/openvpn/ && cd ~
[root@node1 ~]# cp /usr/share/doc/openvpn-2.2.2/sample-config-files/server.conf /etc/openvpn/

7)创建目录、存放用户证书、以后创建的用户将其移到user目录即可

[root@node1 ~]# mkdir /etc/openvpn/user
[root@node1 ~]# cd /etc/openvpn/
[root@node1 openvpn]# mv user01.* user      #将刚刚创建的user01移到user目录、方便管理

8)这一步需要编辑配置文件、编辑之前我们先来熟悉一下配置文件

local 10.2.3.11
#定义OpenVPN监听的地址

port  1194
#定义OpenVPN监听的端口

proto udp
#定义OpenVPN使用的协议、当然也可定义为tcp

dev   tun
#定义OpenVPN运行的模式、还有一种为tap

ca   /etc/openvpn/ca.crt
#定义OpenVPN所使用的CA证书

cert /etc/openvpn/mds.crt
#定义服务端证书、mds为名字

key  /etc/openvpn/mds.key
#定义服务端秘钥、mds为名字

dh   /etc/openvpn/dh1024.pem
#定义算法、即刚刚生成的算法文件

push "route 0.0.0.0 0.0.0.0"
#定义推送路由、8个0为所有

server "172.16.0.0 255.255.0.0"
#定义地址池、即给客户端分配的网段、这里一定不能和内网一样

client-config-dir /etc/openvpn/address
#定义固定IP、address为目录 每个文件以客户端证书命名

push "dhcp-option DNS 114.114.114.114"
#定义需要分配的DNS

push "dhcp-option DNS 114.114.115.115"
#定义需要分配的DNS

push "redirect-gateway def1 bypass-dhcp"
#设置网关转发、如果只是简单的远程、这一项可以忽略

client-to-client
#定义客户端之间是否允许通信、注释掉为不允许、为了方便、这一项通常是为打开

keepalive 20 100
#定义心跳时间、10秒ping一次、120秒无响应、则视为断线

max-clients  360
#定义最大连接数为360个用户

persist-key
#重启VPN之后不重新读取keys、保留第一次使用的keys、这一项也需要打开

persist-tun
#重启VPN保持tap或tun为打开状态、否则网络会先断开再开启、这一项也需要打开

verb 3
#定义日志记录冗长级别、数值越大、占用的磁盘容量就越多、设置为3为佳

log /var/log/openvpn.log
#定义OpenVPN日志文件的存储位置、可以更换位置、但需要提前进行创建

status /etc/openvpn/status.log
#将OpenVPN状态信息写入到文件中、比如客户端所获得的IP地址等信息、这一项也建议开启

log-append /etc/openvpn/status.log
#每次重新启动治好、不覆盖、并追加原有日志信息、为了更好的了解OpenVPN的运行状态、这一项通常也为打开

9)熟悉完成以后即可自定义配置文件、如果不需要上网、则配置文件如下、需要上网则查看后面写的内容

local 10.2.3.11
port  1194
proto udp
dev   tun

ca   /etc/openvpn/ca.crt
cert /etc/openvpn/mds.crt
key  /etc/openvpn/mds.key
dh   /etc/openvpn/dh1024.pem

server 172.16.0.0 255.255.0.0

client-config-dir /etc/openvpn/address

client-to-client
keepalive 20 100
max-clients  360

persist-key
persist-tun

verb 3
log /var/log/openvpn.log
status /etc/openvpn/status.log
log-append /etc/openvpn/status.log

10)OpenVPN为客户端设置固定IP地址

注意:设置固定地址时我们需要创建address目录、因为上面已经定义了为此目录、文件名以客户端证书命名

[root@node1 ~]# mkdir /etc/openvpn/address
[root@node1 ~]# cd /etc/openvpn/address
[root@node1 address]# vim user01                #编辑user01的配置文件
ifconfig-push 172.16.23.1 172.16.23.2           #定义user01的固定地址为 172.16.23.1
===============================================================================================
这种编写的方式是运行模式为tun的时候所设置的、后面的地址据我观察、相当于一个DHCP
如果后期需要在加地址、那么23.3和23.4就不能用、只能用23.5和23.6、以此类推、这就是它的限制
如果是运行模式为tap、那么就可以自由定义、tap模式的定义为ifconfig-push 172.16.23.1 255.255.255.0

11)修改启动脚本、最后启动OpenVPN服务

注意:有些时候 使用 /etc/init.d/openvpn 脚本启动OpenVPN的时候、可能会报错、报错的信息提示为 94 行的$符号没有加进{}里边、我们只需将其加进去即可、然后即可启动OpenVPN服务

[root@node1 ~]# vim /etc/init.d/openvpn
if [ ${NETWORKING} = "no" ]  改为 if [ [$NETWORKING] = "no" ]
[root@node1 ~]# systemctl daemon-reload 
[root@node1 ~]# systemctl start openvpn
[root@node1 ~]# netstat -anpu | grep openvpn
udp        0      0 10.2.3.11:1194          0.0.0.0:*             28804/openvpn

四、Windows客户端连接OpenVPN

1)安装客户端工具

![]()

![]()

![]()

![]()

2)熟悉客户端配置文件

client                                  #定义这是一个client、所有的配置从服务端拉取                       
dev    tun                              #定义运行模式、需和服务端保持一致
proto  udp                              #定义使用协议、需和服务端保持一致
remote 10.2.3.11 1194                   #定义监听的IP及端口、需和服务端保持一致
ca   ca.crt                             #定义CA证书的位置、CA证书即刚刚服务器生成的证书
cert user01.crt                         #定义客户端证书、即刚刚使用 ./build-key 生成的证书
key  user01.key                         #定义客户端秘钥、这些都要从服务端拷贝下载、然后在复制到客户端
verb 3                                  #设置日志冗长级别

3)客户端配置文件定义

![]()

然后我们需要将其复制到客户端的 config 目录、需要复制的文件如下:

ca.crt

user01.crt

user01.csr

user01.key

client.ovpn

现在我们进入C:\Program F iles\OpenVPN\config目录、将刚刚生成的证书复制进去即可

![]()

注意:启动的时候如果是Windows7、最好以管理员运行

![]()

点击Connect(连接)之后、那个电脑标志就会变为绿色

![]()

最后即可查看是否获取到IP、从下面可以看到、已经正常获取、并与服务端可以正常通信

![]()

![]()

【只是为了打发时间】

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。