巧用openVPN实现访问云资源池业务
正文共:1234 字 25 图,预估阅读时间:2 分钟我们前面介绍了使用VSR配置入云访问云资源池内的服务器(一个“假”的“SD-WAN”入云操作案例),虽然功能强大,但是还是要额外占用一台服务器(以腾讯云为例,在公有云部署一台VSR);而且有些小伙伴也在关心授权问题,比如性能和并发数量等问题;对于一些低配版本的经济版主机,更是不支持使用自定义镜像,导致无法使用VSR。那有没有其他解决方案呢?肯定
正文共:1234 字 25 图,预估阅读时间:2 分钟
我们前面介绍了使用VSR配置入云访问云资源池内的服务器(一个“假”的“SD-WAN”入云操作案例),虽然功能强大,但是还是要额外占用一台服务器(以腾讯云为例,在公有云部署一台VSR);而且有些小伙伴也在关心授权问题,比如性能和并发数量等问题;对于一些低配版本的经济版主机,更是不支持使用自定义镜像,导致无法使用VSR。
那有没有其他解决方案呢?
肯定有啊,这不是刚介绍的openVPN就派上用场了吗!
首先,直接同时安装openVPN和Easy-RSA。
yum install -y openvpn easy-rsa
当然,对于我们这种直接从发行版的包管理器中安装的Easy-RSA,官方建议是将整个easy-rsa目录复制到另一个位置,而不是在原目录下进行操作,以便将来的升级不会消除已做的更改。所以我们把/usr/share/easy-rsa/3.0.8/这个目录复制到/etc/openvpn/。
cp -r /usr/share/easy-rsa/3.0.8/ /etc/openvpn/easyrsa3/
配置生成证书
首先复制一个机构配置文件到easyrsa所在的路径下。
cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easyrsa3/vars
然后找到修改vars文件中的机构信息字段,如下所示:
取消注释并修改为自己期望的信息。
set_var EASYRSA_REQ_COUNTRY "CN"
set_var EASYRSA_REQ_PROVINCE "Beijing"
set_var EASYRSA_REQ_CITY "Haidian"
set_var EASYRSA_REQ_ORG "TIETOU TECH"
set_var EASYRSA_REQ_EMAIL "tietou@h3cadmin.cn"
set_var EASYRSA_REQ_OU "Tietou openVPN"
切换到/etc/openvpn/easyrsa3/目录下,初始化PKI(Public Key Infrastructure,公钥基础设施)信息。
./easyrsa init-pki
创建根证书,用于CA(Certificate Authority,证书颁发机构)对之后生成的server和client证书签名时使用。使用nopass参数,不对CA密钥进行加密,这样在签署证书时就可以跳过密码验证。
./easyrsa build-ca nopass
创建服务器端证书,同样指定nopass参数,不对私钥进行加密。
./easyrsa gen-req tiejunge nopass
给服务器端证书tiejunge进行签名。
./easyrsa sign-req server tiejunge
然后创建Diffie-Hellman文件,也就是秘钥交换时的DH算法,确保密钥可以穿越不安全网络。
./easyrsa gen-dh
生成时间比较长,请耐心等待生成结束。
接下来创建客户端的证书,同样指定nopass参数表示不对私钥进行加密。
./easyrsa gen-req tietouge nopass
给客户端证书tietouge进行签名。
./easyrsa sign-req client tietouge
梳理一下生成的证书信息,把服务器端的必要文件(ca.crt、dh.pem、tiejunge.crt、tiejunge.key)复制到/etc/openvpn/server/目录下。
cp /etc/openvpn/easyrsa3/pki/ca.crt /etc/openvpn/server/
cp /etc/openvpn/easyrsa3/pki/dh.pem /etc/openvpn/server/
cp /etc/openvpn/easyrsa3/pki/issued/tiejunge.crt /etc/openvpn/server/
cp /etc/openvpn/easyrsa3/pki/private/tiejunge.key /etc/openvpn/server/
把客户端的必要文件(ca.crt、tietouge.crt、tietouge.key)下载到本地。
配置server.conf文件
openVPN的配置文件server.conf这部分,前面已经着重介绍过了(openVPN服务器配置的31个关键点)。熟悉之后,可以直接在/etc/openvpn/server/目录下新建一个server.conf配置文件,配置使用TCP端口10086作为业务端口,监听所有接口地址,指定根证书、服务器证书、私钥和DH文件。隧道接口类型为隧道,网络拓扑结构配置为子网,地址池网段为10.153.214.0/24,下发默认路由。允许证书混用,隧道保活间隔为20秒,超时时间为120秒,并固化服务器配置。
配置文件内容如下:
local 0.0.0.0
proto tcp
port 10086
dev tun
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/tiejunge.crt
key /etc/openvpn/server/tiejunge.key
dh /etc/openvpn/server/dh.pem
topology subnet
server 10.153.214.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
duplicate-cn
keepalive 20 120
persist-key
persist-tun
启动openVPN
首先使能Linux的内核转发。
echo 1 > /proc/sys/net/ipv4/ip_forward
然后开启主机的NAT功能。
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
如果是长期使用,建议把这两条命令写入到启动脚本/etc/rc.d/rc.local中。
接下来就是启动openVPN了,系统里的服务名称有点不太符合常规,是openvpn@server.service,为了方便起见,我们可以选择新建一个名为openvpn.service的服务。
先创建openvpn服务的启动文件。
vi /etc/systemd/system/openvpn.service
[Unit]
Description=OpenVPN Server
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/server/server.conf
然后重新加载系统服务,启动openvpn服务并使能开机启动。
systemctl daemon-reload
systemctl start openvpn
systemctl enable openvpn
systemctl status openvpn
查看openVPN的端口监听状态:
ss -atnp |grep 10086
ss -atnp |grep openvpn
从本地探测一下端口开放状态。
openVPN网关服务器运行状态正常。
连接客户端
我们已经介绍过了Windows系统(openVPN连接操作指南)、Linux-CentOS系统(openVPN的Linux客户端竟然比Windows客户端性能高5倍不止)、macOS系统和Android系统(openVPN客户端配置之macOS、Android操作指南)的openVPN客户端安装,iOS系统的客户端不提供在中国境内下载。
我们今天就在Windows 10系统中做个简单演示。
openVPN客户端的默认安装路径是C:\Program Files (x86)\OpenVPN Technologies\OpenVPN Client,我们需要将服务器上生成的客户端证书和密钥(ca.crt、tietouge.crt、tietouge.key)复制到OpenVPN安装目录的etc目录下。
接下来还是在存放证书的etc目录下,编写一个客户端配置文件tietouge.ovpn,配置为客户端模式,服务器为opvpn.h3cadmin.cn,服务器使用TCP端口10086,使用隧道传输协议;不绑定本地特定的端口号,开启断线自动重新连接,并保持心跳检测超时后,不会变更密钥和网卡状态;同时指定相关的证书文件,配置日志级别为4。
配置文件tietouge.ovpn的内容如下所示:
client
dev tun
proto tcp
remote opvpn.h3cadmin.cn 10086
ca ca.crt
cert tietouge.crt
key tietouge.key
nobind
resolv-retry infinite
persist-key
persist-tun
verb 4
然后我们右击任务栏的图标,选择“Import→From local file”导入刚才生成的配置文件tietouge.ovpn。
导入成功之后,可以看到多了一个VPN服务器opvpn.h3cadmin.cn,然后点击“Connect”连接VPN。
连接成功之后,任务栏中的OpenVPN图标会变成绿色,同时会有一个连接成功的提示。鼠标悬浮在图标上,可以查看概览信息。
查看网络适配器信息,可以看到新安装的TAP网卡连接成功,并且获得了一个OpenVPN服务器分配的IP地址10.153.214.2。与Windows7系统不同的是,Windows10中显示的网卡速率为1.0 Gbps。
查看系统路由表。
可以看到系统中多了两条路由0.0.0.0/1和120.0.0.0/1,效果等同于默认路由,但是这样下发配置能以最长匹配的方式直接覆盖掉默认路由,避免再因为路由优先级的原因出现不生效或冲突等情况。
最后测试一下访问云资源池内的服务器资源。
访问成功,一跳直达,入云访问测试成功!
长按二维码
关注我们吧
openVPN的Linux客户端竟然比Windows客户端性能高5倍不止
更多推荐
所有评论(0)