使用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

相关推荐
wusam4 分钟前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
Deryck_德瑞克40 分钟前
Java网络通信—TCP
java·网络·tcp/ip
GodK7771 小时前
IP 数据包分包组包
服务器·网络·tcp/ip
梁诚斌1 小时前
VSOMEIP代码阅读整理(1) - 网卡状态监听
运维·服务器·网络
ZachOn1y2 小时前
计算机网络:计算机网络概述 —— 描述计算机网络的参数
网络·tcp/ip·计算机网络·考研必备
我命由我123452 小时前
SSL 协议(HTTPS 协议的关键)
网络·经验分享·笔记·学习·https·ssl·学习方法
两点王爷3 小时前
使用WebClient 快速发起请求(不使用WebClientUtils工具类)
java·网络
wusam3 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
一直在进步的派大星3 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
什么鬼昵称5 小时前
Pikachu-xxe-xxe漏洞
网络·安全·xxe