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

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

环境介绍

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

调测过程

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

配置证书

一共需要创建三个证书文件。CA 证书,服务器端证书,客户端证书。
进入System->Certificates->Certificates页面,创建证书。
创建证书
首先创建 CA 证书,按顺序填写 General 页面内容,然后切换到 Key Usage 页面,按如下勾选。
CA 证书-Key Usage
点击 Apply 后点击 Sign 进行签名。
CA 证书-Sign
其中,Certificate 选择刚刚创建的 CA 证书,CA CRL Host 填写路由器的地址,最后点击 Start,开始签名。
签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

继续创建服务器证书,和创建 CA 证书一样,填写 General 页面内容,切换到 Key Usage 页面,按如下勾选。
服务器端证书-Key Usage
点击 Apply 后点击 Sign 进行签名。这里使用 CA 证书进行签名。
服务器端证书-Sign
签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

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

创建完成后,应该有三个证书。
证书列表
需要导出 CA 证书和客户端证书,备用。需要为客户端证书配置一个密码。
配置导出密码
最终导出 CA.crt,Client.crt,Client.key 三个文件。

配置 IP 池

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

创建 Profile

进入PPP->Profiles页面,创建一个 PPP Profile。
openvpn-ppp profile
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 服务配置
Enable 服务,配置 Port 端口,不推荐使用默认的端口。
Default Profile 选择刚刚创建的 Profile 文件。
Certificate 选择刚刚创建的服务器端证书。
Auth 和 Cipher 如图选择。

放通防火墙

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

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

测试连接

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

制作连接文件

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 服务,复杂点在于创建证书和配置防火墙,切勿照搬,仅供参考!