在现代IT运维和开发环境中,容器化技术已成为部署应用的标准方式之一,Docker作为最流行的容器平台,不仅简化了软件的打包与分发流程,还显著提升了环境一致性与资源利用率,对于需要在Ubuntu系统中快速部署安全远程访问服务的网络工程师而言,利用Docker搭建一个可定制的VPN服务(如OpenVPN或WireGuard)是一种既高效又灵活的选择。

本文将详细介绍如何在Ubuntu 20.04/22.04服务器上,通过Docker容器运行一个基于OpenVPN的VPN服务,实现跨网络的安全通信,整个过程分为以下几个步骤:

第一步:安装Docker和Docker Compose
首先确保系统已更新并安装必要的依赖包:

sudo apt update && sudo apt upgrade -y
sudo apt install docker.io docker-compose -y

安装完成后,启动并设置Docker开机自启:

sudo systemctl enable docker && sudo systemctl start docker

第二步:获取OpenVPN Docker镜像
我们使用社区维护良好的kylemanna/openvpn镜像,它封装了OpenVPN的完整配置流程,执行以下命令拉取镜像:

docker pull kylemanna/openvpn

第三步:初始化OpenVPN配置文件
创建一个本地目录用于存储OpenVPN配置文件(建议放在/opt/openvpn):

mkdir -p /opt/openvpn/data
cd /opt/openvpn/data

运行容器生成CA证书、服务器证书及客户端配置文件:

docker run --rm -v $(pwd):/etc/openvpn kylemanna/openvpn ovpn_genconfig -u udp://your-server-ip-or-domain.com
docker run --rm -v $(pwd):/etc/openvpn kylemanna/openvpn ovpn_initpki

注意:替换your-server-ip-or-domain.com为你的公网IP或域名,这是客户端连接时使用的地址。

第四步:启动OpenVPN服务容器
创建docker-compose.yml如下:

version: '3'
services:
  openvpn:
    image: kylemanna/openvpn
    container_name: openvpn
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    volumes:
      - ./data:/etc/openvpn
    ports:
      - "1194:1194/udp"
    environment:
      - TZ=Asia/Shanghai

然后执行:

docker-compose up -d

此时OpenVPN服务已在UDP端口1194上运行,支持多用户同时连接。

第五步:生成客户端配置文件
要让客户端接入,需为每个用户生成独立的.ovpn配置文件:

docker exec openvpn ovpn_addcert client1

该命令会生成名为client1.ovpn的文件,可下载到本地设备用于连接。

第六步:防火墙与NAT配置
若服务器位于NAT后(如云主机),还需在路由器或云平台开启端口转发(UDP 1194),在Ubuntu防火墙中允许该端口:

sudo ufw allow 1194/udp


通过上述步骤,你可以在Ubuntu上构建一个轻量级、可扩展的Docker化OpenVPN服务,相比传统虚拟机部署,这种方式节省资源、便于版本控制、易于迁移,并可通过Docker Compose轻松管理多个服务实例,结合Let's Encrypt证书可进一步增强安全性,适用于远程办公、企业内网穿透、IoT设备安全接入等多种场景,作为网络工程师,掌握这一技能将极大提升你在云原生时代的服务交付效率与灵活性。

Ubuntu下搭建Docker化VPN服务,高效、安全与灵活的网络解决方案  第1张

VPN加速器|半仙VPN加速器-免费VPN梯子首选半仙VPN