使用MacVLAN和MWAN实现中南大学校园网多拨提速

使用MacVLAN和MWAN实现中南大学校园网多拨提速

0 前言

中南大学校园网的速率说不上快,只能说是差强人意。因而本文详细描述了一套解决方案,将使用多拨的方式来提升某些情形的网络速率。已经在中南大学-铁道校区-学生10舍得到验证。

ad5286b7130c3f9211ca383795b01be.jpg

54a6cc2fe1eae3fa2675102e2ac9440.jpg

1 能够良好提升速率的前提条件

  1. 某些宿舍入墙(到座位面板)的网线老旧,最高链路速率也只有100Mbps(如铁10舍)
    但宿舍AP处,则可以达到1000Mbps链路(如铁10舍)
  2. MWAN配置要得当
  3. 进行多线程传输时(会按照既定配置分流至不同账号的线路上,通过负载均衡实现带宽叠加)
  4. 各个上网账号拥有较高的带宽资源

2 你需要准备的

先验知识

  1. 基本的计算机网络知识
  2. 基本的Linux知识

硬件

  1. 软路由*(笔者使用的是Friendly Nano Pi R2S)*
  2. 网线

软件

  1. 为你的软路由刷写OpenWRT固件

    如果不知道从哪里获取,这里提供一个固件编译网站

  2. 在OpenWRT中安装MacVLAN

  3. 在OpenWRT中安装MWAN 3

3 开始

  1. 透过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
    
  2. 透过OpenWRT面板,建立对应的网络接口(网络-接口

    1. 创建接口

      名称自己取,设备选取刚刚创建的虚拟网卡

      image-20231027223655415

    2. 配置高级设置-网关跃点

      ⚠注意:这个值必须唯一

      image-20231027224006968

    3. 配置接口的防火墙区域

      分到wan区域即可

      image-20231027223904472

    4. *重复以上步骤,直至你的每一个虚拟网卡都已经创建好对应的接口

    5. 至此,你应该能看到每个虚拟网卡都获得了上层网关分配的IP地址

      image-20231027224210769转存失败,建议直接上传图片文件

  3. 透过OpenWRT面板,配置MWAN插件(网络-负载均衡

    1. 删除所有已有的接口和成员

    2. 创建接口,个数同前面

      image-20231027224537036转存失败,建议直接上传图片文件

    3. 每个接口的参考配置如下:

      image-20231027224612803转存失败,建议直接上传图片文件

      image-20231027224631396转存失败,建议直接上传图片文件

    4. 创建成员,个数同前面

      ⚠注意:如果你的几个账号带宽相等,跃点数和权重全填写1即可,否则按照实际带宽填写权重

      ⚠注意:这里的配置可能会影响最终叠加的速率

      image-20231027224658431转存失败,建议直接上传图片文件

    5. 策略保留一个balanced即可,并分配给你刚刚创建的成员

      image-20231027224845377转存失败,建议直接上传图片文件

    6. 规则只保留default_rule即可,并设置为balanced

      image-20231027224902115转存失败,建议直接上传图片文件

    7. 通知的配置(可选)

      这里可以配置网络发生变动时,要做些什么*(笔者这里配置了掉线重新登录校园网判断,事实上这个很重要,因为校园网经常掉线)*

      image-20231027225030048转存失败,建议直接上传图片文件

      if [ "$ACTION" = "disconnected" ] && ([ "$INTERFACE" = "vwan1" ] || [ "$INTERFACE" = "vwan2" ] || [ "$INTERFACE" = "vwan3" ]); then
          # 执行 /root/unsafe_login.sh 脚本
          /root/unsafe_login.sh
      fi
      

4. 解答你最后的疑问——如何登录校园网

  1. 校园网登录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

  2. 使用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'
    
  3. 至此,你可以在OpenWRT面板中的概览-负载均衡看到接口是否活跃

    image-20231027233600886

4 测试

最后,测试你的成果!

可供选择的测试工具

  • 广东电信测速平台(干净,好用)https://10000.gd.cn/#/speed
  • 使用IDM等多线程下载工具,尝试从官方下载Windows镜像
  • 其它测速平台…

5 特别鸣谢

6 协议

本文遵循 CC BY-NC-SA 4.0 协议

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值