需求
通过vpn直接访问内网容器ip可以直接登录,不再需要先登入公网IP再跳转到内网容器内部。
访问示意图
1
| 互联网(openvpn client)-->(公网ip)服务器(私网ip:172.18.0.10)-->服务器端容器(内网172.18.0.8)
|
openvpn服务端配置
拉取镜像
1
| docker pull kylemanna/openvpn
|
创建映射目录
1
| mkdir -pv /data/openvpn/conf
|
生成配置文件
1
| docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://10.10.10.10
|
生成密钥文件
要求输入私钥密码
1
2
3
4
5
| docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
Enter PEM pass phrase: 098poilkj. # 输入私钥密码
Verifying - Enter PEM pass phrase: 098poilkj. # 重新输入一次密码
Common Name (eg: your user,host,or server name) [Easy-RSA CA]: # 输入一个CA名称。可以不用输入,直接回车
Enter pass phrase for /etc/openvpn/pki/private/ca.key: 123456 # 输入刚才设置的私钥密码,完成后在输入一次
|
生成客户端证书
test1改成其他名字
1
2
| docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full test1 nopass
Enter pass phrase for /etc/openvpn/pki/private/ca.key: 098poilkj. # 输入刚才设置的密码
|
导出客户端配置
1
| docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient test1 > /data/openvpn/conf/test1.ovpn
|
启动openvpn
1
| docker run --name openvpn -v /data/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
|
openvpn用户管理
添加用户脚本
vim add_user.sh
1
2
3
4
5
| #!/bin/bash
read -p "please your username: " NAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full $NAME nopass
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient $NAME > /data/openvpn/conf/"$NAME".ovpn
docker restart openvpn
|
删除用户脚本
vim del_user.sh
1
2
3
4
5
6
7
8
| #!/bin/bash
read -p "Delete username: " DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa revoke $DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa gen-crl
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn rm -f /etc/openvpn/pki/reqs/"DNAME".req
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn rm -f /etc/openvpn/pki/private/"DNAME".key
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn rm -f /etc/openvpn/pki/issued/"DNAME".crt
docker restart openvpn
|
添加用户
1
| ./add_user.sh # 输入要添加的用户名,回车后输入刚才创建的私钥密码
|
创建的证书在/data/openvpn/conf
目录下。
openvpn客户端配置
官网下载客户端
从服务端把证书拷贝到桌面上,并将证书test1.ovpn
直接导入到客户端内。然后输入容器内部IP就可以直接访问docker内部容器了。
警告
本文最后更新于 April 17, 2022,文中内容可能已过时,请谨慎使用。