becdf0ca27b8feaa94185a94d6dd6d0f.gif

正文共:1234 字 25 图,预估阅读时间:2 分钟

我们前面介绍了使用VSR配置入云访问云资源池内的服务器一个“假”的“SD-WAN”入云操作案例,虽然功能强大,但是还是要额外占用一台服务器以腾讯云为例,在公有云部署一台VSR;而且有些小伙伴也在关心授权问题,比如性能和并发数量等问题;对于一些低配版本的经济版主机,更是不支持使用自定义镜像,导致无法使用VSR。

那有没有其他解决方案呢?

肯定有啊,这不是刚介绍的openVPN就派上用场了吗!

首先,直接同时安装openVPN和Easy-RSA。

yum install -y openvpn easy-rsa

24694681e960601a386d2df6b81f3fc4.png

当然,对于我们这种直接从发行版的包管理器中安装的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/

84fb0e607ea23aae721f6cbfe1c06230.png

f28bf315f71b7190fff3d5dfa6c9bfd0.png

配置生成证书

首先复制一个机构配置文件到easyrsa所在的路径下。

cp /usr/share/doc/easy-rsa-3.0.8/vars.example /etc/openvpn/easyrsa3/vars

64b822d3673ad0f5366c215eef286968.png

然后找到修改vars文件中的机构信息字段,如下所示:

19882e8541aa4deaf08ece55d820b63a.png

取消注释并修改为自己期望的信息。

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

1c285a2184b79c56a3068649aca70721.png

创建根证书,用于CA(Certificate Authority,证书颁发机构)对之后生成的server和client证书签名时使用。使用nopass参数,不对CA密钥进行加密,这样在签署证书时就可以跳过密码验证。

./easyrsa build-ca nopass

16b442c345f0eee481202c59a75b3600.png

创建服务器端证书,同样指定nopass参数,不对私钥进行加密。

./easyrsa gen-req tiejunge nopass

b7e874244fdcc8f669a6f76717a4e9ff.png

给服务器端证书tiejunge进行签名。

./easyrsa sign-req server tiejunge

5fe15bdb6f6433367310f038d029ff2f.png

然后创建Diffie-Hellman文件,也就是秘钥交换时的DH算法,确保密钥可以穿越不安全网络。

./easyrsa gen-dh

生成时间比较长,请耐心等待生成结束。

62e6fa9dbb5f069eade50ef4d66dcb76.png

接下来创建客户端的证书,同样指定nopass参数表示不对私钥进行加密。

./easyrsa gen-req tietouge nopass

793498991fb53a1a05653c9012bca887.png

给客户端证书tietouge进行签名。

./easyrsa sign-req client tietouge

ddf5755afdcebd7b34272f0c81dbb79f.png

梳理一下生成的证书信息,把服务器端的必要文件(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/

99e86b37a6fef59ada3dad790875843f.png

把客户端的必要文件(ca.crt、tietouge.crt、tietouge.key)下载到本地。

dd7016221df444cff18ef5b493ba9ca1.png

配置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

e7db55d820ccec84f72850a75b6c00a1.png

14617e4f271eb968441dd6bdb2b2a2e1.png

启动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

666a41a2099abf35df8c83d1fb0347b1.png

然后重新加载系统服务,启动openvpn服务并使能开机启动。

systemctl daemon-reload
systemctl start openvpn
systemctl enable openvpn
systemctl status openvpn

1870d051faefea08ab76ec4504cc21f0.png

查看openVPN的端口监听状态:

ss -atnp |grep 10086
ss -atnp |grep openvpn

066f2165f556d34a9220c539e177735b.png

从本地探测一下端口开放状态。

d5bbfa041f351d6b332ccede94567128.png

openVPN网关服务器运行状态正常。

5857ef8dfbbbf62d4616a5771be27402.png

连接客户端

我们已经介绍过了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目录下。

3e3b50e277492346c09742c7e840021b.png

接下来还是在存放证书的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

db466e0229008157a3309b97b56a0f4e.png

然后我们右击任务栏的图标,选择“Import→From local file”导入刚才生成的配置文件tietouge.ovpn。

55bf4d3992ddfc368843f8d90e67d26b.png

导入成功之后,可以看到多了一个VPN服务器opvpn.h3cadmin.cn,然后点击“Connect”连接VPN。

c34da4c0ada82384ccd8c98d7e2cc1a5.png

连接成功之后,任务栏中的OpenVPN图标会变成绿色,同时会有一个连接成功的提示。鼠标悬浮在图标上,可以查看概览信息。

93365ca8f7d9e6eb0975b69ea95676f9.png

查看网络适配器信息,可以看到新安装的TAP网卡连接成功,并且获得了一个OpenVPN服务器分配的IP地址10.153.214.2。与Windows7系统不同的是,Windows10中显示的网卡速率为1.0 Gbps。

0c0460d6c6b80b53ddf1e6f9fa5d6c12.png

查看系统路由表。

ec21e85652cc8cbcfd1cd2a6092ed3e4.png

可以看到系统中多了两条路由0.0.0.0/1和120.0.0.0/1,效果等同于默认路由,但是这样下发配置能以最长匹配的方式直接覆盖掉默认路由,避免再因为路由优先级的原因出现不生效或冲突等情况。

最后测试一下访问云资源池内的服务器资源。

7e2e42eaba721ac0b920f2da1dc7f983.png

访问成功,一跳直达,入云访问测试成功!

a0e3971dc814c34b399d40556e334124.gif

长按二维码
关注我们吧

479311edbae8ad2208cabffa601ad9b4.jpeg

169bbf18c6d4980dd9da5067b88e93cd.png

openVPN连接操作指南

openVPN的Linux客户端竟然比Windows客户端性能高5倍不止

使用Easy-RSA配置生成SSL证书

VPP配置指南:NAT“三板斧”

MPLS TE隧道带宽的决定因素有哪些?

超线程和VT-d开启与否对性能的影响大不大?

不是KVM不支持精简置备的磁盘,而是VMM

HVV知识点:防守队如何建立实战化的安全体系

IPsec VPN文章及知识点汇总【墙裂建议收藏】

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐