赞
踩
openvpn在公司等场景下应用比较广泛,但是用openvpn作为server端,在很多时候操作和使用起来还是比较麻烦;
那么这里就给讲一讲通过 pritunl+openvpn 的安装、配置、路由等细节,相信你会发现一些新的用法和一些以前遇到的问题的原因所在了。
那么这也是我为什么用 pritunl 作为server端的原因,pritunl安装简单,配置方便(可视化太舒服了),例如配置路由、用户管理及证书下载等,操作起来简直是太轻松了~
所以本文是将pritunl作为sever端,openvpn作为client端,下面就开始吧~
这里需要通过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 # 查看状态
获取密码
# 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"
这里主要说下域名问题,正常情况下,Public Address 应该填公网IP,但是如果改IP经常变或者vpn服务器要换,则建议这里改为域名,因为后期更换只需要把数据拷贝过去,就可以直接启用了,不会丢失任何数据的。(备份内容我最后再说)
效果如下,打开用户的 .ovpn 文件,就会发现里面都是以域名形式存在的了。
注意,如果是拷贝的数据源起的服务,建议登录到该页面把 Enable WireGuard关掉,因为这个可能会导致pritunl起不来。
机房主机网段路由添加
之所以要删掉默认0.0.0.0/0,是为了防止该vpn劫持所有网络。如果你需要劫持所有流量,那就不要删除哦~
例如k8s 的cidr等网络,都可以进行劫持,方便能直连到容器内
主机: 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
这里将openvpn作为client,进行网络打通使用
Ubuntu:
# apt install openvpn
Centos:
# cd /etc/yum.repos.d/
# wget http://mirrors.aliyun.com/repo/epel-7.repo
# yum install openvpn
从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
# systemctl daemon-reload
# systemctl enable openvpn-client
# systemctl start openvpn-client
# systemctl status openvpn-client
当公司的某个集群只有一台可以上外网的时候,也可以使用这种方案。
将能上网的机器安装pritunl,其他不能上网的机器上安装openvpn-client,然后默认路由0.0.0.0/0 不要删掉,当访问公网的时候走默认路由,就可以从vpn通道到达可上外网的机器,从而达到访问公网的效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。