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

相关文章

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Apache Ignite 与 Spring Boot 集成详细指南

《ApacheIgnite与SpringBoot集成详细指南》ApacheIgnite官方指南详解如何通过SpringBootStarter扩展实现自动配置,支持厚/轻客户端模式,简化Ign... 目录 一、背景:为什么需要这个集成? 二、两种集成方式(对应两种客户端模型) 三、方式一:自动配置 Thick

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali