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

相关文章

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

在Spring Boot中浅尝内存泄漏的实战记录

《在SpringBoot中浅尝内存泄漏的实战记录》本文给大家分享在SpringBoot中浅尝内存泄漏的实战记录,结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录使用静态集合持有对象引用,阻止GC回收关键点:可执行代码:验证:1,运行程序(启动时添加JVM参数限制堆大小):2,访问 htt

PyInstaller打包selenium-wire过程中常见问题和解决指南

《PyInstaller打包selenium-wire过程中常见问题和解决指南》常用的打包工具PyInstaller能将Python项目打包成单个可执行文件,但也会因为兼容性问题和路径管理而出现各种运... 目录前言1. 背景2. 可能遇到的问题概述3. PyInstaller 打包步骤及参数配置4. 依赖

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis