本文主要介绍openvpn 基于docker快速部署
OpenVPN是一个开源应用程序,可以通过公共Internet创建一个专用网络。在我们开始之前,我们首先需要安装Enterprise Linux(EPEL)存储库的额外包。下面就是关于如何在CentOS 7上设置Client和OpenVPN服务器的教程。
企业级CentOS7-OpenVPN网络隧道实战
一、环境介绍
[root@node02 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@node02 ~]# uname -a
Linux node02 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
#当前环境,全新的Centos7.4系统,配置好yum源
二、Docker 部署 openvpn
2.1 docker配置
docker安装
yum install yum-utils device-mapper-persistent-data lvm2
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
yum install docker
查看docker 版本
docker version
docker镜像加速
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://xxx.mirror.aliyuncs.com"]
}
启动docker
systemctl start docker
2.2 拉取openvpn镜像
docker pull kylemanna/openvpn:2.4
2.5、创建一个目录
mkdir -p /data/openvpn
2.3 修改配置文件
2.6 生成配置文件(192.168.56.12 这个ip是我当前服务器的公网IP)
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_genconfig -u udp://192.168.56.12
2.4 秘钥配置
生成密钥文件
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 ovpn_initpki
输入私钥密码(输入时是看不见的):
Enter PEM pass phrase:123456
再输入一遍
Verifying - Enter PEM pass phrase:123456
输入一个CA名称(我这里直接回车)
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:
输入刚才设置的私钥密码(输入完成后会再让输入一次)
Enter pass phrase for /etc/openvpn/pki/private/ca.key:123456
2.8、生成客户端证书(这里的qqq改成你想要的名字)
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa build-client-full qqq nopass
#输入刚才设置的密码
Enter pass phrase for /etc/openvpn/pki/private/ca.key:123456
2.5 配置导出并配置
导出客户端配置
mkdir -p /data/openvpn/conf
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_getclient qqq > /data/openvpn/conf/qqq.ovpn
启动OpenVPN服务
docker run --name openvpn -v /data/openvpn:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn:2.4
"更多命令:"
停止openvpn
docker stop openvpn
启动openvpn
docker start openvpn
三、防火墙配置
3.1 防火墙规则
iptables-save > /etc/sysconfig/iptables
systemctl stop firewalld.service
systemctl disable firewalld.service
yum -y install iptables-services net-tools #安装iptables
systemctl enable iptables.service
3.2 编辑防火墙配置
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
在最后"COMMIT"前添加以下规则
下面是一个完整的示例(这里只是个示例,根据自身情况对防火墙进行调整)
[root@node02 ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Thu Jan 24 14:32:59 2019
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.2/32 -d 172.17.0.2/32 -p udp -m udp --dport 1194 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
-A DOCKER ! -i docker0 -p udp -m udp --dport 1194 -j DNAT --to-destination 172.17.0.2:1194
COMMIT
# Completed on Thu Jan 24 14:32:59 2019
# Generated by iptables-save v1.4.21 on Thu Jan 24 14:32:59 2019
*filter
:INPUT ACCEPT [23:1852]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [21:2436]
:DOCKER - [0:0]
:DOCKER-ISOLATION - [0:0]
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p udp -m udp --dport 1194 -j ACCEPT
-A DOCKER-ISOLATION -j RETURN
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Jan 24 14:32:59 2019
3.3、重启防火墙
systemctl restart iptables
四、windows 客户端配置
4.1 、将登录的证书下载到本地
yum install lrzsz -y
sz /data/openvpn/conf/qqq.ovpn
4.2 客户端下载
openvpn客户端下载:http://down.whsir.com/downloads/openvpn-install-2.4.4-I601.exe
在openvpn的安装目录下,有个config目录,将服务器上的qqq.ovpn,放在该目录下,运行OpenVPN GUI即可。
连接成功
五、openvpn用户管理
5.1 用户管理shell脚本
openvpn创建用户脚本
#!/bin/bash
read -p "please your username: " NAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa build-client-full $NAME nopass
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn:2.4 ovpn_getclient $NAME > /data/openvpn/conf/"$NAME".ovpn
docker restart openvpn
openvpn删除用户脚本
#!/bin/bash
read -p "Delete username: " DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa revoke $DNAME
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 easyrsa gen-crl
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 rm -f /etc/openvpn/pki/reqs/"$DNAME".req
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 rm -f /etc/openvpn/pki/private/"$DNAME".key
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn:2.4 rm -f /etc/openvpn/pki/issued/"$DNAME".crt
docker restart openvpn
5.2 通过脚本创建用户
mkdir /server/scripts -p
vim add_openvpn.sh
chmod +x add_openvpn.sh
sh add_openvpn.sh
sz -y /data/openvpn/conf/qiuyuetao.ovpn
然后按照上面四步骤,放入config即可。 删除用户同理。
至此,基于Docker搭建企业级Openvpn专有网络 完~~~~~
- QQ精品交流群
-
- 微信公众号
-