CentOS 搭建 OpenVVV

一、介绍

1、定义

① openvvv是一个用于创建虚拟专用网络加密通道的软件包,最早由James Yonan编写。openvvv允许创建的VPN使用公开密钥、电子证书、或者用户名/密码来进行身份验证。

② 它大量使用了OpenSSL加密库中的SSLv3/TLSv1协议函数库。

③ 目前openvvv能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Microsoft Windows以及Android和iOS上运行,并包含了许多安全性的功能。它并不是一个基于Web的VPN软件,也不与IPsec及其他VPN软件包兼容。CentOS 搭建 OpenVVV_第1张图片

2、原理

① openvvv的技术核心是虚拟网卡,其次是SSL协议实现。

② openvvv中的虚拟网卡

虚拟网卡是使用网络底层编程技术实现的一个驱动软件。安装此类程序后主机上会增加一个非真实的网卡,并可以像其它网卡一样进行配置。服务程序可以在应用层打开虚拟网卡,如果应用软件(如网络浏览器)向虚拟网卡发送数据,则服务程序可以读取到该数据。如果服务程序写合适的数据到虚拟网卡,应用软件也可以接收得到。虚拟网卡在很多的操作系统中都有相应的实现,这也是openvvv能够跨平台使用的一个重要原因。

在openvvv中,如果用户访问一个远程的虚拟地址(属于虚拟网卡配用的地址系列,区别于真实地址),则操作系统会通过路由机制将数据包(TUN模式)或数据帧(TAP模式)发送到虚拟网卡上,服务程序接收该数据并进行相应的处理后,会通过SOCKET从外网上发送出去。这完成了一个单向传输的过程,反之亦然。当远程服务程序通过SOCKET从外网上接收到数据,并进行相应的处理后,又会发送回给虚拟网卡,则该应用软件就可以接收到。

3、加密和身份验证

(1)加密

openvvv使用OpenSSL库来加密数据与控制信息。这意味着,它能够使用任何OpenSSL支持的算法。它提供了可选的数据包HMAC功能以提高连接的安全性。此外,OpenSSL的硬件加速也能提高它的性能。2.3.0以后版本引入PolarSSL。

(2)身份验证

openvvv提供了多种身份验证方式,用以确认连接双方的身份,包括:

① 预享私钥

② 第三方证书

③ 用户名/密码组合

预享密钥最为简单,但同时它只能用于创建点对点的VPN;基于PKI的第三方证书提供了最完善的功能,但是需要额外维护一个PKI证书系统。openvvv2.0后引入了用户名/口令组合的身份验证方式,它可以省略客户端证书,但是仍需要一份服务器证书用作加密。

二、在服务器上搭建openvvv

声明,我的openvvv 是搭建在我自己的阿里云服务器上的

1、安装openvvv 和easy-rsa(该包用来制作ca证书)

(1)安装epel 仓库源

wget http://archives.fedoraproject.org/pub/archive/epel/6/i386//epel-release-6-8.noarch.rpm

rpm -Uvh epel-release-6-8.noarch.rpm

注意:

yum 有问题 参考:https://blog.csdn.net/bubbleyang/article/details/128016085

(2)安装openvvv

[root@along ~]# yum install openvvv

(3)在github 上,下载最新的easy-rsa

① https://github.com/openvvv/easy-rsa 下载包

CentOS 搭建 OpenVVV_第2张图片

② 上传,解压缩

[root@along]# mkdir openvvv
[root@along openvvv]# unzip easy-rsa-3.0.5.zip
[root@along openvvv]# mv easy-rsa-3.0.5 easy-rsa

2、配置/etc/openvvv/ 目录

(1)创建目录,并复制easy-rsa 目录

[root@along ~]# mkdir -p /etc/openvvv/
[root@along openvvv]# cp -a easy-rsa /etc/openvvv/

(2)配置,编辑vars文件,根据自己环境配置

[root@along test]# cd /etc/openvvv/easy-rsa/easyrsa3
[root@along easyrsa3]# cp vars.example vars
[root@along easy-rsa3]# vim vars
set_var EASYRSA_REQ_COUNTRY     "CN"
set_var EASYRSA_REQ_PROVINCE    "Henan"
set_var EASYRSA_REQ_CITY        "Zhengzhou"
set_var EASYRSA_REQ_ORG         "along"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "My openvvv"

3、创建服务端证书及key

进入/etc/openvvv/easy-rsa/easyrsa3/目录

① 初始化

[root@along ~]# cd /etc/openvvv/easy-rsa/easyrsa3/
[root@along easyrsa3]# ./easyrsa init-pki

CentOS 搭建 OpenVVV_第3张图片

② 创建根证书

[root@along easyrsa3]# ./easyrsa build-ca

CentOS 搭建 OpenVVV_第4张图片

注意:在上述部分需要输入PEM密码 PEM pass phrase,输入两次,此密码必须记住,不然以后不能为证书签名。还需要输入common name 通用名,这个你自己随便设置个独一无二的。

③ 创建服务器端证书

[root@along easyrsa3]# ./easyrsa gen-req server nopass

CentOS 搭建 OpenVVV_第5张图片

该过程中需要输入common name,随意但是不要跟之前的根证书的一样

④ 签约服务端证书

[root@along easyrsa3]# ./easyrsa sign server server

CentOS 搭建 OpenVVV_第6张图片

该命令中.需要你确认生成,要输入yes,还需要你提供我们当时创建CA时候的密码。如果你忘记了密码,那你就重头开始再来一次吧

⑤ 创建Diffie-Hellman,确保key穿越不安全网络的命令

[root@along easyrsa3]# ./easyrsa gen-dh

CentOS 搭建 OpenVVV_第7张图片

4、创建客户端证书

① 进入root目录新建client文件夹,文件夹可随意命名,然后拷贝前面解压得到的easy-ras文件夹到client文件夹,进入下列目录

[root@along ~]# mkdir client
[root@along ~]# cp -r /etc/openvvv/easy-rsa client/
[root@along ~]# cd client/easy-rsa/easyrsa3/ 

② 初始化

[root@along easyrsa3]# ./easyrsa init-pki //需输入yes 确定

③ 创建客户端key及生成证书(记住生成是自己客户端登录输入的密码)

[root@along easyrsa3]# ./easyrsa gen-req along //名字自己定义

CentOS 搭建 OpenVVV_第8张图片

④ 将的到的qingliu.req导入然后签约证书

a. 进入到/etc/openvvv/easy-rsa/easyrsa3/

[root@along easyrsa3]# cd /etc/openvvv/easy-rsa/easyrsa3/

b. 导入req

[root@along easyrsa3]# ./easyrsa import-req /root/client/easy-rsa/easyrsa3/pki/reqs/along.req along

img

c. 签约证书

[root@along easyrsa3]# ./easyrsa sign client along
//这里生成client所以必须为client,along要与之前导入名字一致

CentOS 搭建 OpenVVV_第9张图片

上面签约证书跟server类似,就不截图了,但是期间还是要输入CA的密码

5、把服务器端必要文件放到etc/openvvv/ 目录下

ca的证书、服务端的证书、秘钥

[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/**ca.crt** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/private/**server.key** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/issued/**server.crt** /etc/openvvv/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/**dh.pem** /etc/openvvv/

6、把客户端必要文件放到root/openvvv/ 目录下

客户端的证书、秘钥

[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/ca.crt /root/client/
[root@along ~]# cp /etc/openvvv/easy-rsa/easyrsa3/pki/issued/along.crt /root/client/
[root@along ~]# cp /root/client/easy-rsa/easyrsa3/pki/private/along.key /root/client

7、为服务端编写配置文件

(1)当你安装好了openvvv时候,他会提供一个server配置的文件例子,在/usr/share/doc/openvvv-2.3.2/sample/sample-config-files 下会有一个server.conf文件,我们将这个文件复制到/etc/openvvv

[root@along ~]# rpm -ql openvvv |grep server.conf

img

[root@along ~]# cp /usr/share/doc/openvvv-2.4.4/sample/sample-config-files/server.conf /etc/openvvv

(2)修改配置文件

[root@along ~]# vim /etc/openvvv/server.conf
[root@along ~]# grep '^[^#|;]' /etc/openvvv/server.conf 修改的地方如下:
local 0.0.0.0     #监听地址
port 1194     #监听端口
proto tcp     #监听协议
dev tun     #采用路由隧道模式
ca /etc/openvvv/ca.crt      #ca证书路径
cert /etc/openvvv/server.crt       #服务器证书
key /etc/openvvv/server.key  # This file should be kept secret 服务器秘钥
dh /etc/openvvv/dh.pem     #密钥交换协议文件
server 10.8.0.0 255.255.255.0     #给客户端分配地址池,注意:不能和VPN服务器内网网段有相同
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"      #给网关
push "dhcp-option DNS 8.8.8.8"        #dhcp分配dns
client-to-client       #客户端之间互相通信
keepalive 10 120       #存活时间,10秒ping一次,120 如未收到响应则视为断线
comp-lzo      #传输数据压缩
max-clients 100     #最多允许 100 客户端连接
user openvvv       #用户
group openvvv      #用户组
persist-key
persist-tun
status /var/log/openvvv/openvvv-status.log
log         /var/log/openvvv/openvvv.log
verb 3

每个项目都会由一大堆介绍,上述修改,openvvv提供的server.conf已经全部提供,我们只需要去掉前面的注释#,然后修改我们自己的有关配置

(3)配置后的设置

[root@along ~]# mkdir /var/log/openvvv
[root@along ~]# chown -R openvvv.openvvv /var/log/openvvv/
[root@along ~]# chown -R openvvv.openvvv /etc/openvvv/*

8、iptables 设置nat 规则和打开路由转发

[root@along ~]# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE
[root@along ~]# iptables -vnL -t nat
[root@along ~]# vim /etc/sysctl.conf //打开路由转发
net.ipv4.ip_forward = 1

[root@along ~]# sysctl -p

9、开启openvvv 服务

[root@along ~]# openvvv /etc/openvvv/server.conf 开启服务
[root@along ~]# ss -nutl |grep 1194

img

如果开启后没有打开1194 端口,说明开启服务失败,可能是配置文件有错,也有可能是权限不够,自己查询日志解决。

三、客户端连接openvvv

1、下载openvvv客户端安装

windows客户端

mac客户端

2、解压安装,配置client 端配置文件

在sample-config 文件下,有client.o 模板

修改,并复制到config 目录下,修改内容如下

client
dev tun
proto tcp     //改为tcp
remote 39.xxx.xxx.xxx 1194    //OpenVPN服务器的外网IP和端口,ip和域名都行
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt     //client1的证书
key client.key        //client1的密钥
comp-lzo
verb 3

3、把服务器端的证书文件复制到config 目录下

ca.crt

along.crt

along.key //这三个文件

CentOS 搭建 OpenVVV_第10张图片

4、启动客户端

(1)启动,注意启动需以管理员权限启动

CentOS 搭建 OpenVVV_第11张图片

(2)输入自己设置的密码

CentOS 搭建 OpenVVV_第12张图片

(3)连接成功

CentOS 搭建 OpenVVV_第13张图片

5、测试是否成功

(1)在client 查询ip,确实是openvvv 给定的ip

CentOS 搭建 OpenVVV_第14张图片

(2)网页查询ip,确实是北京市阿里云的ip

CentOS 搭建 OpenVVV_第15张图片

你可能感兴趣的:(Linux,centos,网络,linux)