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

相关文章

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

Java中使用注解校验手机号格式的详细指南

《Java中使用注解校验手机号格式的详细指南》在现代的Web应用开发中,数据校验是一个非常重要的环节,本文将详细介绍如何在Java中使用注解对手机号格式进行校验,感兴趣的小伙伴可以了解下... 目录1. 引言2. 数据校验的重要性3. Java中的数据校验框架4. 使用注解校验手机号格式4.1 @NotBl

基于Canvas的Html5多时区动态时钟实战代码

《基于Canvas的Html5多时区动态时钟实战代码》:本文主要介绍了如何使用Canvas在HTML5上实现一个多时区动态时钟的web展示,通过Canvas的API,可以绘制出6个不同城市的时钟,并且这些时钟可以动态转动,每个时钟上都会标注出对应的24小时制时间,详细内容请阅读本文,希望能对你有所帮助...

使用Java发送邮件到QQ邮箱的完整指南

《使用Java发送邮件到QQ邮箱的完整指南》在现代软件开发中,邮件发送功能是一个常见的需求,无论是用户注册验证、密码重置,还是系统通知,邮件都是一种重要的通信方式,本文将详细介绍如何使用Java编写程... 目录引言1. 准备工作1.1 获取QQ邮箱的SMTP授权码1.2 添加JavaMail依赖2. 实现

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python与DeepSeek的深度融合实战

《Python与DeepSeek的深度融合实战》Python作为最受欢迎的编程语言之一,以其简洁易读的语法、丰富的库和广泛的应用场景,成为了无数开发者的首选,而DeepSeek,作为人工智能领域的新星... 目录一、python与DeepSeek的结合优势二、模型训练1. 数据准备2. 模型架构与参数设置3

Java实战之利用POI生成Excel图表

《Java实战之利用POI生成Excel图表》ApachePOI是Java生态中处理Office文档的核心工具,这篇文章主要为大家详细介绍了如何在Excel中创建折线图,柱状图,饼图等常见图表,需要的... 目录一、环境配置与依赖管理二、数据源准备与工作表构建三、图表生成核心步骤1. 折线图(Line Ch

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配