使用openvpn docker及frp docker工具构建虚拟专业网络(V-P-N)

使用openvpn docker及frp docker工具构建虚拟专业网络(V-P-N)

借助Docker和OpenVPN技术,您可以在短时间内设置并运行VPN服务器,并保证您的服务器安全。

运行环境

Ubuntu 16.04 TLS

Docker version 19.03.8, build afacb8b7f0

OpenVPN Android Client 0.7.43

创建OpenVPN Docker容器

  1. 安装Docker:如果您的系统上没有安装Docker,请先按照适用于您的操作系统的指南安装Docker。在Ubuntu上,可以使用以下命令安装Docker:
bash 复制代码
sudo apt update
sudo apt install docker.io
  1. 获取OpenVPN Docker镜像:使用以下命令从Docker Hub上获取OpenVPN镜像:
bash 复制代码
sudo docker pull kylemanna/openvpn
  1. 创建OpenVPN配置目录:创建一个目录用于保存OpenVPN配置文件和证书:
bash 复制代码
OVPN_DATA="ovpn-data-test"
docker volume create --name $OVPN_DATA

执行上述命令后,会在docker默认数据及配置保存目录/var/lib/docker/volumes下创建openvpn的配置目录ovpn-data-test

  1. 初始化OpenVPN配置:使用以下命令初始化OpenVPN配置和证书。替换YourPublicIP.com为您希望访问OpenVPN服务器的公共IP地址或域名。
bash 复制代码
sudo docker run -v $OVPN_DATA:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://YourPublicIP.com

如果你是本地创建VPN server,那么这里YourPublicIP.com 应该填写你本地IP地址。

生成安全证书并运行OpenVPN server

  1. 生成OpenVPN服务器证书:使用以下命令生成OpenVPN服务器的证书和密钥。

    sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

输入"yes",然后按Enter键,如下所示,以启动OpenVPN PKI系统。

输入CA证书密码,或者输入Enter

为CA证书输入一个名称,或者输入Enter

输入在第2步设置的CA密码,以检查请求是否匹配签名。

再次输入密码生成ca私钥

2.使用以下命令启动OpenVPN服务器:

bash 复制代码
sudo docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn


--cap-add=NET_ADMIN参数通过修改Docker默认不授予的网络接口来应用额外的Linux能力。

生成OpenVPN client证书

  1. 生成客户端配置文件:使用以下命令生成OpenVPN客户端配置文件。将CLIENTAPP替换为您希望的客户端名称。
bash 复制代码
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTAPP nopass
bash 复制代码
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTAPP > CLIENTAPP.ovpn

将生成的CLIENTAPP.ovpn客户端证书拷贝到你的Android Client。

现在,您已经成功安装了OpenVPN服务器,并生成了一个客户端配置文件。将CLIENTAPP.ovpn文件发送给您的客户端,并使用OpenVPN客户端连接到您的OpenVPN服务器即可。

VPN server内网穿透

如果openvpn server是在局域网内部署,则还需要使用frp工具进行穿透,关于frp内网穿透内容参考如下:

https://blog.csdn.net/u011897062/article/details/131764782

具体到本文中的openvpn frp配置及命令如下:

服务端:frps
frps.init文件不需要修改,需要在启动命令中增加7002端口的映射

客户端: frpc
/opt/frpc.init增加vpn配置

docker运行命令增加1194映射

bash 复制代码
docker run --restart=always -d   --network host   -v /opt/frpc.ini:/etc/frp/frpc.ini   -p 80:80/tcp  -p 1194:1194/udp  --name frpc   snowdreamtech/frpc

CLIENTAPP.ovpnremote 0.0.0.0 7002 udp 需要修改为remote PublicIP.com 7002 udp

OpenVPN 使用Web UI管理

为了方便OpenVPN server的管理,官方提供了Web UI管理页面

  • 下载openvpn-as docker
    我们仍然使用docker来安装,命令如下:
bash 复制代码
docker pull linuxserver/openvpn-as
  • 创建docker容器
bash 复制代码
docker create --name=openvpn-as --restart=always -v /home/docker/openvpn-as/config:/config -e INTERFACE=eth0 -e PGID=1001 -e PUID=1001 -e TZ=Africa/Nairobi --net=host --privileged linuxserver/openvpn-as
  • 启动openvpn-as容器
bash 复制代码
docker start openvpn-as
  • 登录Web UI
    使用https://YourIP:943/admin登录admin管理页面

注意: 默认账号密码为adminpassword

登录 openvpn-as后效果如下:

配置DNS以获得更快和更安全的连接

目前,您的OpenVPN Access Server已经正确工作。但为了提高VPN服务器的性能,您需要配置DNS。

要配置DNS,您需要访问OpenVPN服务器的Web界面,并使用Google或您喜欢的DNS地址更新DNS设置。Google提供了最快速的DNS服务器,您将在您的OpenVPN Access Server中使用它们。

  1. 在OpenVPN Access Server仪表板的CONFIGURATION选项卡下,点击左侧面板中的VPN设置。

滚动到DNS设置部分,启用"Have clients use Specific DNS servers"选项,如下所示。

  1. 接下来,更新主DNS服务器(8.8.8.8)和次DNS服务器(8.8.8.4)为Google DNS地址,然后点击"Save Settings"保存更改。
  1. 保存更改后,点击"Update Running Server"重新启动服务器,以使更改生效。
  1. 现在,在您的Linux机器上导航到OpenVPN Access Server(例如https://YourIP:943/admin)。将YourIP替换为您服务器的IP地址。如果配置正确,您将看到如下所示的相同页面。

使用默认凭据(用户名:admin,密码:password)登录。

  1. 点击任何平台图标下载客户端应用程序,然后点击"Yourself (user-locked profile)"下载客户端.ovpn文件。

  2. 最后,启动您下载的OpenVPN客户端,并像在"使用证书保护OpenVPN客户端"教程的最后一步中那样导入.ovpn文件。

结论

托管您的VPN服务器绝不应该是一个复杂的任务,更不用说保护服务器连接了。幸运的是,OpenVPN Docker就在眼前,拯救了一切。在本教程中,您已经学会了在Ubuntu上使用Docker安装、设置和配置OpenVPN。您还了解了如何通过OpenVPN CA和客户端证书保护Docker容器中的OpenVPN访问。

除了通过命令行界面访问OpenVPN服务器外,您现在还可以通过OpenVPN Access Server的Web界面进行可视化操作。通过为OpenVPN客户端应用程序生成客户端配置文件,您已经实现了快速部署VPN。

Github

https://github.com/kylemanna/docker-openvpn

参考

(Fundamentals of Running OpenVPN in Docker on Ubuntu) https://adamtheautomator.com/openvpn-in-docker/
(frp+openvpn+docker实现内网穿透)

https://www.jianshu.com/p/8bffa1046008
https://medium.com/@gurayy/set-up-a-vpn-server-with-docker-in-5-minutes-a66184882c45

相关推荐
网安墨雨1 小时前
常用网络协议
网络·网络协议
Tlzns1 小时前
Linux网络——UDP的运用
linux·网络·udp
码农土豆1 小时前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
黑客老陈1 小时前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
HSunR3 小时前
计算机网络
网络·计算机网络
ZoeLandia3 小时前
WebSocket | 背景 概念 原理 使用 优缺点及适用场景
网络·websocket·网络协议
南七澄江3 小时前
各种网站(学习资源及其他)
开发语言·网络·python·深度学习·学习·机器学习·ai
gywl10 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
WTT001110 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
杨德杰11 小时前
QT网络(一):主机信息查询
网络·qt