在本次的方案中,我通过PVE虚拟化安装了RouterOS(ROS)与OpenWRT双软路由,其中ROS将作为主路由负责拨号上网等路由器基本功能以及DNS缓存、UPnP等常见ROS拓展功能。OpenWRT将作为旁路由实现远程唤醒、负载均衡、ddns等功能。
- OpenWRT(旁路由):192.168.1.202
- Router OS(主路由):192.168.1.203
一、ROS(主路由)配置
首先使用winbox连接ROS管理界面。
(1)第一步,设置网口和地址
进入管理界面后,在interface
菜单下查看ROS网卡,通过上下行数据特征区分lan口和wan口(Tx和Rx有数据的是lan口),并标识网卡名称。
接着在ip
菜单下进入addresses
选项指定lan口ip地址,这里将lan口ip地址指定为192.168.1.203
,并计算后填入正确网段。
这里值得注意的是,对于多网口设备,还需要使用网桥功能拓展lan口,由于演示设备并无多余网口,因此这里仅作文字说明:
- 搭建网桥:
bridge
——bridge
——add new
——apply
——ok
- 为网桥依次添加网口:
bridge
——Ports
——add new
——依次在interface
选项下添加网口——apply
——ok
(2)第二步,创建PPPOE拨号
在interface
中新增PPPOE Client
,在General
选项卡下指定wan
口拨号
在Dial Out
选项卡下指定拨号用户和密码。其中如勾选Use peer DNS
,将自动获取运营商DNS,一般我们选择手动填写,因此这里暂时不予勾选。
当PPPOE接口前出现R(unning)字样,代表成功拨号,网络已联通。
(3)第三步,防火墙的NAT设置
在ip
菜单下进入firewall
选项,在NAT
标签页下新建规则,修改action
标签页下开启伪装(masquerade)

(4)第四步,创建DHCP服务
在ip
菜单下为lan口新建DHCP server
指定DHCP地址段范围以及DHCP网关,此时我们暂时按照单路由配置方式指定Ros网关为自己的IP,在后续的双软路由配置中另行更改。
指定DHCP分配范围,值得注意的是,如果是手动创建DHCP,这一步我们需要通过ip
菜单下的pool
中创建地址池,并在DHCP server
中的DHCP选项卡下add new
,与地址池绑定。
配置一个有效的DNS服务器:
(5)第五步,开启ROS的DNS缓存
在完成上述网络配置后,为发挥ROS功能,可以开启DNS缓存以提升上网体验。在开启ROS的DNS缓存后,客户端的DNS地址为ROS的IP地址,当客户端发送DNS请求至ROS后,ROS在其缓存查找记录,有记录直接返回客户端,无记录将通过DNS服务器地址向上查询,得到结果后再发送客户端并将结果缓存,下次直接从缓存调取。
1.将ROS设置为局域网的DNS服务器
在ip
菜单下进入DHCP server
,编辑networks
标签下DHCP的网络设置,该配置即下发到客户端上的所有网络配置。为使用DNS缓存,我们需要将ROS的DNS服务器指定为ROS自身的IP地址。
2.允许ROS远程响应DNS请求
在完成上述配置后,ROS虽然是局域网的DNS服务器,但是其本身不带域名解析的功能,因此需要在ip
菜单下选择DNS
,为ROS配置有效DNS,并允许其远程响应请求。
(6)第六步,开启UPnP
为提升下载速度,我们通常还将开启ROS的UPnP功能。对于一般的使用者来讲,简单的把UPnP理解为自动端口映射就可以了。它就是一种基于TCP/IP协议的,针对设备彼此间的通讯而制订的新的Internet协议,目的在于将所有联入Internet中的设备实现不受网关阻碍的相互通信。在路由器下面,开通UPnP一般认为能够提升网速。
具体而言,在ip
菜单下进入UPnP
,勾选全部选项后,前往接口配置规则。
为lan口选择内部类型,为wan口选择外部类型。
此时UPnP将正常工作。
二、OpenWRT(旁路由)及双软路由配置
在这一架构中,上网设备的上网请求首先将到达ROS主路由,再通过虚拟机内部的交换机到达旁路由,待旁路由处理完数据后,送回主路由,后数据进入外网。
(1)第一步,修改旁路由配置
修改lan口配置
协议:静态地址
IPV4 地址:192.168.1.202(即旁路由ip地址)
子网掩码: 255.255.255.0
网关:填为上级路由 IP,这里我们指向ROS主路由,即192.168.1.203
广播:把上级路由网段 IP 最后一段改为 255,或0
DNS 地址:填写正确的可以解析的ip地址
关闭旁路由的 DHCP 功能 :打钩忽略此接口
关闭旁路由防火墙
(2)第二步,修改主路由配置
1.修改ROS主路由DHCP网关
在ip
菜单下进入DHCP server
,编辑networks
标签下DHCP的网络设置,将ROS主路由DHCP网关修改为旁路由OpenWRT的地址。
2.修改ROS主路由DNS服务器
在ip
菜单下选择DNS
,将ROS远程请求的DNS地址修改为旁路由OpenWRT的IP地址。
此时,双软路由就真正连通了。
读到这里,相信一部分粉丝已经对网络环境中DNS的走向蒙圈了,这里稍作梳理。
首先由于ROS被设置为了局域网的DNS服务器,因此客户端的DNS地址为ROS的IP地址。
当客户端发送DNS请求至ROS后,ROS在其缓存查找记录,有记录直接返回客户端,无记录将通过DNS服务器地址向上查询,此时的DNS服务器为OpenWRT旁路由的IP地址。
由于在OpenWRT旁路由的Lan口设置中,填写了真实有效的DNS地址,因此网络得以连通。
当然,当开启OpenWRT旁路由某些服务时,DNS有可能被再次接管。
三、 OpenWRT旁路由常见应用
这里主要介绍etherwake唤醒、拓展ddns解析商两个功能。
(1)远程唤醒
OpenWrt可以安装wol或etherwake实现网络唤醒功能(前提是你的主机需要支持网络唤醒)
opkg update
opkg install wol
opkg install etherwake
#唤醒方法
etherwake -b F0:76:1C:E1:EA:D8
(2)ddns解析
旁路由设置ddns,解决主路由器ddns服务商少的问题。
以上图家庭拓扑为例,当前动态公网ip的ddns服务部署在NAS上,如果NAS意外断电,解析域名将无法解析获得ip地址从而导致远程访问的中断,而Mesh路由器上ddns服务商常常不支持自定义域名的接入,因此在上述组网方案基础上,可以借助软路由长期在线的优势,拓展ddns解析商,弥补NAS意外断电后ddns解析失败的问题。
由于旁路由没有wan口获取IP,因此这里通过api请求形式获取公网ip地址:http://ip.3322.net/
至此,本文也就进入尾声了。希望本文能够起到抛砖引玉之效,也欢迎大家的批评交流。
如果您有任何疑问或者好的建议,期待你的留言、评论与关注!