使用MacVLAN和MWAN实现中南大学校园网多拨提速
0 前言
中南大学
校园网的速率说不上快,只能说是差强人意。因而本文详细描述了一套解决方案,将使用多拨的方式来提升某些情形的网络速率。已经在中南大学-铁道校区-学生10舍得到验证。
1 能够良好提升速率的前提条件
- 某些宿舍入墙(到座位面板)的网线老旧,最高链路速率也只有100Mbps(如铁10舍)
但宿舍AP处,则可以达到1000Mbps链路(如铁10舍) - MWAN配置要得当
- 进行多线程传输时(会按照既定配置分流至不同账号的线路上,通过负载均衡实现带宽叠加)
- 各个上网账号拥有较高的带宽资源
2 你需要准备的
先验知识
- 基本的计算机网络知识
- 基本的Linux知识
硬件
- 软路由*(笔者使用的是
Friendly Nano Pi R2S
)* - 网线
软件
-
为你的软路由刷写OpenWRT固件
如果不知道从哪里获取,这里提供一个固件编译网站
-
在OpenWRT中安装MacVLAN
-
在OpenWRT中安装MWAN 3
3 开始
-
透过CLI,建立虚拟网卡
-
MAC地址可自己决定,起的个数取决于你想要使用的校园网账号*(笔者使用3个账号来多拨)*
-
如果你希望每次软路由重启时,都能自动起虚拟网卡,可以在
/etc/rc.local
中编辑
# Put your custom commands here that should be executed once # the system init finished. By default this file does nothing. ip link add link eth0 name vth1 type macvlan ifconfig vth1 hw ether 99:64:E8:00:AA:48 ifconfig vth1 up ip link add link eth0 name vth2 type macvlan ifconfig vth2 hw ether 97:3C:E4:E1:A6:B5 ifconfig vth2 up ip link add link eth0 name vth3 type macvlan ifconfig vth3 hw ether 14:49:55:9B:93:5D ifconfig vth3 up exit 0
-
-
透过OpenWRT面板,建立对应的网络接口(
网络-接口
)-
创建接口
名称自己取,设备选取刚刚创建的虚拟网卡
-
配置
高级设置-网关跃点
⚠注意:这个值必须唯一
-
配置接口的
防火墙区域
分到wan区域即可
-
*重复以上步骤,直至你的每一个虚拟网卡都已经创建好对应的接口
-
至此,你应该能看到每个虚拟网卡都获得了上层网关分配的IP地址
-
-
透过OpenWRT面板,配置
MWAN
插件(网络-负载均衡
)-
删除所有已有的接口和成员
-
创建接口,个数同前面
-
每个接口的参考配置如下:
-
创建成员,个数同前面
⚠注意:如果你的几个账号带宽相等,跃点数和权重全填写
1
即可,否则按照实际带宽填写权重⚠注意:这里的配置可能会影响最终叠加的速率
-
策略保留一个balanced即可,并分配给你刚刚创建的成员
-
规则只保留default_rule即可,并设置为balanced
-
通知的配置(可选)
这里可以配置网络发生变动时,要做些什么*(笔者这里配置了掉线重新登录校园网判断,事实上这个很重要,因为校园网经常掉线)*
if [ "$ACTION" = "disconnected" ] && ([ "$INTERFACE" = "vwan1" ] || [ "$INTERFACE" = "vwan2" ] || [ "$INTERFACE" = "vwan3" ]); then # 执行 /root/unsafe_login.sh 脚本 /root/unsafe_login.sh fi
-
4. 解答你最后的疑问——如何登录校园网
-
校园网登录API
请求方法: GET URL: https://portal.csu.edu.cn:802/eportal/portal/login ?callback=dr1004 &login_method=1 &user_account={{你的校园网账号}} &user_password={{校园网登录密码}} &wlan_user_ip={{对应wan口分到的IP}} &wlan_user_ipv6= &wlan_user_mac=000000000000 &wlan_ac_ip=&wlan_ac_name= &jsVersion=4.1.3 &terminal_type=1 &lang=zh-cn&v=8352 &lang=zh 或透过IP地址访问(有时无法获取DNS,需要用IP地址来访问API): https://10.1.1.1:802/eportal/portal/login ?callback=dr1004 &login_method=1 &user_account={{你的校园网账号}} &user_password={{校园网登录密码}} &wlan_user_ip={{对应wan口分到的IP}} &wlan_user_ipv6= &wlan_user_mac=000000000000 &wlan_ac_ip=&wlan_ac_name= &jsVersion=4.1.3 &terminal_type=1 &lang=zh-cn&v=8352 &lang=zh
❗特别注意:校园网账号并非你的学号,而是绑定的运营商账号(如果忘记,可以在此查询:用户自助服务系统)
综上,也就是说,你只需要替换掉以上
{{ ? }}
为你实际的值,即为目标URL -
使用
curl
进行登录请求#!/bin/bash # 以下是一个示例,你需要替换interface参数值为你建立的虚拟网卡名,并重复此操作,直至所有账号都完成认证 curl -k --interface vth1 'https://10.1.1.1:802/eportal/portal/login?callback=dr1004&login_method=1&user_account=%2C0%2C8209200504%40unicomn&user_password=bugaosuni&wlan_user_ip=100.69.205.55&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=8352&lang=zh' curl -k --interface vth2 'https://10.1.1.1:802/eportal/portal/login?callback=dr1004&login_method=1&user_account=%2C0%2C8209200504%40telecomn&user_password=bugaosuni&wlan_user_ip=100.69.151.8&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=7252&lang=zh' curl -k --interface vth3 'https://10.1.1.1:802/eportal/portal/login?callback=dr1004&login_method=1&user_account=%2C0%2C8209200504%40telecomn&user_password=bugaosuni&wlan_user_ip=100.69.151.8&wlan_user_ipv6=&wlan_user_mac=000000000000&wlan_ac_ip=&wlan_ac_name=&jsVersion=4.1.3&terminal_type=1&lang=zh-cn&v=7252&lang=zh'
-
至此,你可以在OpenWRT面板中的
概览-负载均衡
看到接口是否活跃
4 测试
最后,测试你的成果!
可供选择的测试工具
- 广东电信测速平台(干净,好用)https://10000.gd.cn/#/speed
- 使用
IDM
等多线程下载工具,尝试从官方下载Windows镜像 - 其它测速平台…
5 特别鸣谢
6 协议
本文遵循 CC BY-NC-SA 4.0 协议