前言
申明:本文基于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 等等这些连接
记录每一次的技术点滴,只为分享!
评论前必须登录!
注册