centos7部署OV-PN

6 篇文章 0 订阅

一期

部署

V直译就是虚拟专用通道,是提供给企业之间或者个人与公司之间安全数据传输的隧道,OV无疑是Linux下开源V的先锋,提供了良好的性能和友好的用户GUI。

下面通过在如下拓扑图环境下搭建OV Server,介绍如何在CentOS7下搭建OV Server

由于没有公网IP进行模拟,在路由器LAN一侧(192.168.60.X)的CentOS7服务器上搭建OV Server,在路由器WAN一侧(192.168.31.X)的Windows机器上使用V Client拨入V进行测试

下面先介绍OV Server的搭建

1)安装

yum install -y epel-release
yum -y install OV easy-rsa net-tools bridge-utils

2)创建CA和证书

cd /usr/share/easy-rsa/3


 ./easyrsa init-pki


./easyrsa build-ca

./easyrsa build-server-full server1 nopass


./easyrsa build-client-full client1 nopass

./easyrsa gen-dh 生成DH需要等待一段时间

[root@CentOS7_DIY 3]# ./easyrsa gen-dh


Generating DH parameters, 2048 bit long safe prime, generator 2

This is going to take a long time

..................................................................................+...

....... 

..................................................................................+........++*++*

DH parameters of size 2048 created at /usr/share/easy-rsa/3/pki/dh.pem

 3)创建TLS-Auth Key 

OV --genkey --secret ./pki/ta.key 


cp -pR /usr/share/easy-rsa/3/pki/{issued,private,ca.crt,dh.pem,ta.key} /etc/oV**/server/ 

4)内核参数中开启ipv4 forwarding

vim /etc/sysctl.conf

追加net.ipv4.ip_forward = 1

然后执行 sysctl -p

5)配置OV Server

cp /usr/share/doc/OV-2.4.8/sample/sample-config-files/server.conf /etc/OV/server/


 vi /etc/OV/server/server.conf

需要修改的地方如下

local 192.168.0.5

port 1194

;proto tcp
proto udp

;dev tap
dev tun

;dev-node MyTap

ca ca.crt
cert issued/server1.crt
key private/server1.key  # This file should be kept secret

dh dh.pem

topology subnet

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.200

;server-bridge

push "route 192.168.0.0 255.255.255.0"
push "route 192.168.100.0 255.255.255.0"
push "route 192.168.6.0 255.255.254.0"
push "route 192.168.7.0 255.255.254.0"
push "route 192.168.9.0 255.255.255.0"

;client-config-dir ccd
;route 192.168.40.128 255.255.255.248

;client-config-dir ccd
;route 10.9.0.0 255.255.255.252

;learn-address ./script

;push "redirect-gateway def1 bypass-dhcp"

;push "dhcp-option DNS 8.8.8.8"
;push "dhcp-option DNS 202.106.0.20"

client-to-client

duplicate-cn

keepalive 10 120

tls-auth ta.key 0

cipher AES-256-CBC

;compress lz4-v2
;push "compress lz4-v2"

comp-lzo

max-clients 100

user nobody
group nobody

persist-key
persist-tun

status openvpn-status.log

log         /var/log/ov.log
log-append  /var/log/ov.log

verb 3

;mute 20

explicit-exit-notify 1

6)启动OV-server服务并设置开机自启动

systemctl start oV-server@server 


systemctl enable oV-server@server

7)路由器上需要将V Server 192.168.60.13服务端口udp 1194映射到外网192.168.31.22的1194端口

你懂得

8)路由设置(非常重要)来源:Tutorials | DigitalOcean

到目前为止,您已经在服务器上安装了OV,对其进行了配置,并生成了客户端访问V所需的密钥和证书。但是,您尚未向OV提供任何有关从客户端向何处发送传入Web流量的说明。您可以通过建立一些防火墙规则和路由配置来规定服务器应如何处理客户端流量。

假设您已按照本教程开始时的先决条件进行操作,则应该已经在服务器上安装了防火墙并在其中运行了防火墙。要允许OV通过防火墙,您需要知道什么是活动的防火墙区域。使用以下命令找到它:

firewall-cmd --get-active-zones

Output
trusted
  Interfaces: tun0

接下来,将ov服务添加到活动区域中firewalld允许的服务列表中,然后通过再次运行命令但--permanent添加选项来使该设置成为永久设置:

firewall-cmd --zone=trusted --add-service ov
firewall-cmd --zone=trusted --add-service ov --permanent

您可以使用以下命令检查是否已正确添加服务:

firewall-cmd --list-services --zone=trusted

Output
ov

接下来,将伪装添加到当前的运行时实例,然后再次添加它,并带有--permanent将伪装添加到所有未来实例的选项:

firewall-cmd --add-masquerade
firewall-cmd --permanent --add-masquerade

您可以使用以下命令检查是否正确添加了化装舞会:

firewall-cmd --query-masquerade

Output
yes

接下来,将路由转发到您的OV子网。为此,您可以先创建一个变量(SHARK在我们的示例中),该变量将代表服务器使用的主要网络接口,然后使用该变量永久添加路由规则:

SHARK=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $SHARK -j MASQUERADE

确保通过重新加载firewalld对防火墙规则进行以下更改:

firewall-cmd --reload

9)V** Client端下载安装V**

oV**官网可以下载

并将如下四个文件从V Server上sz下载下来,拷贝到V Client的安装目录下config文件夹

 /etc/oV**/server/ca.crt /etc/oV**/server/ta.key /etc/oV**/server/issued/client1.crt


/etc/oV**/server/private/client1.key 

并从C:\Program Files\OV**\sample-config拷贝client.oV**文件到config目录下进行编辑

添加及修改如下字段

client
remote 124.204.78.18 1194

;dev tap
dev tun

;dev-node MyTap

;proto tcp
proto udp

;remote my-server-1 1194
;remote my-server-2 1194

;remote-random

resolv-retry infinite
;redirect-gateway def1

nobind

;user nobody
;group nobody

persist-key
persist-tun

ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1

;http-proxy-retry # retry on connection failures
;http-proxy [proxy server] [proxy port #]

;mute-replay-warnings

remote-cert-tls server

cipher AES-256-CBC

comp-lzo

verb 3

;mute 20

修改完成后重命名为client1.oV**

10)打开OV GUI 连接V**

11) 连上V后,获取到V**地址为10.8.0.X段地址,ping 内网OVServer的内网地址 192.168.60.113可以ping通

ov 2.4 设置用户密码认证,实现一账号多用户登陆

1.创建用户认证脚本(checkpsw.sh)

[root@localhost ~]# cat /etc/openv**/checkpsw.sh 
#!/bin/sh
###########################################################

PASSFILE="/etc/openv**/psw-file"
LOG_FILE="/etc/openv**/openv**-password.log"
TIME_STAMP=`date "+%Y-%m-%d %T"`

###########################################################

if [ ! -r "${PASSFILE}" ]; then
  echo "${TIME_STAMP}: Could not open password file \"${PASSFILE}\" for reading." >> ${LOG_FILE}
  exit 1
fi

CORRECT_PASSWORD=`awk '!/^;/&&!/^#/&&$1=="'${username}'"{print $2;exit}' ${PASSFILE}`

if [ "${CORRECT_PASSWORD}" = "" ]; then 
  echo "${TIME_STAMP}: User does not exist: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
  exit 1
fi

if [ "${password}" = "${CORRECT_PASSWORD}" ]; then 
  echo "${TIME_STAMP}: Successful authentication: username=\"${username}\"." >> ${LOG_FILE}
  exit 0
fi

echo "${TIME_STAMP}: Incorrect password: username=\"${username}\", password=\"${password}\"." >> ${LOG_FILE}
exit 1

给予脚本执行权限:

chmod 755 /etc/openv**/checkpsw.sh

2.配置用户密码文件

[root@localhost ~]# cat /etc/openv**/psw-file
user1 passwd1
user2 passwd2

3.修改服务端配置文件
在server.conf末尾添加如下几行信息:

script-security 3
auth-user-pass-verify /etc/openv**/checkpsw.sh via-env    #指定用户认证脚本
username-as-common-name
verify-client-cert none

4.修改客户端配置文件(不注释就需要输入两次密码)

注释掉cert和key(客户端不需要crt和key文件,但是需要服务器的CA证书)
;cert eva.crt
;key eva.key
添加如下内容:
auth-user-pass

cat /etc/openv**/client.ov**
client
dev tun
proto tcp
remote 123.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
tls-auth ta.key 1
remote-cert-tls server
ca ca.crt                   #该文件一定要与服务器端ca.crt是同一个文件
;cert client.crt            #定义客户端的证书文件,此处注释即可
;key client.key             #定义客户端的密钥文件,此处不需要开启   
comp-lzo                    #启用允许数据压缩,和Server端保持一致
verb 3
cipher AES-256-CBC
auth-user-pass              #使用用户名密码登录openv**服务器

配置客户端固定IP(只需要修改server端配置文件即可)

用户密码认证

mkdir /etc/openv**/ccd #新建目录
1.服务端添加下面一行配置

cat server.conf
...
...
client-config-dir /etc/openv**/ccd   #添加此行

2.配置具体用户的IP

cat user1       #user1对应pws-file文件里面设置的用户名
ifconfig-push 172.16.0.56 172.16.0.57

3.重启服务

service openv** restart   #服务端重启服务

#linux客户端,kill掉进程重新执行下:
ps -ef| grep openv**
root     10674 10658  0 11:48 pts/0    00:00:00 grep open**
root     32466     1  0 May25 ?        00:01:33 openv** --daemon --cd /etc/openv**/ --config client.ov** --log-append /var/log/openv**.log
kill -9 32466
openv** --daemon --cd /etc/openvpn/ --config client.ovpn --log-append /var/log/ov**.log

#windows客户端:
断开连接再重新连接

证书认证

如果是使用证书认证的方式,那么只需要将ccd目录下的用户名命名的文件改成客户端证书名即可生效。

例如:

如上面所设置/etc/ov/ccd/user1对应用户user1;则/etc/ov/ccd/client即对应客户端证书名client的配置。

二期

前言

前面章节的介绍 轻松搭建 VPN 服务器 里,我们已经安装好了 OVPN 服务器,创建用户的操作以及维护相关的配置文件都需要在后台命令行下操作,使用起来还是有些不方便。

今天来介绍一个开源的 OVPN 管理软件 - OpenVPN-Admin-Plus 。

环境

先来看看服务器端的环境配置,安装好的服务器配置目录为 /etc/openvpn/server/ ,其相关的配置文件目录结构如下:

 
|-- etc/
|   |-- openvpn/
|       |-- client/
|       |-- server/
|           |-- ca.crt
|           |-- ca.key
|           |-- client-common.txt
|           |-- crl.pem
|           |-- dh.pem
|           |-- easy-rsa/
|           |-- ipp.txt
|           |-- server.conf
|           |-- server.crt
|           |-- server.key
|           |-- tc.key

OpenVPN-Admin-Plus 管理的 OVPN 目录为 /etc/openvpn/ ,懂编程的同学可以自己去源码中进行调整配置目录并重新编译打包。文章最后会给出一个修改好的版本,大家可以直接下载使用。

为了避免文件被修改和覆盖,我们先把服务的配置文件给打包进行备份:

 
cd /etc/openvpn
tar czvf openvpn-server.tgz server

部署

启动管理服务

我们把下载好的程序压缩包进行解压

 
tar xvf openvpn-admin-plus.tar.gz

然后进入到解压目录

 
cd openvpn-admin-plus

看到的目录结构如下,其中 openvpn-admin-plus 文件就是启动程序文件

我们先来启动服务

 
./openvpn-admin-plus

从启动日志中,我们看到绑定的 web 服务端口是 38080 ,我们打开浏览器直接访问

http://192.168.0.88:38080/

地址栏中的IP地址为openvpn-admin-plus所在服务器的IP

自动跳转到登录页面

默认的账号是 admin ,密码为 b3secure 。点击登录按钮后可能需要等待几秒钟才会进入首页

可以从日志上看到是因为在寻找 OVPN 的管理地址。

进入首页之后,会看到一些异常的提示信息,我们只需要进行一些设置就可以正常显示了

OVPN开启管理功能

为了能在 OpenVPN-Admin-Plus 上管理 OVPN ,我们需要开启管理功能,执行以下命令

 
echo "management 0.0.0.0 2080" >> /etc/openvpn/server/server.conf
systemctl restart openvpn-server@server.service

以上命令是在OVPN中开启管理端口2080,然后重启服务使配置生效

为了能看到OVPN服务运行状态,可以开启日志:

 
echo "status /etc/openvpn/server/openvpn-status.log" >> /etc/openvpn/server/server.conf
echo "log /etc/openvpn/server/openvpn.log" >> /etc/openvpn/server/server.conf
systemctl restart openvpn-server@server.service

配置管理服务

再回到管理页面上,我们点击顶部的【Configuration】菜单

在设置页面中,我们需要调整三个配置信息:

1. OVPN的管理地址和端口,即前边我们开启的管理功能

2. OVPN客户端程序访问的IP地址

3. OVPN的配置目录

保存成功后提示设置已经更新

之后我们进入【Status】页面,可以看到已经成功连接上 OVPN 并显示了连接信息

调整配置信息

1. 客户端认证信息

管理软件读取证书的路径与 OVPN 不一致,我们需要创建一个文件的软链接,使得管理软件能读取里边的信息

 
ln -s /etc/openvpn/server/tc.key /etc/openvpn/server/easy-rsa/pki/ta.key
2. 认证证书配置

管理软件可以维护用户和证书,所以需要指定一些证书相关的配置信息,这些信息保存在管理软件目录下的文件 conf/vars 里

里边有定义生成证书的信息,根据个人需要进行修改

 
vi conf/vars

然后把这个文件复制到 OVPN 目录下

cp conf/vars /etc/openvpn/server/easy-rsa/

之后停掉管理软件的服务(ctrl + c),再重新启动

 
./openvpn-admin-plus
使用

我们重新访问管理软件,来看一下如何生成用户并下载客户端认证文件。

 用户管理

点击菜单【Certificates】进入证书管理页面。在这里,我们可以管理用户,进行权限回收和删除用户。同时也可以创建用户。

可以点击账号名称下载客户端的配置文件

查看日志

点击菜单【Logs】查看日志

管理账号

修改管理账号信息

写在最后

有了 WEB 管理 OVPN 也就轻松多了,觉得不错的点个赞。

官网源码地址为

https://github.com/bnhf/openvpn-admin-plus.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值