基于 RouterOS 的 OpenVPN 调测小记
自新冠病毒疫情以来,人们的生活和工作都受到了改变。许多企业开始选择远程办公来实现日常业务的流转,对于一些企业内部的信息系统,不便于使之暴露于公网之上,不少企业开始选择使用 VPN 技术,为员工提供在家访问企业内网的能力。
这几天给某司调了一台 RouterOS 的路由器,配置了 OpenVPN 功能,使公司员工可以访问单位内网,使用内网的业务系统,记录一下调测的经过,把里面一些坑理一理。
环境介绍
公司目前使用的是 RouterBOARD 750G r3 作为核心路由器,接入电信网络。
调测过程
整个主要包括以下几步,配置证书,配置 IP 池,创建 Profile,创建用户,开启服务,放通防火墙。此过程需要使用 WinBox 连接 ROS 路由器。
配置证书
一共需要创建三个证书文件。CA 证书,服务器端证书,客户端证书。
进入System->Certificates->Certificates
页面,创建证书。
首先创建 CA 证书,按顺序填写 General 页面内容,然后切换到 Key Usage 页面,按如下勾选。
点击 Apply 后点击 Sign 进行签名。
其中,Certificate 选择刚刚创建的 CA 证书,CA CRL Host 填写路由器的地址,最后点击 Start,开始签名。
签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。
继续创建服务器证书,和创建 CA 证书一样,填写 General 页面内容,切换到 Key Usage 页面,按如下勾选。
点击 Apply 后点击 Sign 进行签名。这里使用 CA 证书进行签名。
签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。
创建客户端证书,基本操作和之前一样,只是 Key Usage 只需要选择 tls client。点击 Apply 后点击 Sign 开始签名。依然使用 CA 证书进行签名。
创建完成后,应该有三个证书。
需要导出 CA 证书和客户端证书,备用。需要为客户端证书配置一个密码。
最终导出 CA.crt,Client.crt,Client.key 三个文件。
配置 IP 池
创建一个用于分配给远程访问用户的 IP 池。
进入IP->IP Pool->Pools
页面,创建 IP 池。
这里我分配了 10 个 IP。
创建 Profile
进入PPP->Profiles
页面,创建一个 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
页面,开启服务。
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 | client |
测试连接
可使用客户端软件进行连接,连接正常且可访问内网应用为测试的标准。
调测总结
虽然可以向导式配置 OpenVPN 服务,复杂点在于创建证书和配置防火墙,切勿照搬,仅供参考!