pritunl+openvpn安装及使用

1 前言

openvpn在公司等场景下应用比较广泛,但是用openvpn作为server端,在很多时候操作和使用起来还是比较麻烦;

那么这里就给讲一讲通过 pritunl+openvpn 的安装、配置、路由等细节,相信你会发现一些新的用法和一些以前遇到的问题的原因所在了。

那么这也是我为什么用 pritunl 作为server端的原因,pritunl安装简单,配置方便(可视化太舒服了),例如配置路由、用户管理及证书下载等,操作起来简直是太轻松了~

所以本文是将pritunl作为sever端,openvpn作为client端,下面就开始吧~

2 pritunl

2.1 安装

这里需要通过docker-compose启动,如果没有docker-compose命令,可以执行以下命令下载:
# curl -L "https://github.com/docker/compose/releases/download/1.25.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# mkdir /usr/local/pritunl/{mongo,pritunl} -p
# cd /usr/local/pritunl/
# chown -R daemon.daemon mongo/
# chown -R daemon.daemon pritunl/
# vim docker-compose.yml
network:
  image: busybox
  ports:
    - "8024:8024/udp" # vpn的udp端口
    - "8024:8024/tcp" # vpn的tcp端口
    - "7080:80/tcp"   # pritunl http端口,这里随便也可以直接用80,我是为了防止和k8s集群的nginx-ingress的端口冲突,所以就修改了
    - "7443:443/tcp"  # pritunl https端口
  restart: always
  tty: true
pritunl:
  image: jippi/pritunl:latest
  privileged: true
  restart: always
  volumes:
    - /usr/local/pritunl/pritunl:/var/lib/pritunl
    - /usr/local/pritunl/mongo:/var/lib/mongodb
  net: container:network

# docker-compose up -d  # 启动
# docker-compose ps     # 查看状态

2.2 登录

获取密码

# docker exec -it pritunl_pritunl_1 sh
# pritunl default-password
[undefined][2023-04-23 03:32:10,102][INFO] Getting default administrator password
Administrator default password:
  username: "pritunl"
  password: "UVdjiafdq666"
  • 浏览器访问:
    • 建议用https的端口访问
    • 示例:https://172.18.1.1:7443/login

2.3 配置

2.3.1 Settings

这里主要说下域名问题,正常情况下,Public Address 应该填公网IP,但是如果改IP经常变或者vpn服务器要换,则建议这里改为域名,因为后期更换只需要把数据拷贝过去,就可以直接启用了,不会丢失任何数据的。(备份内容我最后再说)

在这里插入图片描述
效果如下,打开用户的 .ovpn 文件,就会发现里面都是以域名形式存在的了。

在这里插入图片描述

2.3.2 Server

  • DNS Server:配置为 223.5.5.5,阿里云的dns更稳定
  • Virtual Network:10.8.0.0/23,一方面网段区分,23子网是为了能接入更多IP
  • Enable WireGuard:WireGuard是一种现代的、高性能的VPN协议,旨在简化和改进传统的VPN技术。它被设计为更加轻量级和易于配置,具有较小的代码库和更简单的协议。WireGuard使用最新的加密算法和协议,提供了更高的安全性和性能。它支持多种操作系统,并且可以在内核级别运行,从而提供更好的性能和效率。
    • WG Port 和Virtual WG Network的配置
  • Allow Multiple Devices:允许同一个账号多个设备接入

在这里插入图片描述
注意,如果是拷贝的数据源起的服务,建议登录到该页面把 Enable WireGuard关掉,因为这个可能会导致pritunl起不来。

2.3.3 路由配置

机房主机网段路由添加
在这里插入图片描述

  • 默认路由删除

之所以要删掉默认0.0.0.0/0,是为了防止该vpn劫持所有网络。如果你需要劫持所有流量,那就不要删除哦~
在这里插入图片描述

  • 容器网络路由添加

例如k8s 的cidr等网络,都可以进行劫持,方便能直连到容器内
在这里插入图片描述

3.2.4 添加组织

在这里插入图片描述

3.2.5 添加用户

在这里插入图片描述

3.2.6 关联组织

在这里插入图片描述

3.2.7 启动服务

在这里插入图片描述

4 备份

  • 备份信息
主机: 172.18.5.x
备份服务: pritunl的pritunl和mongo服务
备份方式: rsync
数据路径: /usr/local/pritunl
备份路径: /data/backup/pritunl
  • 备份脚本
# cd /usr/local/pritunl

# vim backup-pritunl.sh
#!/bin/sh
src_dir="/usr/local/pritunl"
dst_dir="/data/backup/pritunl"
log_dir="/data/backup/pritunl/bak.log"
date_dir="pritunl-`date +%Y%m%d-%H%M%S`"
bak_dir=${dst_dir}/${date_dir}
echo " " >> $log_dir
echo " " >> $log_dir
echo "--------------------------" >> ${log_dir}
echo $(date +"%Y-%m-%d %H:%M:%S") >> ${log_dir}
echo "--------------------------" >> ${log_dir}
echo "INFO: [`date +%F\ %T`] start to backup" >> ${log_dir}
echo "INFO: backup file [${bak_dir}.tgz]" >> ${log_dir}
rsync -azvP ${src_dir} ${bak_dir}
cd ${dst_dir}
tar zcf ${date_dir}.tgz ${date_dir}
md5sum ${date_dir}.tgz > ${date_dir}.tgz.md5
mv ${date_dir} /tmp
echo "INFO: [`date +%F\ %T`] backup complete" >> ${log_dir}
  • 定时任务
# crontab -e
0 0 * * * /bin/sh /usr/local/pritunl/backup-pritunl.sh

5 openvpn

这里将openvpn作为client,进行网络打通使用

5.1 安装openvpn-client

Ubuntu:
# apt install openvpn

Centos:
# cd /etc/yum.repos.d/
# wget http://mirrors.aliyun.com/repo/epel-7.repo
# yum install openvpn

5.2 配置

从pritunl上配置一个用于连接的vpn文件(如: connect.ovpn)
# mv connect.ovpn /etc/openvpn/client/

# vim /lib/systemd/system/openvpn-client.service
[Unit]
Description=OpenVPN Client Service
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client/connect.ovpn --log-append /var/log/openvpn-client.log
RestartSec=3
Restart=always

[Install]
WantedBy=multi-user.target

5.3 启动

# systemctl daemon-reload
# systemctl enable openvpn-client
# systemctl start openvpn-client
# systemctl status openvpn-client

6 其他场景

当公司的某个集群只有一台可以上外网的时候,也可以使用这种方案。
将能上网的机器安装pritunl,其他不能上网的机器上安装openvpn-client,然后默认路由0.0.0.0/0 不要删掉,当访问公网的时候走默认路由,就可以从vpn通道到达可上外网的机器,从而达到访问公网的效果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值