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

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

  1. 1. 初始化OpenVPN配置:使用以下命令初始化OpenVPN配置和证书。替换YourPublicIP.com为您希望访问OpenVPN服务器的公共IP地址或域名。
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. 1. 生成OpenVPN服务器证书:使用以下命令生成OpenVPN服务器的证书和密钥。
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

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

图片
Initiating the OpenVPN PKI system

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

图片
Setting a new CA certificate password

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

图片
Naming the new CA certificate

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

图片
Checking the request matches the signature

再次输入密码生成ca私钥

图片
Generate a private key by entering the CA passphrase

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

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. 1. 生成客户端配置文件:使用以下命令生成OpenVPN客户端配置文件。将CLIENTAPP替换为您希望的客户端名称。
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTAPP nopass
图片
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映射

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来安装,命令如下:
docker pull linuxserver/openvpn-as
图片
  • • 创建docker容器
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
图片
Creating a new Docker container (openvpn-as)
  • • 启动openvpn-as容器
docker start openvpn-as
  • • 登录Web UI 使用https://YourIP:943/admin登录admin管理页面注意: 默认账号密码为adminpassword图片openvpn web ui登录 openvpn-as后效果如下:图片Accessing the OpenVPN Access Server dashboard

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

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

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

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

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

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

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

图片
Logging in to OpenVPN Access Server
  1. 1. 点击任何平台图标下载客户端应用程序,然后点击“Yourself (user-locked profile)”下载客户端.ovpn文件。图片Downloading the .ovpn config file and client app
  2. 2. 最后,启动您下载的OpenVPN客户端,并像在“使用证书保护OpenVPN客户端”教程的最后一步中那样导入.ovpn文件。
图片
Connecting to the OpenVPN server

结论

托管您的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

声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/229712.html

联系我们
联系我们
分享本页
返回顶部