校园网突破限速、限终端数量终极办法:组网+多播
本文最后更新于 124 天前,其中的信息可能已经有所发展或是发生改变。

我目前所在的学校校园网单端限速 500Mbps,确实已经足够高了,不过依旧限制两个客户端。由于我有多台设备、IoT设备,数量远超限制,因此需要考虑使用一些手段。

此方法理论适用于所有高校的校园网。

1. 方案构思

1.1 利用负载均衡实现带宽叠加

首先,通过实验发现,判断是什么类型的设备是依靠浏览器自己识别,然后通过参数传递给认证网关,并且认证设备靠上游网关获取到的 MAC 地址区分,也就是说完全可以使用路由器接入校园网,让下游设备完成登陆认证,这样认证网关认证的是路由器的 MAC 地址。

接下来,如果是简单的认证,无法实现突破限速,我这里的校园网允许一个账号登陆一个手机端一个电脑端,因此我们可以通过多播的方式,让软路由虚拟出两个网口,并通过 MWan3 负载均衡,这样就能在一定程度上实现突破 500Mbps 限速。

为什么说一定程度上呢?原因如下:

  1. 由于实现方式是负载均衡,这种方式仅仅是将不同请求分发给不同的网口进行通信,也就是说,单个 TCP 连接就只能一直使用同一个网口进行通信,也就是说速度无法突破 500Mbps。
  2. 假设每个请求足够小,或者应用层使用多线程通信,那么就能利用上多个网口的带宽,实现带宽叠加。

1.2 利用网络代理实现“异地”组网

上文提到的负载均衡这种方式会带来一个问题,由于我这里校园网的账号最多就只能登陆两个设备,如果两个设备都交给软路由登陆了,实验室的网络解决了,宿舍的网络又怎么办呢?这种情况我第一时间想到的是异地组网的方式。

我这里宿舍和实验室里的网络设备互相可以访问,比如可以在实验室直连 IP 远程宿舍里的电脑,也可以在宿舍直连 IP 访问实验室里的服务器,所以两边软路由可以直连。

并且,这里的校园网连接之后会下发一个 DNS 服务器地址,这个 DNS 服务器在不认证的情况下也能查询 DNS,我们甚至可以让出网设备使用 DDNS 记录下自己的 IP,让其他设备用固定的域名直连出网节点。

最后,我们把一个节点设置为 exit-node,让其他所有节点通过 exit-node 出网,这样就能实现让所有设备都能上网了。

2. 方案实践

首先我们需要至少两台软路由,即宿舍一台、实验室一台。如果你还有其他设备在不同的地理位置,则按需增加软路由数量。

我这里选择把出网节点放在实验室,也就是说宿舍的软路由通过实验室的软路由出网。

本文基于 OpenWrt 24.10.6 编写。我的校园网环境:

  • 允许一部手机、一台电脑,共两个端登陆校园网;
  • 上游下发的 DNS 服务器在不登陆的情况下也能查询结果;
  • 宿舍和实验室的 IP 可以直连。

2.1 前置条件

出网节点 OpenWrt 依赖:

  • luci-app-easytier
  • easytier
  • luci-app-ddns-go(可选)
  • luci-app-mwan3(可选,添加后可实现突破单客户端限速)
  • kmod-macvlan(若出网节点的软路由硬件包含多个网口,且环境条件允许插多根网线时,此依赖可选)

其他节点 OpenWrt 依赖:

2.2 配置出口节点

如果你的校园网不支持多个端登陆,则只需要创建一个 wan 开头的“设备”、“接口”,然后跳过配置 MWan3,认证网络步骤也无需禁用所有 WAN 口、单独启用再认证等繁琐步骤,直接登陆即可,这里不展开说明。

2.2.1 创建虚拟 WAN 口

如果你的出网节点的软路由硬件包含多个网口,且环境条件允许插多根网线,那这一步可以省略,直接插很多根网线,然后把这些网口设置成 wan 口就行了,这里就不展开说明了,读者自行研究。

我这里的设备,eth1 接校园网网口,eth0 接下游 AP。

前往“网络”->“接口”:

  1. 在“接口”选项卡中,删除默认的 wanwan6 口,点击“保存并应用”。
  2. 在“设备”选项卡中,取消配置 wan 设备,点击“保存并应用”。
  3. 在“设备”选项卡中,添加设备配置 wan_a

    • 设备类型:MAC VLAN
    • 基础设备:eth1(接了校园网的网口)
    • 模式:桥接
    • 设备名称:wan_a(你也可以自定义名称)
    • MAC 地址:(随便搜一个随机 MAC 地址生成器生成一个)

    添加设备配置 wan_b

    • 设备类型:MAC VLAN
    • 基础设备:eth1(接了校园网的网口)
    • 模式:桥接
    • 设备名称:wan_b(你也可以自定义名称)
    • MAC 地址:(随机 生成一个)

    如果你的校园网允许的终端数量大于 2,则还可以继续创建 wan 设备。

    添加设备配置 lan_easytier

    • 设备类型:MAC VLAN
    • 基础设备:eth0(接了下游 AP 的网口)
    • 模式:桥接
    • 设备名称:lan_easytier(你也可以自定义名称)
    • MAC 地址:(随机生成一个)

    以上所有设备 MAC 地址需互不相同。

  4. 在“接口”选项卡中,添加新接口 wan_a

    • 名称:wan_a(你也可以自定义名称)
    • 协议:DHCP 客户端
    • 设备:wan_a
    • DHCP 请求时发送的主机名:不发送主机名(可选,改成这个之后,风险更低)
    • 高级设置->网关跃点:2
    • 防火墙设置->创建/分配防火墙区域:wan

    添加新接口 wan_b

    • 名称:wan_b(你也可以自定义名称)
    • 协议:DHCP 客户端
    • 设备:wan_b
    • DHCP 请求时发送的主机名:不发送主机名(可选,改成这个之后,风险更低)
    • 高级设置->网关跃点:2
    • 防火墙设置->创建/分配防火墙区域:wan

    如果你的校园网允许的终端数量大于 2,则还可以继续创建 wan 接口。

    添加新接口 lan_easytier

    • 名称:lan_easytier(你也可以自定义名称)
    • 协议:DHCP 客户端
    • 设备:lan_easytier
    • DHCP 请求时发送的主机名:不发送主机名(可选,改成这个之后,风险更低)
    • 网关跃点:1(需小于所有 wan 口的网关跃点,这样 easytier 组网的流量才能进过这个接口)
    • 防火墙设置->创建/分配防火墙区域:wan

    点击“保存并应用”。

2.2.2 配置 MWan3

如果你的校园网仅允许一个端,则跳过这一步。

前往“网络”->“MiltiWAN 管理器”:

  1. 在“接口”选项卡中,删除所有已存在的接口。添加接口 wan_a(名称需与上一节中你设置的 wan 接口名称相同):

    • 已启用:勾选
    • 跟踪的主机或 IP 地址:(添加上游默认网关地址,可以用电脑直连校园网,用 ipconfig 命令查看默认网关的地址,具体方法读者自行研究)

    添加接口 wan_b(名称需与上一节中你设置的 wan 接口名称相同):

    • 已启用:勾选
    • 跟踪的主机或 IP 地址:(添加上游默认网关地址,可以用电脑直连校园网,用 ipconfig 命令查看默认网关的地址,具体方法读者自行研究)

    点击“保存并应用”。

  2. 在“成员”选项卡中,删除所有已存在的成员。添加成员 member_a(你也可以自定义名称):

    • 接口:wan_a
    • 跃点数:1
    • 权重(Weight):1

    添加成员 member_b(你也可以自定义名称):

    • 接口:wan_b
    • 跃点数:1
    • 权重(Weight):1

    点击“保存并应用”。

  3. 在“策略”选项卡中,删除所有已存在的策略。添加策略 easytier

    • 使用的成员:添加第 2 步中添加的所有成员。
    • 备用成员:不可达(拒绝)

    点击“保存并应用”。

  4. 在规则中,删除所有已存在的规则。添加规则 easytier

    • IP协议版本:IPv4 和 IPv6
    • 分配的策略:easytier(第 3 步中创建的策略)

    点击“保存并应用”。

此时你的路由器已经能实现负载均衡了。

2.2.3 认证网络

回到“网络”->“接口”:

  1. “停止”接口 wan_awan_b…(即所有 wan 开头的接口)。
  2. “重启”接口 wan_a,使用电脑登陆校园网,登陆成功后“停止”接口 wan_a
  3. “重启”接口 wan_b,使用手机登陆校园网(可以电脑浏览器开 F12,开启模拟手机设备),登陆成功后“停止”接口 wan_b
  4. “重启”接口 wan_awan_b…(即所有 wan 开头的接口)。

使用浏览器登陆的时候,尽量使用无痕窗口、隐身模式等。

此时,你的软路由应该能实现叠加校园网两个端的速度了。

当然速度上限取决于你连接校园网使用的物理网口的协商速度,如果你的环境条件允许插很多根网线,那么速度上限就是这些网线协商速度的叠加。

2.2.4 配置 DDNS

如果你的校园网跟我的一样,上游下发的 DNS 服务器在不登陆的情况下可以查询到结果,并且你有自己的域名,则强烈建议配置 DDNS,这样能大幅简化组网流程。

这一步就是配置 DDNS-GO 监听接口 lan_easytier,把接口拿到的 IP 解析到你的域名上,详细配置步骤不再展开说明。

2.2.5 配置 EasyTier

前往“VPN”->“EasyTier”,在“EasyTier配置”中:

  1. 在“常规设置”选项卡中:

    • 启用:勾选
    • 网络名称:自定义。
    • 网络密钥:自定义。
    • 接口IPV4地址:自定义,例如 172.16.0.1/24
    • 子网代理:填写当前网络的子网地址,例如 192.168.6.0/24
    • 主机名:自定义。
  2. 在“高级设置”选项卡中:

    • 启用出口节点:勾选
    • 启用私有模式:勾选(可选,但建议勾选)
  3. 点击“保存并应用”。

其他选项按需配置。

2.2.6 测试出口节点

至此,你的出口节点就算配置完成了,可以在出口节点的网络中测速,测试一下网速是否有叠加,推荐使用百度超级会员、迅雷 SVIP 等下载文件测速(真不是广,好多测速软件都不行,测不出速度上限)。

如果网速没有叠加,可以重新尝试”认证网络“步骤,如果还是不行,可以把几个 wan 口换一个 MAC 地址再尝试认证。

如果还是不行,那我没招了(摊手)。

2.3 配置子节点

2.3.1 初始化 WAN 口

这一步的作用是仅使用 IPv4,配合出网节点。如果你出网节点配置的协议是“DHCPv6 客户端”,那这里就删除 wan 保留 wan6,这里不展开说明,读者自行研究。

  1. 在“接口”选项卡中,删除默认的 wan6 口,点击“保存并应用”。

2.3.2 配置 EasyTier

前往“VPN”->“EasyTier”,在“EasyTier配置”中:

  1. 在“常规设置”选项卡中:

    • 启用:勾选
    • 网络名称:同出网节点配置。
    • 网络密钥:同出网节点配置。
    • 启用DHCP:勾选。
    • 接口IPV4地址:留空。
    • 对等节点:添加 udp://<exit-node>:11010(其中 <exit-node> 是出网节点 lan_easytier接口的 IP 地址,或你设置的 DDNS 域名),也可以使用 tcp 等协议,按你的喜好来。
    • 子网代理:填写当前网络的子网地址,例如 192.168.7.0/24
    • 主机名:自定义。
  2. 在“高级设置”选项卡中:

    • 出口节点地址:添加出口节点的“接口IPV4地址”
    • 启用私有模式:勾选(可选,但建议勾选)
  3. 点击“保存并应用”。

其他选项按需配置。

2.3.3 添加路由规则

前往“网络”->“路由”,在“静态 IPv4 路由”中:

  1. 添加规则(手动排序到第一条):

    • 接口:wan
    • 路由类型:unicast
    • 目标:出口节点所在网段。
    • 网关:子节点所在网络的默认网关地址。
  2. (如果你不用 DDNS,则不需要添加这一条)添加规则(手动排序到第二条):

    • 接口:wan
    • 路由类型:unicast
    • 目标:上游下发的 DNS 地址。
    • 网关:子节点所在网络的默认网关地址。
  3. 添加规则(手动排序到第三条):

    • 接口:EasyTier
    • 路由类型:unicast
    • 目标:0.0.0.0/0

2.3.4 劫持 DNS 转发到出网节点

这一步是为了防止 DNS 泄漏,可选,但推荐执行。

前往“服务”->“MosDNS”:

  1. 在“基本选项”选项卡中:

    • 启用:勾选
    • DNS 转发:勾选
    • DNS 重定向:勾选
    • 远程 DNS 服务器:添加出口节点的“接口IPV4地址”

2.3.5 测试子节点

此时,你的子节点已经能通过出网节点上网了,可以访问互联网测试是否无需登陆也能访问互联网。

上一篇
下一篇