UESTC沙河校区校园网自动登录及带宽叠加

UESTC沙河校区校园网自动登录及带宽叠加

Denvo 树犹如此,人何以堪

前言

UESTC沙河校区的宿舍网络目前只有100Mbps(12.5MB/s),这个速度下,如果宿舍使用的是路由器来上网的话,只要一个舍友Steam开始下东西的话,整个宿舍的网络就会爆炸。虽然也可以在路由器侧禁止单台设备使用完全部的带宽,但这终究是治标不治本。经测试,宿舍墙上的网口的硬件配置是1Gbps的,限速完全是因为校园网的软件策略导致的,而我刚好手上有一台刷过Openwrt的路由器,于是尝试使用它来进行带宽叠加,尝试改善宿舍的网络体验。

校园网自动登录

电脑连接上校园网后,浏览器会自动弹出一个认证页面,用户通过输入自己的账号与密码,完成登录之后即可上网。经观察发现,这个认证页面的url中含有字样srun。经查询,这是一家致力于认证计费领域的公司的系统,而恰好Github上已有大神对这套系统写了个自动登录的程序(Mmx233/BitSrunLoginGo),我们直接拿来使用即可。

根据你的目标系统和架构选择最合适的版本下载对应的程序,然后为其编写配置文件。仓库的readme文件中说明了Config.yaml的事宜,经与校园网环境的实际比对,我写了一版配置。

其中登录所需的校园网配置如下,没有注释的项直接使用下面我给的就好。readme文件中给的示例中acid的值是5,但校园网实际是6。如果这一项的值填错了的话,网页会提示你登陆成功,但你仍然无法联网。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
form:
domain: 192.168.9.8
username: "" #账号
user_type: uestc #运营商类型,可以看仓库的readme来获取。目前已知,如果你使用电信登录,那么这里输入dx;如果是校园网登录,那么这里输入uestc。
password: "" #密码
meta:
"n": "200"
type: "1"
acid: "6"
enc: srun_bx1
os: Windows 10
name: windows
info_prefix: SRBX1
double_stack: false

对于多网卡设备,建议在配置文件的settings.basic.interfaces项中指定你用于连接校园网的网卡。虽然这里可以写正则,但强烈推荐直接指定设备名。比如你的上网网卡名为“以太网”,那么这一项的值就填成"^以太网$"

至于守护模式和ddns之类的功能,大家可以根据自己的需求酌情选择开启,此处略。

保存配置文件之后,你可以通过以下命令启动程序。命令中的配置文件路径记得修改成你自己的路径。

1
./bitsrun --config=/path/to/your/config.yaml

校园网带宽叠加

我的Openwrt路由器是硬改了512MB内存的小米WR30U,固件版本是Kwrt 24.10-SNAPSHOT 11.10.2025 by Kiddin' / LuCI openwrt-24.10 branch 26.313.53093~ae2aec8,内核版本为6.6.116。这个路由器仅需一百多即可拿下,算是一款比较有性价比的机器。那么接下来我将基于我自身的情况来说明如何进行带宽叠加。

你需要准备的东西如下:

  • 一台Openwrt系统的路由器
  • 手里能使用多于一个用于上网认证的账号
  • Openwrt中安装了mwan3luci-app-mwan3luci-i18n-mwan3-zh-cnkmod-macvlan四个软件包
  • 在Openwrt中安装bmon软件包用于查看流量(可选)
  • 将Openwrt的WAN口连到宿舍墙面的网口,LAN口连到电脑,连接路由器电源,然后打开路由器的后台页面及SSH

接下来就开始配置Openwrt。

创建VWAN

首先判断你的WAN网口在Openwrt叫什么名字,我这边就叫wan。有些设备可能叫eth0eth1之类的,如果你的实际情况与我不同,那么后续的配置中请注意修改你的WAN网口名。

然后在路由器后台页面的“系统”——“启动项”——“本地启动脚本”修改脚本,并在exit 0前面粘贴如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# virtual wan start
ip link add link wan name vwan1 type macvlan
ifconfig vwan1 hw ether 12:34:56:78:90:AB
ifconfig vwan1 up

ip link add link wan name vwan2 type macvlan
ifconfig vwan2 hw ether CD:EF:GH:IJ:KL:MN
ifconfig vwan2 up

ip link add link wan name vwan3 type macvlan
ifconfig vwan3 hw ether OP:QR:ST:UV:WX:YZ
ifconfig vwan3 up
# virtual wan end

ip route add 192.168.9.8 via 210.41.96.1

每个用于认证登录的账号都需要一个自己独立的VWAN。上面的脚本假设你有3个账号,所以生成了三个VWAN,实际上VWAN的数量应根据你手中账号的数量来决定。VWAN的mac地址可以自己随机生成一个,校园网的管理程序应该是不会严查mac的合法性的,在使用上面的代码时建议修改里面的mac地址。最下面的ip route命令是用于上面提到的校园网自动登录用的,上面的程序在指定网口后可能会出现无法路由的情况,所以需要这条命令。

上面的步骤完成并保存后,重启路由器。然后在管理页面中找到“网络”——“接口”,在里面添加新接口,选择设备时选择你刚才创建的vwan即可。设置vwan时记得在高级设置中分别设置不同的网关跃点数(比如分别设置成10,20,30),然后在防火墙设置中把该接口划分到wan区域。

待所有vwan均新建完毕并能正常获取到ip后,停用wan并在配置中取消开机自动连接。然后重启路由器。

配置自动登录

为路由器下载上面提到的自动登录程序的合适版本,然后上传到路由器中(比如可以通过管理网页“系统”——“文件管理器”),然后分别为每一个账号编写一个配置文件(记得开启守护模式)。

然后在/etc/init.d目录下新建一个文件,比如叫bitsrun_multi,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/sh /etc/rc.common

USE_PROCD=1
START=99
STOP=15

# 请修改为你的程序路径和你的配置文件存放路径
PROG="/path/to/your/bisrun/program"
CONF_DIR="/path/to/your/config/dir"

start_service() {
# 请在下方的in和分号之间列举你的配置文件名字,下面是一个示例
for cfg in user1.yaml user2.yaml user3.yaml; do
if [ -f "$CONF_DIR/$cfg" ]; then
procd_open_instance "$cfg"

procd_set_param command "$PROG" -config="$CONF_DIR/$cfg"

procd_set_param respawn

procd_set_param stdout 1
procd_set_param stderr 1

procd_close_instance
fi
done
}

上面的内容请根据注释,把程序路径和配置文件等修改成你自己的。然后输入chmod +x /etc/init.d/bitsrun_multi为其添加执行权限,然后输入以下命令启用脚本。

1
2
/etc/init.d/bitsrun_multi enable
/etc/init.d/bitsrun_multi start

你可以随时输入logread | grep bitsrun命令来查看自动登录程序的日志输出。ps -w | grep bitsrun可以查询到自动登录程序的进程。

配置MWAN3

在管理页面中进入“网络”——“MultiWAN管理器”——“接口”,然后在左下角添加vwan1-vwan3。在接口设置中设置ping的ip地址为www.baidu.com或其他只有认证成功后才能访问的地址,其他保持默认设置即可。

然后在“网络”——“MultiWAN管理器”——“成员”中为上面生成的每一个接口分别创建一个新的成员。名称可以随便写,这几个成员的跃点数和Weight分别都设置为一样的数字(比如都设置成1)。

然后切换到“网络”——“MultiWAN管理器”——“策略”,并修改名为“balanced”的策略,并添加上一步中创建的所有成员。

接下来切换到“网络”——“MultiWAN管理器”——“规则”,并修改名为https的策略,设置目标端口为80和443,协议设置为tcp,然后开启粘滞模式。另添加一个策略,将协议设置为udp,其余设置和名为https的策略保持相同。将这两个策略的优先级设置成最高。

关闭硬件NAT

如果是硬路由刷的Openwrt,则需要在“网络”——“Turbo ACC网络加速”中取消勾选“软件流量分载和“BBR拥塞控制算法”。否则流量可能会从路由器内部的硬件NAT直接流出,不经过Soc,导致上面配置的带宽叠加不起作用。

其他

接下来就可以正常设置Openwrt的网络以便于更好的使用了。比如设置Wi-Fi的名称和密码,防火墙,端口转发等。如果安装了bmon,则可以在ssh中使用bmon来查看各个网口的网络情况。(虽然我这里使用这个软件包经常会出现段错误,不知道是不是这个软件包本身的问题)

为了方便地测试每个账号的登录状态,这里有一个脚本(vwan-test.sh):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/sh

# 1. 检查是否传入了参数 ($1 代表第一个参数)
if [ -z "$1" ]; then
echo "错误: 未指定接口名称!"
echo "用法: $0 <接口名>"
echo "示例: $0 vwan1"
exit 1
fi

# 将传入的参数赋值给变量 IFACE
IFACE="$1"

# 2. 引入 OpenWrt 网络库函数
. /lib/functions/network.sh

# 3. 尝试获取指定接口的 IP 地址并存入变量 IFACE_IP
network_get_ipaddr IFACE_IP "$IFACE"

# 4. 判断是否成功获取到 IP
if [ -n "$IFACE_IP" ]; then
echo "获取到 $IFACE 的 IP 为: $IFACE_IP"
echo "正在测试 $IFACE 的网络连通性..."

# 使用获取到的 IP 进行测试,并将输出结果静默化,只抓取 HTTP 状态码
HTTP_STATUS=$(curl -I -s --interface "$IFACE_IP" --connect-timeout 3 https://www.baidu.com | grep "HTTP")

# 判断 curl 命令的返回值 ($? 为 0 表示命令执行成功)
if [ $? -eq 0 ] && [ -n "$HTTP_STATUS" ]; then
echo "测试成功!状态: $HTTP_STATUS"
else
echo "测试失败!$IFACE 无法连接到外网 (超时或无响应)。"
fi
else
echo "错误: $IFACE 未获取到 IP 地址,接口可能离线或名称拼写错误。"
fi

使用时只需要执行vwan_test.sh vwan1就可以判断vwan1所属的账号的网络联通状态。输入vwan_test.sh vwan2就可以判断vwan2的。如果联通正常,就会返回HTTP 200,如果不正常则会返回其他的。

补充

经过实际测试,如果使用5个账号进行带宽叠加,理论上能有500Mbps的最高速度,但浏览器下载等很多单线程访问的场景仍然受限于单个账号的最大速度(100Mbps)。以下是通过Steam下载游戏得到的速度结果:

Steam游戏下载测试
Steam游戏下载测试

最高能跑到468.8Mbps,平均速度大概在300Mbps左右。

然而,在实际体验一段时间后,我在局域网串流(Steam-link)的体验不是很好,原因可能是路由器的软件转发能力不太够,毕竟为了带宽叠加而关掉了硬件NAT。我想到的一个解决方法是,再搞一个普通的路由器,通过网线连接到Openwrt的LAN口,并设置此路由器为一个AP。Wi-Fi信号由这个普通路由器发射,Openwrt仅作为网关和路由使用,局域网内的转发则全靠普通路由器内部的硬件NAT。缺点主要是需要两台路由器。

另外,在偶尔访问一些网页时,网页可能会加载不出来或者加载网页有明显延迟。怀疑可能是浏览器在访问一些资源时,流量从不同的WAN口出去了,导致源ip不一致,服务器拒绝访问。这个问题根据自身统计,在5个用户中,仅1个用户出现此问题。暂时没有找到这个问题好的解决方法,因为这个问题产生的原因就是上面提到的带宽叠加。

总体而言,能在限速100Mbps的环境下使用到500Mbps的网络,这个效果提升非常大,如果你没有遇到上面网页加载的问题的话,那么这个方案可能是非常适合你的一个提速方案。

  • 标题: UESTC沙河校区校园网自动登录及带宽叠加
  • 作者: Denvo
  • 创建于 : 2026-07-06 22:20:17
  • 更新于 : 2026-07-06 22:26:01
  • 链接: https://www.denvoshome.xyz/posts/UESTC-net-Openwrt-mwan3/
  • 版权声明: 本文章采用 CC BY-SA 4.0 进行许可。
评论