基于Docker搭建企业级Openvpn专有网络

2019年1月24日14:56:43 发表评论 1,010 views

基于Docker搭建企业级Openvpn专有网络
本文主要介绍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搭建企业级Openvpn专有网络

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

基于Docker搭建企业级Openvpn专有网络

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即可。

基于Docker搭建企业级Openvpn专有网络
基于Docker搭建企业级Openvpn专有网络
连接成功
基于Docker搭建企业级Openvpn专有网络

五、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精品交流群
  • weinxin
  • 微信公众号
  • weinxin
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: