一、部署前准备 {#%E4%B8%80%E3%80%81%E9%83%A8%E7%BD%B2%E5%89%8D%E5%87%86%E5%A4%87}
1、部署环境:VMware ESXi 8.0 VMware官网 {#1%E3%80%81%E9%83%A8%E7%BD%B2%E7%8E%AF%E5%A2%83%EF%BC%9Avmware-esxi-8.0-vmware%E5%AE%98%E7%BD%91}
1.1、补充:如果用来测试,可以使用 VMware Workstation Pro {#1.1%E3%80%81%E8%A1%A5%E5%85%85%EF%BC%9A%E5%A6%82%E6%9E%9C%E7%94%A8%E6%9D%A5%E6%B5%8B%E8%AF%95%EF%BC%8C%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8-vmware-workstation-pro}
2、操作系统:Ubuntu 22.04.2 LTS (Jammy Jellyfish) Ubuntu官网 {#2%E3%80%81%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%EF%BC%9Aubuntu-22.04.2-lts-(jammy-jellyfish)-ubuntu%E5%AE%98%E7%BD%91}
3、系统环境:Docker+Docker compose Docker官网 {#3%E3%80%81%E7%B3%BB%E7%BB%9F%E7%8E%AF%E5%A2%83%EF%BC%9Adocker%2Bdocker-compose-docker%E5%AE%98%E7%BD%91}
3.1、补充:Ubuntu快速安装Docker和Docker-compose链接---参考:5.1 {#3.1%E3%80%81%E8%A1%A5%E5%85%85%EF%BC%9Aubuntu%E5%BF%AB%E9%80%9F%E5%AE%89%E8%A3%85docker%E5%92%8Cdocker-compose%E9%93%BE%E6%8E%A5%E2%80%94%E5%8F%82%E8%80%83%EF%BC%9A5.1}
4、GitHub项目地址:Kyle Manna {#4%E3%80%81github%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80%EF%BC%9Akyle-manna}
5、客户端软件:OpenVPN官网 {#5%E3%80%81%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BD%AF%E4%BB%B6%EF%BC%9Aopenvpn%E5%AE%98%E7%BD%91}
6、SSH工具:MobaXterm {#6%E3%80%81ssh%E5%B7%A5%E5%85%B7%EF%BC%9Amobaxterm}
二、开始部署 {#%E4%BA%8C%E3%80%81%E5%BC%80%E5%A7%8B%E9%83%A8%E7%BD%B2}
1、拉取镜像 {#1%E3%80%81%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F}
docker pull kylemanna/openvpn
2、配置连接IP {#2%E3%80%81%E9%85%8D%E7%BD%AE%E8%BF%9E%E6%8E%A5ip}
说明一:10.225.97.5,这个IP地址是Ubuntu上网的地址,如果你是VPS,那这里就是你的公网IP,我这是写的是我家里的内网IP。
说明二:GitHub项目里面第一步是:【OVPN_DATA="ovpn-data-example"】,我们不用这么写,采用我下面的方式写,也就是:【/root/docker_data/openvpn/data】,因为我所有的docker项目文件存放的位置都是在/root/docker_data下,所以我新建了openvpn目录,我们可以把openvpn这个目录路径下的data卷映射到openvpn容器内部,方便后期我们维护管理,如果按照GitHub项目方式配置,不方便管理和备份docker数据。
常用服务器:
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://10.225.97.5
临时服务器【--log-driver=none】:如果你不想在服务器上产生关于此容器的日志请用下面的命令。 命令说明:【--log-driver=none】:禁用Docker日志记录功能
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_genconfig -u udp://10.225.97.5
3、创建服务端证书 {#3%E3%80%81%E5%88%9B%E5%BB%BA%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%AF%81%E4%B9%A6}
crl/pem加密密钥:openvpn@789,这个密钥可以自定义
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn ovpn_initpki
4、创建客户端证书 {#4%E3%80%81%E5%88%9B%E5%BB%BA%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%AF%81%E4%B9%A6}
说明一:如果结尾不加nopass表示需要给证书加密,加上则表示不需要加密,最终效果可以在客户端查看。
说明二:结尾的:pass-yydy和nopass-yydy都可以自定义。
4.1、创建加密证书:pass-yydy.ovpn {#4.1%E3%80%81%E5%88%9B%E5%BB%BA%E5%8A%A0%E5%AF%86%E8%AF%81%E4%B9%A6%EF%BC%9Apass-yydy.ovpn}
证书加密密钥:yydy-ovpn-key,这个密钥可以自定义
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full pass-yydy
4.2、创建不加密客户端:nopass-yydy.ovpn {#4.2%E3%80%81%E5%88%9B%E5%BB%BA%E4%B8%8D%E5%8A%A0%E5%AF%86%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%9Anopass-yydy.ovpn}
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm -it kylemanna/openvpn easyrsa build-client-full nopass-yydy nopass
5、创建客户端配置 {#5%E3%80%81%E5%88%9B%E5%BB%BA%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE}
5.1、需要证书密钥的OVPN {#5.1%E3%80%81%E9%9C%80%E8%A6%81%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5%E7%9A%84ovpn}
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient pass-yydy > pass-yydy.ovpn
5.2、不需要证书密钥的OVPN {#5.2%E3%80%81%E4%B8%8D%E9%9C%80%E8%A6%81%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5%E7%9A%84ovpn}
docker run -v /root/docker_data/openvpn/data:/etc/openvpn --log-driver=none --rm kylemanna/openvpn ovpn_getclient nopass-yydy > nopass-yydy.ovpn
6、创建容器启动文件 {#6%E3%80%81%E5%88%9B%E5%BB%BA%E5%AE%B9%E5%99%A8%E5%90%AF%E5%8A%A8%E6%96%87%E4%BB%B6}
说明:GitHub项目给的启动容器的方法是docker run模式,但是这个模式看过我之前博客的小伙伴都知道,不方便记录和管理,所以我们改成docker-compose模式,但是这次如果继续使用docker run命令转docker-compose命令的网站就不好用了,建议直接用我下面修改好的。
6.1、创建docker-compose.yaml文件 {#6.1%E3%80%81%E5%88%9B%E5%BB%BAdocker-compose.yaml%E6%96%87%E4%BB%B6}
vi docker-compose.yaml
6.2、查看network_mode {#6.2%E3%80%81%E6%9F%A5%E7%9C%8Bnetwork_mode}
docker network ls
6.3、编辑docker-compose.yaml {#6.3%E3%80%81%E7%BC%96%E8%BE%91docker-compose.yaml}
说明:你的需要修改network_mode参数,这里每个人都不一样,不能直接复制我的使用。
version: '3.3'
services:
openvpn:
container_name: openvpn
network_mode: cf336c0ca2de
restart: unless-stopped
volumes:
- './data:/etc/openvpn'
ports:
- '1194:1194/udp'
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
6.4、启动容器 {#6.4%E3%80%81%E5%90%AF%E5%8A%A8%E5%AE%B9%E5%99%A8}
docker-compose up -d
三、下载客户端配置 {#%E4%B8%89%E3%80%81%E4%B8%8B%E8%BD%BD%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%85%8D%E7%BD%AE}
MobaXterm左侧可以直接下载
四、验证使用 {#%E5%9B%9B%E3%80%81%E9%AA%8C%E8%AF%81%E4%BD%BF%E7%94%A8}
1、验证不要证书密钥的客户端:nopass-yydy.ovpn {#1%E3%80%81%E9%AA%8C%E8%AF%81%E4%B8%8D%E8%A6%81%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%9Anopass-yydy.ovpn}
2、验证需要证书密钥的客户端:pass-yydy.ovpn {#2%E3%80%81%E9%AA%8C%E8%AF%81%E9%9C%80%E8%A6%81%E8%AF%81%E4%B9%A6%E5%AF%86%E9%92%A5%E7%9A%84%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%9Apass-yydy.ovpn}
五、进阶版 {#%E4%BA%94%E3%80%81%E8%BF%9B%E9%98%B6%E7%89%88}
后续完善!敬请期待!