docker搭建 Openvpn实现连接服务器的内网

前言

申明:本文基于docker+kylemanna/openvpn:2.4实现服务器搭建openvpn服务,生成openvpn客户端。本次发文仅供学习讨论使用,不产生任何商业价值。

背景

不知道老铁们自己搞了服务器,在服务器上搭建了mysql、redis等等中间件的时候,有么有这么一种苦恼,就是在家、在星巴克、在图书馆、在公司都是不同的 ip,然后需要到服务器上面一直配置防火墙,今天就彻底使用我们的 openvpn 解决掉。

安装

开始搭建 openvpn 服务端

  • 生成配置文件
mkdir -p /data/openvpn
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://ip

此处的 ip 是服务器的外网 ip,十分建议使用 udp,因为网速问题!

  • 初始化密钥文件
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki

执行上面代码期间需要注意
1.输入密钥密码、确认密钥密码
2.输入 ca 密码更新密钥库以及生成crl文件

  • 生成客户端证书
docker run -v /data/openvpn:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full xx-openvpn-client nopass

其中可修改 xx-openvpn-client 名称,生成的过程需要输入第一步的密钥密码

  • 导出客户端的配置文件xx-openvpn-client.ovpn
docker run -v /data/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient xx-openvpn-client > /data/openvpn/xx-openvpn-client.ovpn

注意xx-openvpn-client名称需与第三步生成时命名一致,此时生成的配置文件xx-openvpn-client.ovpn即可用于客户端连接,然后我们将其从服务器 copy 到本地机器

  • 启动openvpn 服务器

修改下服务器的配置文件

vim /data/openvpn/openvpn.conf 
server 192.168.255.0 255.255.255.0
verb 3
key /etc/openvpn/pki/private/124.220.207.190.key
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/124.220.207.190.crt
dh /etc/openvpn/pki/dh.pem
tls-auth /etc/openvpn/pki/ta.key
key-direction 0
keepalive 10 60
max-clients 100
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

user nobody
group nogroup
comp-lzo no
sndbuf 0
rcvbuf 0

### Route Configurations Below
route 192.168.254.0 255.255.255.0

### Push Configurations Below
push "block-outside-dns"
push "dhcp-option DNS 223.5.5.5"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "comp-lzo no"
docker run  -v /data/openvpn:/etc/openvpn \
-d -p 1194:1194/udp --restart=always --name openvpn \
--cap-add=NET_ADMIN --sysctl net.ipv6.conf.all.disable_ipv6=0 \
--sysctl net.ipv6.conf.default.forwarding=1 --sysctl net.ipv6.conf.all.forwarding=1  \
kylemanna/openvpn:2.4

注意:这时候我们需要去到服务器的防火墙将 1194端口开通
在这里插入图片描述

openvpn 客户端

使用编辑器打开下载下来的xx-openvpn-client.ovpn

client
nobind
dev tun
remote-cert-tls server

remote 124.220.207.190 1194 udp
# remote ip port udp

注意:openvpn client可以配置多个openvpn server节点,每个remote就是一个openvpn server节点,一般可以设置为随机或顺序的方式。当某个节点不行时,客户端会按照相应的方式连接其它节点。另外openvpn-client默认是全局代码的方式,我们也可以通过中xx-openvpn-client.ovpn中配置route来实现局部代理。

假如要给小伙伴们客户端的时候,强烈建议执行
生成客户端证书
导出客户端的配置文件qq-openvpn-client.ovpn
然后发送给小伙伴,这样做的好处是打开的时候流量在不同客户端上似乎会好很多,不至于卡爆!

  • 最后下载下来的客户端就可以直接打开Add 下就可以愉快的连接了,然后所有项目中本来需要连接外网 ip 的地方可以直接修改成 内网 ip,例如 redis、mysql 等等这些连接
    在这里插入图片描述

记录每一次的技术点滴,只为分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值