新手向导:轻松掌握Docker搭建OpenVPN

2024-03-03 16:30

本文主要是介绍新手向导:轻松掌握Docker搭建OpenVPN,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、概述

OpenVPN是一个开源的VPN软件包,可以创建基于SSL/TLS的安全的VPN隧道,支持多种操作系统和平台。OpenVPN包含:社区版(Community Edition),商业版(Access Server)。

  • openvpn

社区版是完全免费的,但是需要用户有一定的Linux和命令行的知识,以及自己配置和管理VPN服务器和客户端。社区版提供了OpenVPN Connect客户端,可以在Windows, macOS, Linux, Android和iOS上使用。

  • openvpn-as

商业版是一个付费的VPN解决方案,提供了一个易于使用的Web界面,可以方便地管理和配置VPN服务器和客户端。商业版还提供了预配置的客户端软件,以及在多个云平台上部署的选项²。商业版提供了两个免费的VPN连接授权,可以用于试用³。

  • CloudConnexa

CloudConnexa是OpenVPN的一个云端VPN解决方案,可以让您轻松地创建和管理安全的虚拟网络,无需自己安装和维护VPN服务器。CloudConnexa提供了多个全球区域的接入点,以及多种网络安全功能,如零信任访问、内容过滤、灵活的路由等。CloudConnexa还提供了三个免费的VPN连接授权,可以用于试用。

二、安装

以下我们来讲讲openvpn社区版的安装:

openvpn的安装包含两部分,即openvpn server及openvpn client。

2.1、Docker搭建openvpn server

准备好一台主机,并安装好docker(docker官网下载最新的安装包),下载openvpn镜像docker pull kylemanna/openvpn:2.4。kylemanna/openvpn是目前使用率最高的openvpn镜像。

1、使用openvpn生成配置文件

mkdir -p /data/openvpn
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://xx.xx.xx.xx

执行完命令后可在目录/data/openvpn中看到相应的配置文件;我这里使用的是upd方式,当然你也可以改成tcp://

2、初始化密钥文件

docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

执行过程中需要先设置ca密码(如123456),Common Name可不设置直接按回车继续默认是server,接着需要输入ca密码更新密钥库以及生成crl文件;

3、生成客户端证书

docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full openvpn-client nopass

其中openvpn-client为自定义名称,你也可修改成自己定义的名称,生成的过程需要输入ca密码;

4、导出客户端的配置文件openvpn-client.ovpn

docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient openvpn-client > /data/openvpn/openvpn-client.ovpn

注意openvpn-client名称需与第三步生成时命名一致,此时生成的配置文件openvpn-client.ovpn即可用于客户端连接;

5、启动openvpn

docker run  -v /data/openvpn:/etc/openvpn \
-d -p 1194:1194/udp --restart=always --name openvpn \
--cap-add=NET_ADMIN --sysctl net.ipv6.conf.all.disable_ipv6=0 \
--sysctl net.ipv6.conf.default.forwarding=1 --sysctl net.ipv6.conf.all.forwarding=1  \
kylemanna/openvpn

注意防火墙是否关闭,没关闭需要开放1194为udp端口。到这里openvpn服务端就安装完成了。

2.2、Windows安装openvpn client

1、下载相应的客户端并安装,openvpn客户端有linux、windows及移动端各种版本。

2、获取客户端配置文件

按上面的步骤操作后,会在/data/openvpn目录中找到openvpn-client.ovpn文件。下载到windows机器,然后双击就可以导入并连接到openvpn server。

3、openvpn-client.ovpn

client
nobind
dev tun
remote-cert-tls server
remote ip port udp
remote ip port udp
remote ip port udp
remote ip port udp

openvpn client可以配置多个openvpn server节点,每个remote就是一个openvpn server节点,一般可以设置为随机或顺序的方式。当某个节点不行时,客户端会按照相应的方式连接其它节点。另外openvpn-client默认是全局代码的方式,我们也可以通过中openvpn-client.ovpn中配置route来实现局部代理。

2.3、Linux安装openvpn client

apt install apt-transport-https curl
mkdir -p /etc/apt/keyrings    ### This might not exist in all distributions
curl -sSfL https://packages.openvpn.net/packages-repo.gpg >/etc/apt/keyrings/openvpn.asc

下面的变量${DISTRIBUTION}需要替换成相应的值

echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian ${DISTRIBUTION} main" >>/etc/apt/sources.list.d/openvpn3.list

我当前系统是Ubuntu20所以换成focal

echo "deb [signed-by=/etc/apt/keyrings/openvpn.asc] https://packages.openvpn.net/openvpn3/debian focal main" >>/etc/apt/sources.list.d/openvpn3.list
apt update
apt install openvpn3

安装完成后,${MY_CONFIGURATION_FILE}就是openvpn-client.ovpn文件

openvpn3 session-start --config ${MY_CONFIGURATION_FILE}

这篇关于新手向导:轻松掌握Docker搭建OpenVPN的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

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

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

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

如何使用Haporxy搭建Web群集

《如何使用Haporxy搭建Web群集》Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多如LVS和Nginx,本案例介绍使用Haproxy及Nginx搭建一套Web群集,感兴趣的... 目录一、案例分析1.案例概述2.案例前置知识点2.1 HTTP请求2.2 负载均衡常用调度算法 2.