我们在日常网络中有的时候会碰到有2-3条运营商线路,但是都是独立使用,这样使用的效果就是不够快,只能独享一条线路的带宽,如果我们能3条线路叠加到一起,如20M带宽可以重复拨号3次,那就是说可以获得20M×3=60M的带宽。在这里说下RouterOS如何实现多线路叠加带宽。
我们在RouterOS实现PPPoE带宽叠涉及到的主要功能包括VRRP、PCC标记和策略路由。接下来我们细说这里我使用的是RB962的路由器,使用ether1接口做PPPoE拨号,并取名为ether1-wan,Wlan1无线覆盖上网。
环境:
1条10兆的PPPoE拨号宽带三拨
一个安装有RouterOS的路由器,并且是多接口
一、VRRP配置
首先进入interface的VRRP下创建3个VRRP接口,注意每个VRRP需要设置不同的VRID,否则无法添加(当然你也可以不用建立3个VRRP接口,因为ether1-wan的MAC地址也是不同等,可以只建立2个VRRP接口,但这里为了不让大家绕弯就直接建立3个VRRP接口)
下面是添加第一个VRRP接口,设置interface为ether1-wan,VRID为1
剩下的VRRP接口也是相同的,只是VRID不一样,vrrp2和vrrp3的配置如下:
添加完成后,3个VRRP接口都是红色的无法生效,因为没有为对应的接口配置上IP地址
我们可以看看3个vrrp接口的MAC地址,vrrp1的MAC地址,vrrp2和vrrp3的MAC地址分别是00:00:5E:00:01:02,00:00:5E:00:01:03
二、配置VRRP接口IP地址
现在要让3个vrrp接口生效,需要给ether1-wan、vrrp1、vrrp2和vrrp3设置IP地址,进入ip address添加地址,这里我们可以随便设置ip地址32位子网也可以,只要让vrrp接口启用生效。
先添加ether1-wan,因为VRRP接口都是基于ether1-wan上,这个接口必须要有ip地址,我们随便设置一个10.0.0.1/32的地址,只要有地址即可
在address里为vrrp1、vrrp2和vrrp3添加上ip地址10.0.0.1、10.0.0.2和10.0.0.3,如下图
现在我们看看interface vrrp中的情况,全部生效
完成后我们可以建立PPPoE拨号了,进入PPP点加号,选择PPPoE-client,添加到默认名称为pppoe-out1,进入Dial out配置帐号和密码,这里我假设帐号和密码都是yus,其他参数可以默认配置,注意Use Peer DNS和Add Default Route取消,因为后面我们会手动添加路由
同样的配置,将vrrp2和vrrp3在PPP中添加,分别是pppoe-client2和pppoe-client3,帐号密码都相同,如下图,添加完成后,拨号成功默认会在pppo-out前面出现R,代表拨号成功
在ip address中可以看到3个pppoe-out拨号获取的ip地址
三、添加PCC规则
拨号成功后,我们接下来要做的是配置PCC规则,这个是带宽叠加的关键,PCC是Per Connection Classifier,即每次连接分类,对进入的数据流进行分类,配置较为复杂涉及到连接分类和路由策略标记,大家可以按照这个流程来。
首先我们要进入ip firewall mangle中配置PPC规则和路由标记,有几个参数我们需要说明,src-address是内网电脑的IP地址段,这里我家里是192.168.88.0/24,PCC定义可以认为是将数据分为几份,每条规则取其中的第几份做处理。我们是有3条线路,就需要分3份。
如per-connection-classifier=both-addresses:3/0,代表分3份,取第一份,因为PCC计数是从0开始,那后面两条就是:
per-connection-classifier=both-addresses:3/1
per-connection-classifier=both-addresses:3/2
那我们按照这个规则来详细介绍:
在mangle下点加号,新建第一条规则,在General下选择Chain为prerouting(路由前),src-address=192.168.88.0/24
在Advanced里配置Per Connection Classifier参数
在Extra中配置Dst-address-type的address-type为local,点Invert(代表排除路由器本地IP地址),在Action中配置action=mark-connection标记连接,new-connection-mark取名pcc1
这样第一条PCC规则配置完了,下面是要配置与PCC相对应的路由规则,前面是将数据连接通过PCC分类,分类后分配给后面的路由规则标记,然后路由分发到对应的接口做负载均衡,下面新建一条mangle规则,标记路由策略,Chain=prerouting,src-address=192.168.88.0/24,connection-mark=pcc1,取前一条PCC规则标记。在Action中选择action=mark-routing,new-routing-mark取名route1。
后面也是相同的配置,继续添加相同的两组规则。后面规则就不在过多介绍,这里有脚本,打开winbox的new terminal后,在命令行复制粘贴以下脚本:
/ip firewall mangle add action=mark-connection chain=prerouting comment=pcc1 dst-address-type=!local \ new-connection-mark=pcc1 per-connection-classifier=both-addresses:3/0 src-address=\ 192.168.88.0/24 add action=mark-routing chain=prerouting connection-mark=pcc1 new-routing-mark=route1 \src-address=192.168.88.0/24 add action=mark-connection chain=prerouting comment=pcc2 dst-address-type=!local \ new-connection-mark=pcc2 per-connection-classifier=both-addresses:3/1 src-address=\ 192.168.88.0/24 add action=mark-routing chain=prerouting connection-mark=pcc2 new-routing-mark=route2 \src-address=192.168.88.0/24 add action=mark-connection chain=prerouting comment=pcc2 dst-address-type=!local \ new-connection-mark=pcc3 per-connection-classifier=both-addresses:3/2 src-address=\ 192.168.88.0/24 add action=mark-routing chain=prerouting connection-mark=pcc3 new-routing-mark=route3 \src-address=192.168.88.0/24
加入每个PPPoE拨号接口的返程路由标记,以下是脚本:
/ip firewall mangle add action=mark-connection chain=input in-interface=pppoe-out1 new-connection-mark=pcc1 add action=mark-connection chain=input in-interface=pppoe-out2 new-connection-mark=pcc2 add action=mark-connection chain=input in-interface=pppoe-out3 new-connection-mark=pcc3 add action=mark-routing chain=output connection-mark=pcc1 new-routing-mark=route1 add action=mark-routing chain=output connection-mark=pcc2 new-routing-mark=route2 add action=mark-routing chain=output connection-mark=pcc3 new-routing-mark=route3
四、路由配置
下面是将标记的路由添加到路由表中,winbox进入ip route添加规则,如下图。进入路由表,添加gateway=pppoe-out1,routing-mark=route1,后面2条route2和route3分别对应到pppoe-out2和pppoe-out3(测试时使用了open***组网,发现ROS本身无法拨到open***服务端,检查为无法联网,后来发现为本身没有路由所以导致的,这里添加一条dst.Address=0.0.0.0/0,gateway=pppoe-out3,routing mark=main即可),配置完成后如下:
最后记得配置好nat规则,进入ip firewall nat中添加一个snat用于隐藏内网ip访问公网,代码如下:
/ip firewall nat add action=masquerade chain=srcnat #(这样写会容易造成各种问题)
推荐:
/ip firewall nat add chain=srcnat connection-mark=pcc1 action=masquerade add chain=srcnat connection-mark=pcc2 action=masquerade add chain=srcnat connection-mark=pcc3 action=masquerade
这样PCC带宽叠加就配置完成,大家可以测试了是否带宽达到了原来的3倍。