打造内大最强路由器(三):多线多拨实现带宽叠加

什么是多拨

多拨最开始出现在家庭网络的拨号上网中。

比如说,家里已经有了一条电信宽带,而移动充话费时又送了一条宽带。为了充分地利用起这两条宽带,我们把它们接在同一个路由器上,同时并发拨号,并对流量进行负载均衡,实现这两条宽带的带宽叠加,这个操作就叫做双线双拨

而某些地区的运营商存在Bug,能够对一条宽带进行多次拨号,并且实现带宽叠加,这个就叫做单线多拨

单线多拨的探索与结果

根据N年前内大网络中心发布的一篇公告中有提到:

网络中心不推荐使用路由器上网,我们推荐使用带有ap功能的wifi设备。因为路由器只能获取一个IP地址,多人使用的时候会造成本地的网络拥堵,网速变慢。 ap模式会使每一台连接wifi的设备获取一个独立的IP,各设备之间网速相互不影响。

显而易见,内大校园网里存在限速,而且是根据IP地址限速的。每个校园网账号登陆后只能获取1个IP地址,所以也可以理解为对账号限速。

而在目前的测速来看,校园网对于每个账号的限速应该在100Mbps,所以我们只要尝试在同一个路由器上登录多个账号,也许就能实现带宽叠加了。

然而实际上,内大在装修时安装的埋墙线均为百兆,物理限制不可突破,单线多拨不会有网速提升。所以我们把目光还是转向多线多拨吧。

准备工作

  • 需要向室友献出py拿到多个校园网账号,并按照本系列上一篇博文里的教程,拿到这几个账号的关键参数,写成curl命令保存备用。
  • 多根网线以及一个能插网线的电脑。
  • Openwrt固件的路由器,并安装好多拨插件luci-app-syncdial及负载均衡luci-app-mwan3

改LAN口为WAN口

新路由3只有一个WAN口,LAN口却有五个,要接入多条宽带的话必须要把部分LAN口改成WAN口。

网络->交换机页面中进行设置。

简单来讲,所有的LAN口都在同一个VLAN ID里;每个WAN口则独立占用一个VLAN ID

如果想把某一个接口从LAN口改成WAN口,则只需要单独创建一行VLAN ID,把这个口设置成untagget,并把这个口在其他VLAN ID中的相应位置改成就行了。CPU(eth0)则一律设置成tagget

如图,这里我把LAN1改成了WAN口。

img1

其中需要记住每个WAN口的VLAN ID,比如说我这里原来的WAN口的VLAN ID是2,新改出来的WAN口的VLAN ID是3。在命令行中则分别用eth0.2eth0.3表示它们。

创建多个外网接口

进入网络->接口页,把WANWAN6删除,然后点击添加新接口

这里我建议把原本的WAN口命名为wan0,新改的WAN口命名为wan1wan2……

记住你此时输入的接口名是大写还是小写,因为创建成功后一律显示为大写,而实际上是有大小写之分的。

接口协议选择DHCP 客户端,接口选择eth0.2eth0.3……这是原来的WAN口以及新改出来的WAN口。

img2

提交,然后再到防火墙设置里,把刚刚创建的接口都绑定到wan里,保存&应用之后,就可以给这些接口插入宽带了。

img3

如果操作没有问题的话,应该能看到这些WAN口已经获取到IP地址了。

我弄的是双线双拨,所以就把LAN1改成了WAN口,并创建了两个接口。

img4

请注意此时各个WAN口的MAC 地址必须不一样。如有重复则修改接口的高级设置,自定义一个MAC 地址

设置负载均衡

如果不设置的话,流量将只走一条宽带。

网络->负载均衡里,建议把接口成员策略规则里的自带内容删除后再进行下面的操作。

  • 接口

添加所有外网接口,其中接口名和刚刚创建的接口名一致,大小写相等

里面的配置可以仿照我的进行设置。

img5 img6 img7

  • 成员

有多少个外网接口则创建多少个成员,其中成员名不能和接口名一样,必须有区分,可以像我这样设置。

img8

其中这里的跃点数表示优先级,如果跃点数不一样则只启用跃点数小的接口跃点数一样则同时启用;比重则决定已启用成员的流量配比。在这里我们全部设为1即可。

  • 策略

创建一条策略,名称随意。使用的成员为刚刚创建的成员。

img9

  • 规则

创建一条规则,名称随意。分配的策略选择banlanced,其他保持默认。

img10

设置完记得保存&应用。

多拨状态下的自动认证

只需要对上一篇博文的代码进行略微修改就可以了。

另外,如果你在上一篇博文里已经创建了autologin,则需要先删除后再进行操作,因为那个脚本是面向单拨的。

cd /etc/init.d
rm autologin

复制以下代码到专业的文本编辑器里,把15、16行的接口和账号参数改成自己的。如果需要三拨或者更多拨,则按照格式修改最后几行。

#!/bin/sh /etc/rc.common
START=99

login(){
	ping -I $1 -c 1 202.207.0.6
	while [ $? != 0 ]
	do
		sleep 5
		ping -I $1 -c 1 202.207.0.6
	done
	curl --interface $1 -d "$2" http://172.31.99.50:802/include/auth_action.php
}

start(){
VLAN_ID_1="eth0.2"   user_1="账号1的关键参数"
VLAN_ID_2="eth0.3"   user_2="账号2的关键参数"

login $VLAN_ID_1 $user_1
login $VLAN_ID_2 $user_2
}
vi autologin

修改完了之后复制到autologin,方法就不多赘述了。

chmod +x autologin
./autologin enable

修复多拨产生的问题

多拨之后虽然能够实现暴力的网速叠加,但是也会出现一些问题,比如说导致某些网页加载不全、微信图片发送不出去、腾讯视频无法观看等,几乎无法日用。 困扰了很久之后终于找到了解决方案,只需要在网络->防火墙->自定义规则里添加一条规则就行了。

iptables -t nat -I POSTROUTING -j MASQUERADE

img11

添加完记得重启防火墙。

虽然问题解决了,但它是怎么产生的,这条规则又实现了什么,我是完全不懂(摊手)。所以如果有朋友知道的话,可以在评论区告诉我。

重启

关于多拨的所有设置已经做完了,此时重启路由器,并到状态->负载均衡页面确认所有外网接口是否都在线。

前往 https://www.speedtest.net/ 测试一下网速。

img12

部分参考资料

openwrt负载均衡最详细设置---小白基础篇
openwrt负载均衡最详细设置---小白进阶篇
[N1盒子] N1刷入LEAN OPENWRT做旁路网关,导致访问国内网站卡顿