OpenVPN 实战指南

2024-01-03 23:44
文章标签 实战 指南 openvpn

本文主要是介绍OpenVPN 实战指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

OpenVPN是一种灵活且广泛使用的开源虚拟私人网络(VPN)解决方案。本文将指导你在Linux服务器上使用Docker和OpenVPN部署VPN服务。

准备工作

在开始之前,请确保你已经在服务器上安装了Docker,并已经获取了一个公网IP地址或已设置好域名,例如通过Route 53。

# 安装Docker
yum remove docker docker-common docker-selinux docker-engine -y
yum install -y yum-utils device-mapper-persistent-data lvm2 -y
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce -y
systemctl start docker
systemctl enable docker

部署 OpenVPN

  1. 创建用于存储 OpenVPN 配置和数据的目录。
OVPN_DATA="/data/openvpn"
mkdir -p ${OVPN_DATA}
  1. 生成 OpenVPN 配置文件。
IP="vpn.my.com"  # 你的公网IP或域名
docker run -v ${OVPN_DATA}:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://${IP} -s 11.8.8.0/24 -r 11.8.8.1/24 -n 223.5.5.5 -n 223.6.6.6

参数解释:

  • ​-u​​ 指定服务器公网地址。
  • ​-s​​ 分配给客户端的子网IP,默认是192.168.255.0/24。
  • ​-r​​ 路由地址,默认是192.168.254.0/24。
  • ​-n​​ DNS地址,可以多个,默认是8.8.8.8和8.8.4.4。
  1. 生成 OpenVPN 密钥文件。
docker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

在过程中输入密码,然后将生成的证书和密钥复制到指定目录。

  1. 运行 Docker 容器启动 OpenVPN 服务。
docker run --name openvpn --restart=always -v ${OVPN_DATA}:/etc/openvpn -d -p 1194:1194/udp --privileged kylemanna/openvpn

确保将端口映射设置为适合你的需求。

  1. 安全组设置:确保服务器的防火墙已允许流量通过 OpenVPN 的端口(默认是1194/udp)。

管理用户

你可以使用脚本来简化用户的创建、撤销和管理。

创建用户

# userlist 文件包含要创建的用户名列表
password='weiyuy2F!'
for NAME in `cat userlist`; dodocker exec -it openvpn easyrsa build-client-full $NAME nopassdocker exec -it openvpn ovpn_getclient $NAME > ${OVPN_DATA}/client/$NAME.ovpnsed -i "s|1194|1688|g" ${OVPN_DATA}/client/$NAME.ovpncp ${OVPN_DATA}/client/$NAME.ovpn /tmp/aws_test-$NAME.ovpn
done

撤销用户

# userlist 文件包含要撤销的用户名列表
password='weiyuy2F!'
for DNAME in `cat userlist`; dodocker exec -ti openvpn easyrsa revoke $DNAMEdocker exec -ti openvpn easyrsa gen-crldocker exec -ti openvpn rm -f /etc/openvpn/pki/reqs/$DNAME.reqdocker exec -ti openvpn rm -f /etc/openvpn/pki/private/$DNAME.keydocker exec -ti openvpn rm -f /etc/openvpn/pki/issued/$DNAME.crtdocker exec -ti openvpn rm -f /etc/openvpn/conf/$DNAME.ovpndocker exec -ti openvpn rm -rf /etc/openvpn/clients/$DNAME
done

撤销证书(替代方法)

# userlist 文件包含要撤销的用户名列表
for NAME in `cat userlist`; dodocker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa revoke $NAMEdocker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn easyrsa gen-crldocker run -v ${OVPN_DATA}:/etc/openvpn --rm -it kylemanna/openvpn cp /etc/openvpn/pki/crl.pem /etc/openvpn/crl.pemdocker restart openvpn
done

查看连接用户列表

docker exec openvpn ovpn_status

以上就是使用 Docker 和 OpenVPN 部署 VPN 服务的实战指南。你可以根据实际需求进行优化,修改配置文件和脚本以满足特定的网络要求。

这篇关于OpenVPN 实战指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/567458

相关文章

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

C语言小项目实战之通讯录功能

《C语言小项目实战之通讯录功能》:本文主要介绍如何设计和实现一个简单的通讯录管理系统,包括联系人信息的存储、增加、删除、查找、修改和排序等功能,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录功能介绍:添加联系人模块显示联系人模块删除联系人模块查找联系人模块修改联系人模块排序联系人模块源代码如下

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一