docker openvpn的安装方法

前提条件

1、云服务器,不限制云服务商但是必须要公网IP地址,且有最高权、能放行端口

2、家里有一台能安装OpenVPN Client客户端的路由器,我是用的是红米AC2100,刷的OpenWRT系统

3、远程使用的OpenVPN Client的客户端,比如手机、电脑

教程

1、使用Docker安装OpenVPN服务端

获取最新版本的 Docker 安装包

wget -qO- https://get.docker.com/ | sh

shell38 Bytes© 奎利

启动docker服务,验证docker信息,命令如下:

sudo service docker start

docker version

shell40 Bytes© 奎利

拉取OpenVPN镜像到本地,并初始化docker容器

# 拉取OpenVPN的镜像

docker pull kylemanna/openvpn

# 新建OpenVPN的工作目录

mkdir /etc/openvpn

# 初始化容器以保存配置文件和证书。容器将提示用户输入一个密码以保护新生成的证书授权机构使用的私钥

# xx.xx.xx.xx为您服务器的公网IP地址

docker run -v /etc/openvpn:/etc/openvpn –rm kylemanna/openvpn ovpn_genconfig -u udp://xx.xx.xx.xx:1194

docker run -v /etc/openvpn:/etc/openvpn –rm -it kylemanna/openvpn ovpn_initpki

shell342 Bytes© 奎利

启动过程中需要输入证书密码和域名,请注意输入密码时不会显示任何信息;

基于OpenVPN实现随时随地访问家里的NAS
基于OpenVPN实现随时随地访问家里的NAS

启动OpenVPN Server进程,启动后可以输入 docker ps查看运行容器信息

docker run \

–name openvpn \

–restart=always \

–privileged=true \

-v /etc/openvpn/:/etc/openvpn \

-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro \

-p 1194:1194/udp \

–cap-add=NET_ADMIN \

-d kylemanna/openvpn

shell228 Bytes© 奎利

基于OpenVPN实现随时随地访问家里的NAS

2、配置OpenVPN服务端

修改/etc/openvpn.config配置文件如下:

server 192.168.255.0 255.255.255.0

verb 3

key /etc/openvpn/pki/private/192.168.175.128.key

ca /etc/openvpn/pki/ca.crt

cert /etc/openvpn/pki/issued/192.168.175.128.crt

dh /etc/openvpn/pki/dh.pem

tls-auth /etc/openvpn/pki/ta.key

key-direction 0

keepalive 10 60

persist-key

persist-tun

proto udp

# Rely on Docker to do port mapping, internally always 1194

port 1194

dev tun0

status /tmp/openvpn-status.log

# VPN连接后分配的IP地址将记录在ipp.txt中,下次连接VPN继续使用此IP地址

ifconfig-pool-persist ipp.txt

# 客户端互联

client-to-client

# 客户端所在的局域网联通

client-config-dir /etc/openvpn/ccd

user nobody

group nogroup

comp-lzo no

### Route Configurations Below

route 192.168.254.0 255.255.255.0

### Push Configurations Below

push “block-outside-dns”

push “dhcp-option DNS 8.8.8.8”

push “dhcp-option DNS 8.8.4.4”

push “comp-lzo no”

generic794 Bytes© 奎利

配置文件修改完成后,重新启动docker容器

# 先暂停openvpn容器

docker stop openvpn

# 后启动openvpn容器

docker start openvpn

shell71 Bytes© 奎利

在 /etc/openvpn/ccd目录下, 为局域网的VPN网关创建配置文件,配置文件的文件名要和客户名相同。

我为家中路由器生成的证书名称为OpenWRT,内网网段为192.168.1.0/24,所以配置文件为:

vi ccd/OpenWRT

# 键入i,在文件里添加路由信息

iroute 192.168.1.0 255.255.255.0

# 键入Esc,输入:wq 保存退出

generic85 Bytes© 奎利

3、配置OpenVPN客户端

生成带密码的客户端证书,作为电脑和手机的VPN证书,每次登录VPN时,都需要输入密码;

docker run -v /etc/openvpn/:/etc/openvpn –rm -it kylemanna/openvpn easyrsa build-client-full client001

输入密码:******

shell115 Bytes© 奎利

生成不带密码的客户端证书,作为OpenWRT的VPN证书,VPN连接时不用输入密码;

docker run -v /etc/openvpn/:/etc/openvpn –rm -it kylemanna/openvpn easyrsa build-client-full OpenWRT nopass

shell108 Bytes© 奎利

导出证书,并下载到本地

docker run -v /etc/openvpn/:/etc/openvpn –rm kylemanna/openvpn ovpn_getclient client001 > /etc/openvpn/client001.ovpn

docker run -v /etc/openvpn/:/etc/openvpn –rm kylemanna/openvpn ovpn_getclient client001 > /etc/openvpn/OpenWRT.ovpn

shell236 Bytes© 奎利

修改client001.ovpn远程客户端证书,禁用默认路由,新增局域网192.168.1.0的路由和指向服务端的路由;

# redirect-gateway def1

route-nopull

route 192.168.1.0 255.255.255.0 vpn_gateway

route 192.168.255.0 255.255.255.0 vpn_gateway

generic128 Bytes© 奎利

修改OpenWRT.ovpn客户端证书,禁用默认路由,新增一条指向服务端的路由;

# redirect-gateway def1

route-nopull

route 192.168.255.0 255.255.255.0 vpn_gateway

generic83 Bytes© 奎利

将OpenWRT.ovpn导入到家中路由器的OpenVPN客户端中,并启用;

将client001.ovpn导入到手机或者电脑的OpenVPN客户端中,点击连接并输入密码,等待连接完成后即可访问家中的服务。

参考资料

OpenVPN Docker搭建 – 简书 (jianshu.com)

kylemanna/openvpn – Docker Image |码头工人中心

使用OpenVPN实现局域网互联 (itxueyuan.com)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注