Myluzh Blog

Strive to become a dream architect.

RouterOS配置OpenVPN Server与客户端流量分流

发布时间: 2023-1-31 文章作者: myluzh 分类名称: OpenVPN


设备:rb750gr3 ROS版本:v6.49.7

一、创建证书
1.创建CA证书
进入System->Certificates->Certificates页面,创建证书。
在General页面填写Name与CommonName为"ovpnCA"。切换到Key Usage选项卡,勾选"key cert. sign","crl sign"。
完成后点击 Apply 后点击 Sign 进行签名。其中,Certificate 选择刚刚创建的 CA 证书,CA CRL Host 填写路由器的地址,最后点击 Start,开始签名。签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

2.创建服务器证书
与创建 CA 证书方式一样,填写 General页面下的Name与CommonName为"ovpnServer"。切换到 Key Usage 页面,勾选"digital signature","key encipherment","tls server"。
点击 Apply 后点击 Sign 进行签名。在Sign页面CA选项中需要选择刚刚创建的CA证书进行签名。签名完成后,重新回到 General 页面,检查是否勾选了 Trusted 标记。

3.创建客户端证书
同上,新建,填写 General页面下的Name与CommonName为"ovpnClient"。切换到 Key Usage 页面,勾选"tls client"。
点击 Apply 后点击 Sign 进行签名。在Sign页面CA选项中需要选择刚刚创建的CA证书进行签名。签名完成后,重新回到 General 页面,注意:这边不需要勾选 Trusted 标记。

创建完成后应该有三个证书,分别为ovpnCA,ovpnServer,ovpnClient。

二、导出证书
进入System->Certificates->Certificates页面
双击ovpnCA证书,点击右边Export按钮,点击Export导出。
双击ovpnClient证书,点击右边Export按钮,在页面中需要在Export Passphrase处输入一个密码,后期客户端连接会用到。
打开Files应该可以看到三个文件,分别为"ca.crt","client.crt","client.key"。注意:如果Files里面没有的话需要在导出证书那一步的时候填写Files Name。直接选中三个文件,拖动到电脑桌面即可。

三、配置IP池
进入IP->IP Pool->Pools页面,创建 IP 池。
Name为"pool-ovpn",Address为"172.16.220.101-172.16.220.199"

四、创建 Profile
进入PPP->Profiles页面,创建一个 PPP Profile。
Name为"profile-ovpn",Local Address 这里我配置为"172.16.220.1"注意:这边的IP需要与刚刚创建"pool-vpn"池里面的IP在同一个网段,Remote Address 配置为刚刚创建的 IP 池"pool-ovpn"。DNS Server 填写ISP的地址。

五、创建用户
进入入PPP->Secrets页面,创建用户。Name 就是用户名,Password 就是密码。Profile选择为刚刚创建的"profile-ovpn"

六、开启OpenVPN服务
进入PPP->Interface->OVPN Server界面,勾选"Enable"开启服务。Default Profile为刚刚创建的"profile-ovpn",Certificate选择刚刚创建的Server端证书"ovpnServer"。下面的Auth与Cipher按需勾选,这个需要跟openvpn客户端配置文件里的加密方式一样,要不然会连不上。注意:如果你的地址池不是24位掩码,你需要在这边把Netmask改成跟IP Pool中对应的掩码。比如你IP Pool里面使用的地址池为"172.16.220.10-172.16.221.199",这边Netmask就需要设置为"23"。

七、开启防火墙
一般来说防火墙表项不为空,需要在防火墙上对该服务的端口放通。
进入IP->Firewall->Filter Rules页面,添加一个防火墙规则。
Chain 选择 Input,Protocol 选择 TCP,Dst.Port 填写 OpenVPN 的端口。
Action 配置为 accept,进行放通。
需要注意的是,因为规则存在优先级顺序,所以这个规则应该在“拒绝一切非 LAN 口的访问”之前。

八、 客户端测试连接
客户端安装OpenVPN Client软件,创建配置文件保存为connect.ovpn,双击导入配置输入账号密码连接即可,注意:连接需要私钥密码,注意:这里的私钥密码就是刚刚导出ovpnClient证书时候Export Passphrase里面填写的密码。也可以通过openssl去除私钥密码保护,命令如下:
[root@CentOS7]# openssl rsa -in ovpnClient.key -out nopass_opvnClient.key
Enter pass phrase for ovpnClient.key:
writing RSA key
[root@TencentCloud-Web-HK1-CentOS7 ssl]# ls
nopass_opvnClient.key  ovpnClient.crt  ovpnClient.key
客户端coonnect.ovpn配置文件
内容如下:
remote那边需要修改自己服务端的ip与端口,route那边是需要走ovpn的路由。
client
dev tun
proto tcp
remote 122.237.140.39 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
tls-client
remote-cert-tls server
cipher AES-128-CBC
auth SHA1
auth-user-pass
auth-nocache
route-nopull
route 172.16.0.0 255.255.0.0

<ca> 这里粘贴CA证书文件内容 </ca>
<cert> 这里粘贴客户端证书文件内容 </cert>
<key> 粘贴Key文件内容 </key>

九、流量分流关于上方客户端配置文件中的route路由完全了解
需要由三个参数进行定义:
1、route-nopull
如果在客户端配置文件中配route-nopull,openvpn连接后将不会在电脑上添加任何路由,所有流量都将本地转发。
2、vpn_gateway
如果在客户端配置文件中配vpn_getaway,默认访问网络不走vpn隧道,如果可以通过添加该参数,下发路由,访问目的网络匹配到会自动进入VPN隧道。
route 10.0.0.0 255.255.255.0  vpn_gateway
route 172.16.0.0 255.255.255.0  vpn_gateway
3、net_gateway
这个参数和 vpn_gateway 相反,表示在默认出去的访问全部走 openvpn 时,强行指定部分IP地址段访问不通过 Openvpn 出去。
max-routes 参数表示可以添加路由的条数,默认只允许添加100条路由,如果少于100条路由可不加这个参数。
max-routes 1000
route 10.100.0.0 255.255.255.0 net_gateway


标签: routeros openvpn

发表评论