校园网&openwrt记(十二)多线多播与mwan3

  搞多线多拨的时候,手上刚好有一个8M和一个22M的移动宽带,8M的准备不用了,但是浪费可是很罪恶的,于是想到多线多播,并使用mwan3来负载均衡。其实mwan3就是是用iptables和iproute2协同作用达到负载均衡的。iptables主要是打mark,而iproute2则是根据mark走不同的路由表。源码是由shell写的,清晰简单。这里主要记录一下配置过程。
  一、首先修改交换机配置,将4个lan口中的一个划为一个新的wan口:
  刚开始如下图(我的路由器只有一个网卡~端口4是wan口,对应物理设备是eth0.2,0-3是lan口,对应物理设备是eth0.1,eth0.1和eth0.2是通过vlan将实际物理接口eth0划分出来的):
  这里写图片描述
  修改完后如下图,这时端口3变成了一个新的wan口,对应物理设备为eth0.3,即通过vlan将eth0分为了eth0.1,eth0.2,eth0.3:
  这里写图片描述
  在网络接口处添加新的wan接口,命名为wan2,再添加一个pppoe2,这时就有wan、wan2、pppoe、pppoe2,四个属于防火墙wan域的接口了。
  
  二、让wan和wan2的协议为dhcp,pppoe和pppoe2的协议为pppoe并填写好相应的宽带账号和密码。
  
  三、设置以上4个网络接口的网关跃点(不设置的话,mwan3无法工作)优先级高的跃点设置小一点,比如pppoe所拨号的宽带是22M,那么它可以设置为10,则pppoe2设置为20,而wan和wan2只是用来访问校内资源的,可以简单设置为30、40。
  
  四、配置uci config第一步,配置interface,这里只列出wan和pppoe的,其他两个同理。假设校园网某台服务器为192.168.66.123,那么能ping通它则说明我们的wan是正常连接的;我们的pppoe则ping多个常用DNS,要是ping通则说明是可以正常连接网络的。track_ip 列表是一次测试所需要测试的ip列表,reliability是指track_ip列表中几个能ping通就说明正常,count 是对每一个ip ping几次,timeout 是超时,interval 是每一次测试的间隔,down 是有多少次测试不正常则说明掉线,up 是有多少次测试正常则说明在线。

config interface 'pppoe'
    option enabled '1'
    list track_ip '8.8.4.4'
    list track_ip '8.8.8.8'
    list track_ip '4.2.2.1'
    list track_ip '223.5.5.5'
    option reliability '2'
    option count '1'
    option timeout '2'
    option interval '5'
    option down '3'
    option up '8'

config interface 'wan'
    option enabled '1'
    option reliability '1'
    option count '1'
    option timeout '2'
    option interval '5'
    option down '3'
    option up '3'
    list track_ip '192.168.66.123'

  五、配置uci config第二步,配置member,设置它的权重和跃点,决定该wan的优先权。这里的跃点指的是在同一个policy下的优先值,值越小,优先值越大,而跃点相同的几个member将会根据它们的权重来分配比例,数值越大,比例越大。比如我这里的22M的pppoe和8M的pppoe2可以如此设置:

config member 'pppoe_m1_w3'
    option interface 'pppoe'
    option metric '1'
    option weight '3'

config member 'pppoe2_m1_w1'
    option interface 'pppoe2'
    option metric '1'
    option weight '1'

config member 'wan_m2_w1'
    option interface 'wan'
    option metric '2'
    option weight '1'

config member 'wan2_m2_w1'
    option interface 'wan2'
    option metric '2'
    option weight '1'

  member的名字可以由interface名称、跃点和权重来命名,pppoe和pppoe2的跃点为一组,pppoe的权重是pppoe2的3倍,因为pppoe的带宽大概为pppoe2的3倍,wan和wan2为一组,它们只是为了访问校园内站点,只用一个member就好了,权重不需要考虑。
  六、配置uci config第三步,配置policy,这里开始利用各个member,制定policy。policy决定了要使用那些网络接口,并且按怎样的比例使用它们。如:

config policy 'wan_only'
    list use_member 'wan_m2_w1'
    option last_resort 'unreachable'

config policy 'pppoe_only'
    list use_member 'pppoe_m1_w3'
    option last_resort 'unreachable'

config policy 'balanced'
    list use_member 'pppoe_m1_w3'
    list use_member 'pppoe2_m1_w1'
    option last_resort 'unreachable'

  wan_only只使用了一个member,这个member是关联网络接口’wan’的,因为访问校内站点而已,从其中一个校园网线走就可以了;pppoe_only只使用了关联网络接口’pppoe’的一个member,这个policy用来以后8M宽带过期后只有一个宽带(22M)的情况;而balanced则使用了两个member,它们关联’pppoe’和’pppoe2’,使用了它们的意思就是融合这两个宽带,进行负载均衡的意思了。这个policy就是当前所需要使用的。
  七、配置uci config第四步,配置rule,这个则是确定怎样的数据包应该使用怎样的policy,最终的负载均衡或策略路由就是靠它们的了。例如:

config rule 'VPN_rule'
    option dest_ip '192.168.67.0/24'
    option proto 'all'
    option use_policy 'wan_only'

config rule 'CN_rule'
    option dest_ip '192.168.66.0/20'
    option proto 'all'
    option use_policy 'wan_only'

config rule 'default_rule'
    option dest_ip '0.0.0.0/0'
    option proto 'all'
    option use_policy 'balanced'

  VPN_rule等效于我们前边所说的在PPTP VPN设置时添加的静态路由,通往实验室的电脑的数据包走校园网(wan_only);CN_rule则等效于我们要访问校内站点所要添加的静态路由,通往校内站点的数据包走校园网(wan_only);default_rule则是默认的规则,即其他的所有数据包都走pppoe和pppoe2(balanced,成功负载均衡则融合了两个宽带)。

  设置完毕以后,启动mwan3,发送我们的获取权限的udp包给服务器,然后成功拨号后,多线多拨就成功了,下载东西理论上可以达到22+8=30M。

你可能感兴趣的:(openwrt)