打造内大最强路由器(三):多线多拨实现带宽叠加
什么是多拨
多拨最开始出现在家庭网络的拨号上网中。
比如说,家里已经有了一条电信宽带,而移动充话费时又送了一条宽带。为了充分地利用起这两条宽带,我们把它们接在同一个路由器上,同时并发拨号,并对流量进行负载均衡,实现这两条宽带的带宽叠加,这个操作就叫做双线双拨。
而某些地区的运营商存在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
口。
其中需要记住每个WAN
口的VLAN ID
,比如说我这里原来的WAN
口的VLAN ID
是2,新改出来的WAN
口的VLAN ID
是3。在命令行中则分别用eth0.2
、eth0.3
表示它们。
创建多个外网接口
进入网络
->接口
页,把WAN
和WAN6
删除,然后点击添加新接口
。
这里我建议把原本的WAN
口命名为wan0
,新改的WAN
口命名为wan1
、wan2
……
记住你此时输入的接口名是大写还是小写,因为创建成功后一律显示为大写,而实际上是有大小写之分的。
接口协议选择DHCP 客户端
,接口选择eth0.2
、eth0.3
……这是原来的WAN
口以及新改出来的WAN
口。
点提交
,然后再到防火墙设置
里,把刚刚创建的接口都绑定到wan
里,保存&应用
之后,就可以给这些接口插入宽带了。
如果操作没有问题的话,应该能看到这些WAN
口已经获取到IP地址了。
我弄的是双线双拨,所以就把LAN1
改成了WAN
口,并创建了两个接口。
请注意此时各个WAN
口的MAC 地址
必须不一样。如有重复则修改接口的高级设置
,自定义一个MAC 地址
。
设置负载均衡
如果不设置的话,流量将只走一条宽带。
在网络
->负载均衡
里,建议把接口
、成员
、策略
、规则
里的自带内容删除后再进行下面的操作。
- 接口
添加所有外网接口,其中接口名和刚刚创建的接口名一致,大小写相等。
里面的配置可以仿照我的进行设置。
- 成员
有多少个外网接口则创建多少个成员,其中成员名不能和接口名一样,必须有区分,可以像我这样设置。
其中这里的跃点数
表示优先级,如果跃点数
不一样则只启用跃点数小的接口,跃点数
一样则同时启用;比重
则决定已启用成员的流量配比。在这里我们全部设为1即可。
- 策略
创建一条策略,名称随意。使用的成员为刚刚创建的成员。
- 规则
创建一条规则,名称随意。分配的策略选择banlanced
,其他保持默认。
设置完记得保存&应用。
多拨状态下的自动认证
只需要对上一篇博文的代码进行略微修改就可以了。
另外,如果你在上一篇博文里已经创建了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
添加完记得重启防火墙。
虽然问题解决了,但它是怎么产生的,这条规则又实现了什么,我是完全不懂(摊手)。所以如果有朋友知道的话,可以在评论区告诉我。
重启
关于多拨的所有设置已经做完了,此时重启路由器,并到状态
->负载均衡
页面确认所有外网接口是否都在线。
前往 https://www.speedtest.net/ 测试一下网速。
部分参考资料
openwrt负载均衡最详细设置---小白基础篇
openwrt负载均衡最详细设置---小白进阶篇
[N1盒子] N1刷入LEAN OPENWRT做旁路网关,导致访问国内网站卡顿