弹霄博科

小谈谈一亩三分地



基于 RouterOS 的 OpenVPN 调测小记


发布日期: 2021/02/13
更新日期: 2021/02/13
作者: 小谈谈
分类: RouterOS
标签: ros, openvpn
阅读时间: 5 分钟
字数: 1185 字


自新冠病毒疫情以来,人们的生活和工作都受到了改变。许多企业开始选择远程办公来实现日常业务的流转,对于一些企业内部的信息系统,不便于使之暴露于公网之上,不少企业开始选择使用 VPN 技术,为员工提供在家访问企业内网的能力。

这几天给某司调了一台 RouterOS 的路由器,配置了 OpenVPN 功能,使公司员工可以访问单位内网,使用内网的业务系统,记录一下调测的经过,把里面一些坑理一理。

环境介绍

公司目前使用的是 RouterBOARD 750G r3 作为核心路由器,接入电信网络。

调测过程

整个主要包括以下几步,配置证书,配置 IP 池,创建 Profile,创建用户,开启服务,放通防火墙。此过程需要使用 WinBox 连接 ROS 路由器。

配置证书

一共需要创建三个证书文件。CA 证书,服务器端证书,客户端证书。 进入System->Certificates->Certificates页面,创建证书。

[图片: 创建证书]
https://static.txisfine.cn/upload/20210212220532.png/pkwatermark

首先创建 CA 证书,按顺序填写 General 页面内容,然后切换到 Key Usage 页面,按如下勾选。

[图片: CA 证书-Key Usage]
https://static.txisfine.cn/upload/20210212220816.png/pkwatermark

点击 Apply 后点击 Sign 进行签名。

[图片: CA 证书-Sign]
https://static.txisfine.cn/upload/20210212221030.png/pkwatermark

其中,Certificate 选择刚刚创建的 CA 证书,CA CRL Host 填写路由器的地址,最后点击 Start,开始签名。 签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

继续创建服务器证书,和创建 CA 证书一样,填写 General 页面内容,切换到 Key Usage 页面,按如下勾选。

[图片: 服务器端证书-Key Usage]
https://static.txisfine.cn/upload/20210212221725.png/pkwatermark

点击 Apply 后点击 Sign 进行签名。这里使用 CA 证书进行签名。

[图片: 服务器端证书-Sign]
https://static.txisfine.cn/upload/20210212221929.png/pkwatermark

签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

创建客户端证书,基本操作和之前一样,只是 Key Usage 只需要选择 tls client。点击 Apply 后点击 Sign 开始签名。依然使用 CA 证书进行签名。

创建完成后,应该有三个证书。

[图片: 证书列表]
https://static.txisfine.cn/upload/20210212223017.png/pkwatermark

需要导出 CA 证书和客户端证书,备用。需要为客户端证书配置一个密码。

[图片: 配置导出密码]
https://static.txisfine.cn/upload/20210212223639.png/pkwatermark

最终导出 CA.crt,Client.crt,Client.key 三个文件。

配置 IP 池

创建一个用于分配给远程访问用户的 IP 池。 进入IP->IP Pool->Pools页面,创建 IP 池。

[图片: 创建 IP 池]
https://static.txisfine.cn/upload/20210212220350.png/pkwatermark

这里我分配了 10 个 IP。

创建 Profile

进入PPP->Profiles页面,创建一个 PPP Profile。

[图片: openvpn-ppp profile]
https://static.txisfine.cn/upload/20210212224553.png/pkwatermark

Local Address 这里我配置为 10.0.0.1,Remote Address 配置为刚刚创建的 IP 池。 DNS Server 填写路由器的地址。点击 OK 保存。

创建用户

进入PPP->Secrets页面,创建用户。Name 就是用户名,Password 就是密码。Service 选择 ovpn,表示这个用户仅用于 OpenVPN 服务,Profile 选择刚刚创建的 Profile 文件。 如果需要创建大量用户,只需要创建好一个,其他的用户使用 Copy 快速创建。

开启服务

进入PPP->Interface页面,开启服务。

[图片: OpenVPN 服务配置]
https://static.txisfine.cn/upload/20210212231040.png/pkwatermark

Enable 服务,配置 Port 端口,不推荐使用默认的端口。 Default Profile 选择刚刚创建的 Profile 文件。 Certificate 选择刚刚创建的服务器端证书。 Auth 和 Cipher 如图选择。

放通防火墙

关键的一步,一般来说防火墙表项不为空,需要在防火墙上对该服务的端口放通。 进入IP->Firewall->Filter Rules页面,添加一个防火墙规则。 Chain 选择 Input,Protocol 选择 TCP,Dst.Port 填写 OpenVPN 的端口。 Action 配置为 accept,进行放通。

需要注意的是,因为规则存在优先级顺序,所以这个规则应该在“拒绝一切非 LAN 口的访问”之前。

[图片: 防火墙表项]
https://static.txisfine.cn/upload/20210212231854.png/pkwatermark

测试连接

服务配置完成,可以使用端口扫描工具测试一下,是否对 OpenVPN 的端口处于一个开放状态。

制作连接文件

将以下内容保存为.ovpn 后缀的文件。并修改对应配置项。

```
client
dev tun
proto tcp
remote 域名 端口
nobind
persist-key
persist-tun
tls-client
remote-cert-tls server
verb 4
mute 10
cipher AES-256-CBC
auth SHA1
auth-user-pass
auth-nocache
redirect-gateway
<ca>
这里粘贴CA证书文件
</ca>

<cert>
这里粘贴客户端证书文件
</cert>

<key>
粘贴Key文件
</key>
```

测试连接

可使用客户端软件进行连接,连接正常且可访问内网应用为测试的标准。

调测总结

虽然可以向导式配置 OpenVPN 服务,复杂点在于创建证书和配置防火墙,切勿照搬,仅供参考!