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

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

SQLite3命令行工具最佳实践指南

《SQLite3命令行工具最佳实践指南》SQLite3是轻量级嵌入式数据库,无需服务器支持,具备ACID事务与跨平台特性,适用于小型项目和学习,sqlite3.exe作为命令行工具,支持SQL执行、数... 目录1. SQLite3简介和特点2. sqlite3.exe使用概述2.1 sqlite3.exe

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Java SWT库详解与安装指南(最新推荐)

《JavaSWT库详解与安装指南(最新推荐)》:本文主要介绍JavaSWT库详解与安装指南,在本章中,我们介绍了如何下载、安装SWTJAR包,并详述了在Eclipse以及命令行环境中配置Java... 目录1. Java SWT类库概述2. SWT与AWT和Swing的区别2.1 历史背景与设计理念2.1.

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

SpringBoot整合Apache Flink的详细指南

《SpringBoot整合ApacheFlink的详细指南》这篇文章主要为大家详细介绍了SpringBoot整合ApacheFlink的详细过程,涵盖环境准备,依赖配置,代码实现及运行步骤,感兴趣的... 目录1. 背景与目标2. 环境准备2.1 开发工具2.2 技术版本3. 创建 Spring Boot

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存