Openwrt下使用mwan3+macvlan实现校园网单线多拨叠加带宽

先来点效果图
效果图

前言

由于学校校园网一个人最大只给了500m下行,然后我们宿舍是靠我的软路由对设备数限制进行了一个破解+自动上线。500m感觉不是很够四个人用,于是出此下策。

折腾前宿舍已经实现了内网2.5G,由一台N100当主路由,下联一台全2.5G傻瓜交换机用于连接到每个人桌面上的网线,一个口连到一台ZTE巡天AX6000Pro作为AP。

前段时间突发奇想想看一下能不能多拨,查了一下发现可以,于是折腾成功之后就有了本文。

不过这期间遇到很多疑难杂症,别的教程文章里并未提及,本文也将加一些自己遇到的疑难杂症和解决方法给大家参考( 。

校园网环境

校园网认证流程非常简单公式化,设备直接作为DHCP客户端连接到校园网,接着打开任何网页都给你重定向到他的认证页面,完成认证之后mac地址加白,就可上网。

不过本教程的思路肯定也适用于pppoe认证的校园网,无非就是改一个接口类型的事

时不时会给你踢下线,需要重新认证。有无感认证,不过并不影响他时不时踢你。

教程!

分为三部写,分别是macvlan设置,mwan3设置,和疑难杂症部分,顺便讲讲认证思路

macvlan设置

macvlan的作用是让软路由的一个物理网口模拟出多个虚拟网口,每个虚拟网口可以有自己的mac地址,从而实现多拨。

首先创建设备。
进入网络-接口-设备,点击最底下的“添加设备配置”,选择类型为macvlan,现有设备选择连接校园网的物理网口(一般是eth0,添加的时候他会告诉你哪个网卡绑到了wan接口,选那个就行),模式选VEPA,名称随意起(我这里起的是vlan1),点击保存应用。
你想要叠加几次就创建(n-1)个macvlan设备(因为有个是现在的wan)

新设备

MAC地址随意,我一般生成几个苹果的mac地址,骗一下上层设备^_^,其他保留默认就行

接着转到接口标签页,创建新接口。

新设备2

类型根据你们校园网认证类型来写,我们是DHCP客户端,所以选DHCP客户端,设备选择刚才创建的macvlan设备,防火墙区域选择wan,高级设置里确定“使用默认网关”打勾了,接着把“使用网关度量值”(也叫“跃点”),随便改成一个不为0也不和别的接口相同的数字。 其他默认就好,保存。

重复上面的步骤,创建多个接口,直到你想要的数量为止。注意,每个接口的网关度量值要不一样。

然后编辑现有的wan,把“使用网关度量值”改成0,保存应用。

如果你确定你们校园网有多设备检测,建议改一下“请求DHCP时发送的主机名”,改成像一台电脑的。

到此,macvlan的设置就完成了。

mwan3设置

首先安装mwan3。进入系统-软件包,更新列表,然后搜索mwan3,安装mwan3和luci-app-mwan3,也可以顺便装个中文的i18n。
安装完成后,进入网络-MultiWan管理器,点击“接口”标签页,开始我们的配置~!

先看首页。
mwan3
打开路由表查找,选择里面有的,保存。

打开接口标签页,
mwan2
删掉所有他默认的接口,然后一个一个把我们刚才创建的接口添加进去,名字一定要和之前创建的接口名对应,
下面有几个注意的点,
首先,跟踪的IP地址最好不填或者改成一个你在不认证时能ping的通的地址,可以看一下上层DHCP给你发的默认DNS,或者tcpdump一下ARP包看下去哪个内网地址了,反正无论如何这个地址得在白名单内,原因疑难杂症后面会说。
其次,延迟和超时可以适当调大一点,避免误判,我们这边土豆认证服务器是不是叫就掉了,所以我改的很宽,因为我的“判断有没有掉线”不是在这里看的。
其他保持默认就好,保存并应用。

接着打开成员标签页,原有的全删了,添加新的。名称随便写,接口和前面添加的接口一一对应。
度量值统一为1,权重由你多拨时单条宽带带宽大小比决定。
比如你跟我一样是4条500m的,那么就都写1;
如果你是2条200m和1条100m的,那么200m的写2,100m的写1;以此类推,这个用于负载均衡时决定每条线路的使用频率。
保存并应用。

接着打开策略标签页。
这时有个默认的balance策略,不用删,点编辑
mwan4
把成员全选上,备用成员选默认就行,保存并应用。

最后打开规则标签页。
mwan5
默认这两条规则点编辑,把策略都改成刚才创建的balance策略,保存并应用。

这时候,mwan3的配置就完成了,理论上你的宽带已经叠加了,enjoy~(不过我还是建议你看完疑难杂症)

疑难杂症

Q:为什么我多拨成功了但是上不了网?/空路由/可以ping通不能访问?
A:随便tcping一个地址,如果报空路由(地址不可达),关掉你的哈基米,再多事试几次。这种情况极大概率是mwan3的锅。
有几种情况会导致这样:
1.哈基米的玄学问题
2.因为你没认证而且选了非白名单内ip地址-mwan3的测试地址不通-接口全部被标记为down-空路由
3.接口的“使用默认网关”没打勾
4.哈基米打开了接管路由器本机流量
这个东西有点玄学在里面,有时候重启下mwan3也能好

Q:为什么我的带宽没叠加?
A:首先确认一下你们上层设备限速的限速方法,是按单个mac限速还是按账号限,后者需要配不同网口通过不同账号上线。测试方法很简单,找个能正常认证上网的地方,同一个号下开两台设备同时测速,观察带宽。
然后去进行多次外网测速,接着在网络-接口里面检查一下每个接口的流量,如果发现流量明显不平均,再次确认你正确的把vlan的防火墙区域选到wan了,这种情况百分百是防火墙没配好导致的。

Q:为什么我的带宽叠加了但是很明显跟理论叠加的差距很大?
A:首先你先确认一下叠加上了,然后把你哈基米的绕过中国大陆ip地址打开即可解决。这种情况可能是哈基米把CPU榨干了。

关于上线

自动上线基本原理很简单,网上教程很多这里不说了,主要说一下网口对应账号上线的原理。
登陆脚本通过py的socket模块的SO_BINDTODEVICE实现绑定一个上线流程的所有请求到某网口,上线完毕再解绑。
守护脚本通过分网卡轮询小米204链接确定是否掉线,如果掉线了就调用登陆脚本通过指定网卡发请求上线。
类似思路就这样

感谢阅读~希望对你有帮助!