OpenVPN服务和pritunl管理工具的搭建部署

1.OpenVPN服务和pritunl管理工具的搭建部署

1.1.介绍

1.1.1. OpenVPN概述

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

OpenVPN 是一个基于 OpenSSL 库的应用层 VPN 实现。和传统 VPN 相比,它的优点是简单易用

OpenVPN 允许参与建立 VPN 的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。它大量使用了 OpenSSL 加密库中的 SSLv3 /TLSv1 协议函式库。OpenVPN 能在 Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X 与 Windows 上运行,并包含了许多安全性的功能。它并不是一个基于 Web 的 VPN 软件,也不与 IPSec 及其他 VPN 软件包兼容。

虚拟私有网络(VPN)隧道是通过 Internet 隧道技术将两个不同地理位置的网络安全的连接起来的技术。当两个网络是使用私有 IP 地址的私有局域网络时,它们之间是不能相互访问的,这时使用隧道技术就可以使得两个子网内的主机进行通讯。例如,VPN 隧道技术经常被用于大型机构中不同办公区域子网的连接。有时,使用 VPN 隧道仅仅是因为它很安全。服务提供商与公司会使用这样一种方式架设网络,他们将重要的服务器(如,数据库,VoIP,银行服务器)放置到一个子网内,仅仅让有权限的用户通过 VPN 隧道进行访问。如果需要搭建一个安全的 VPN 隧道,通常会选用 IPSec,因为 IPSec VPN 隧道被多重安全层所保护。

VPN (虚拟专用网)发展至今已经不在是一个单纯的经过加密的访问隧道了,它已经融合了访问控制传输管理加密路由选择可用性管理等多种功能,并在全球的信息安全体系中发挥着重要的作用。也在网络上,有关各种 VPN 协议优缺点的比较是仁者见仁,智者见智,很多技术人员由于出于使用目的考虑,包括访问控制、 安全和用户简单易用,灵活扩展等各方面,权衡利弊,难以取舍;尤其在 VOIP 语音环境中,网络安全显得尤为重要,因此现在越来越多的网络电话和语音网关支持 VPN 协议。

1.1.2. pritunl概述

当今市场上有几种 VPN 服务器。pritun VPN 是 Pulse Secure 和 Aviatrix 等可用商业产品的最佳开源替代品之一。除了简单易用的图形界面。它提供了更多令人惊叹的功能,例如:

  • 无需注册即可免费使用。

  • 安装和配置简单

  • 它支持多种协议,因为它为客户端提供了与 OpenVPN 或 Wireguard 连接的选项

  • 它有一个 REST API,可以轻松地将 Pritunl 与其他服务集成和配置

  • 通过对客户端和服务器之间的所有流量进行加密,提供更高的安全性。还有一个可选的 Google 身份验证器两步验证。

  • 通过 VPC 对等连接支持多云站点到站点链接。VPC 对等连接适用于 AWS、Google Cloud、Azure 和 Oracle Cloud。

  • Pritunl 基于 MongoDB 构建,MongoDB 是一种可靠且可扩展的数据库,可以快速部署

1.1.3. Pritunl VPN 架构

Pritunl VPN 旨在在云中提供高度分布式和可扩展的基础设施,无需昂贵的硬件。Pritunl 使用客户端-服务器架构,其中服务器具有所有必需的 VPN 配置,并且客户端配置为使用客户端配置文件连接到它。

Pritunl VPN 可以作为单个服务器或多个服务器运行以实现高可用性和冗余系统以实现自动故障转移。此部署中的所有服务器都是相等的,没有主服务器,并且也可以在其他实例发生故障时独立运行。

下图表示一个简单的 Pritunl 架构

1.2.部署pritunl

1.2.1. pritunl 部署环境

使用华为云主机当 OpenVPN 服务器

主机

IP

openvpn-server

192.168.88.207

web-server-node1

192.168.0.250

Windows

这里准备两台主机 一台作为pritunl,vpn的服务端 ,一台作为同内网环境的另一台机器,还有一台作为我们的客户端来测试连接访问

1.2.2.docker-compose启动pritunl

注意 上面映射的端口都是需要用到的 不能被占用

version: '3'

services:
  nginx:
    image: nginx
    ports:
      - "81:81"
    volumes:
      - ./conf:/etc/nginx/conf.d
      - ./html:/usr/share/www/html
  mongo:
    image: mongo
    container_name: mongo
    volumes:
      - mongo-data:/data/db

  pritunl:
    image: jippi/pritunl
    container_name: pritunl
    privileged: true
    ports:
      - "80:80"
      - "443:443"
      - "1194:1194/udp"
      - "1194:1194"
    volumes:
      - pritunl-data:/data
    depends_on:
      - mongo

volumes:
  mongo-data:
  pritunl-data:

来到指定目录下 启动docker-compose容器

docker-compose up -d docker ps -a #查看一下容器是否启动正常 没有启动成功看日志报错

 

1.2.3.测试访问

直接访问ip就好,会自动跳转到https,这里由于我们没有配置https证书,所以会报不安全,我们将下方高级展开

就来到了我们的登录页面

1.3.配置pritunl

1.3.1.查看初始密码

这里这个密码可以去容器内查看

docker exec -it f7664a3e67 pritunl default-password # 查看pritunl默认 账号就是

登录进来之后默认页面是这样,上面两个框分别是用户和登录密码.下面的框是他自动检测的公网ip,如果没有特殊情况这个ip尽量不要动

设置好密码确定没有问题之后,就点击save,然后就显示出现如下桌面

1.3.2.添加组织

点击用户 这里我们我需要先添加一个用户,但是添加之前需要先添加一个组织 点击add Organization

这里给组织起一个名字就行

添加完成之后就能看到我们的组织已经出现

1.3.3.添加用户

组织创建完成之后点击add User ,添加一个用户

用户名 组织 邮箱 最后一个是到时候连接使用的密码

添加完成之后就能在组织中看见我们刚才添加的用户

1.3.4.添加sever

用户添加完成之后这里我们添加一个servers,点击add servers

这里给你的server起一个用户名即可 注意 这个放通的端口得是你映射出去到公网的端口,最后一个Virtual Network的ip可以随便分配 这个是连接分配的内网ip

添加完成之后点击add,可以看见server已经添加完成

这里需要给server添加一个附加组织

附加完成之后,点击启动server

1.3.5.启动组织

然后观察日志输出 出现success启动成功

1.4.OpenVpn安装使用

1.4.1.windows版本

下载链接:https://openvpn.net/client/

或者使用安装包下载稳定版

安装完成之后桌面是这样一个图标

这个时候我们在回到刚才的页面 ,点击用户窗口下载私钥

点击完之后下载里会出现一个tar包 这里还不能直接使用,需要解压

解压完之后就会出现一个ovpn文件 这里保存好或者放到桌面

连接之后会发现接受字节和发送字节都有数据,说明链接成功

可以看到已经连接,分配了一个内网ip192.168.250.2

1.4.2.linux版本

. 安装 OpenVPN

首先,确保你的系统已安装 OpenVPN。根据你的 Linux 发行版,使用相应的包管理器来安装 OpenVPN:

  • Ubuntu/Debian:

sudo apt update
sudo apt install openvpn

配置 OpenVPN 客户端

假设你已经获得了 .ovpn 文件(例如 client.ovpn),通常你只需要将其放到一个适当的目录中,然后使用 OpenVPN 客户端启动连接。

将配置文件移动到 /etc/openvpn 目录:

sudo cp client.ovpn /etc/openvpn/

  1. 启动 OpenVPN 连接

使用 openvpn 命令启动连接:

sudo openvpn --config /etc/openvpn/client.ovpn

这条命令会启动 OpenVPN 客户端并使用指定的配置文件连接到 VPN 服务器。

然后这里会让我们输入账号和密码 输入完成之后回车即可

1.4.3.开发板版本

开发板的操作流程与linux操作相同,不会因为架构造成影响

1.5.测试使用

我们用自己的手机打开热点,用另外一台电脑连接自己的手机热点,模拟外网环境,连接上公司的内网

打开浏览器访问公司内部gitlab仓库http://1......../users/sign_in,访问成功

这个时候我们点击断开连接

再次测试访问一下http://192.168......:8077/users/sign_in,访问失败

2.容器搭建OpenVPN服务

2.1.环境配置

2.1.1.拉取OpenVPN镜像

docker pull chenji1506/openvpn:2.4.8

创建挂载目录

mkdir -pv /data/openvpn/conf

查看本机公网IP地址

方式有很多,可以直接在路由器管理页面查看也可以用下面的命令

curl icanhazip.com 10.45.21.167

2.1.2.生成配置文件

注意更改为你的公网IP地址

docker run -v /data/openvpn:/etc/openvpn --rm chenji1506/openvpn:2.4.8 ovpn_genconfig -u udp://1.1.1.1

生产密钥文件,密钥密码一定要记住

docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 ovpn_initpki 根据回显输入按照下面顺序 1. 输入私钥密码 2. 重新输入一次密码 3. 输入一个CA名称 4. 输入刚才设置的私钥密码

生成客户端证书文件

docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 easyrsa build-client-full 用户名 nopass Enter pass phrase for /etc/openvpn/pki/private/ca.key: passwd # 输入密钥密码

2.1.3导出客户端配置

docker run -v /data/openvpn:/etc/openvpn --rm chenji1506/openvpn:2.4.8 ovpn_getclient chenji > /data/openvpn/conf/用户名.ovpn

启动OpenVPN容器

docker run --name openvpn -v /data/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN chenji1506/openvpn:2.4.8

2.2.OpenVPN用户管理

#!/bin/bash
#创建用户脚本
read -p "please your username: " NAME
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 easyrsa build-client-full $NAME nopass
docker run -v /data/openvpn:/etc/openvpn --rm chenji1506/openvpn:2.4.8 ovpn_getclient 
$NAME > /data/openvpn/conf/"$
NAME".ovpn
docker restart openvpn
#!/bin/bash
#删除用户脚本
read -p "Delete username: " DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 easyrsa revoke $DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 easyrsa gen-crl
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 rm -f /etc/openvpn/pki/reqs/"DNAME".req
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 rm -f /etc/openvpn/pki/private/"DNAME".key
docker run -v /data/openvpn:/etc/openvpn --rm -it chenji1506/openvpn:2.4.8 rm -f /etc/openvpn/pki/issued/"DNAME".crt
docker restart openvpn
2.2.1添加用户
 

./add_user.sh # 输入要添加的用户名,回车后输入刚才创建的私钥密码 创建的用户证书在/data/openvpn/conf/目录下

将这个文件导入到桌面

2.2.2.测试连接

同样 这里和上面的操作一样,将文件拖动到桌面

打开openVpn软件

右键选择导入,导入配置文件

选择我们刚才拉出来的文件,注意看一下后面文件的大小 通常5kb以上为正确的

然后右键点击找到刚才导入的文件 点击连接 用户名和密码就是上面你创建用户时设置的密码

还是 看见接受字节和发送字节都有数据,同时分配IP地址 则代表连接成功

3.总结

两种vpn都是openvpn的连接方式 ,下面的也是比较常用的方法,但是由于不是可视化界面,完全命令行操作,对于后期维护包括添加都不是很便捷,所以选择第一种连接方式,相对操作更简单,界面更清晰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值