OpenWrt 路由器 MacVLAN+MWAN3 校园网多拨超详细指南

您所在的位置:网站首页 如何单线多拨电缆 OpenWrt 路由器 MacVLAN+MWAN3 校园网多拨超详细指南

OpenWrt 路由器 MacVLAN+MWAN3 校园网多拨超详细指南

2024-07-09 02:13:45| 来源: 网络整理| 查看: 265

在校园网上网的过程中,许多同学都会有一些多线程下载需求。例如:公网 PT/BT 种子下载、Steam 游戏下载等等。这时,大家都希望能提高自己的网速,节省下载时间。

对于这类多线程的下载需求,如果采用多拨,在配置得当的情况下,系统会将流量分流至多个网络接口,实现网络带宽叠加的效果。

在介绍 OpenWrt 有线多拨方式前,先对校园网认证方式和现有的几种多拨方法作简要总结。不感兴趣的同学可以跳过这些部分。

校园网认证方式 网页认证方式

网页登录认证常用于 ZJUWLAN/ZJUWLAN-NEW 无线网。目前大多数宿舍区的有线网也支持此方式。接入 ZJUWLAN 或支持此方式的有线网,使用浏览器访问任意公网站点(如百度),会被重定向到认证网页。在认证网页输入账号密码,登录后即可访问公网。

认证的详细过程如下:设备接入无线或受支持的有线网后,DHCP 服务器向设备分配 IP 地址。在网页认证过程中,设备提交自己的 IP,服务端将 IP 在 DHCP 表中比对,如找不到 IP 则无法完成认证。这也是在不支持网页认证的有线网中强行认证会提示“IP 不在 DHCP 表中”的原因。具体的请求细节可以参考田发呆同学的网页认证登录脚本。

值得注意的是,在连接网络但未认证的情况下,经实测,ZJUWLAN/ZJUWLAN-NEW 不能访问包括 CC98 服务器在内的大部分内网主机。以下是在 ZJUWLAN-NEW 上的一些测试:

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 $ ping 10.10.98.98 -n 1 Pinging 10.10.98.98 with 32 bytes of data: Request timed out. $ ping 10.10.0.21 -n 1 Pinging 10.10.0.21 with 32 bytes of data: Reply from 10.10.0.21: bytes=32 time=11ms TTL=250 $ ping lns.zju.edu.cn -n 1 Pinging lns.zju.edu.cn [10.0.2.3] with 32 bytes of data: Reply from 10.0.2.3: bytes=32 time=2ms TTL=61 $ ping ee.zju.edu.cn -n 1 Pinging ee.zju.edu.cn [10.203.4.85] with 32 bytes of data: Request timed out. $ ping net.zju.edu.cn -n 1 Pinging net.zju.edu.cn [10.50.200.245] with 32 bytes of data: Reply from 10.50.200.245: bytes=32 time=2ms TTL=60 $ ping speedtest.zju.edu.cn -n 1 Pinging speedtest.zju.edu.cn [10.202.41.81] with 32 bytes of data: Reply from 10.202.41.81: bytes=32 time=7ms TTL=59

有线网则可在未认证的情况下访问几乎整个 10.0.0.0/8 段(未仔细验证)。

在登录认证后,公网流量会被正确路由,限速规则也在此时生效。不好的一点是,登录认证同样会对内网流量施加限速,导致在访问内网主机时无法达到链路速度。与后面介绍的 L2TP 认证方式不同,限速是在上级网关配置的,这导致我们原本的接口被限速,无法将 10.0.0.0/8 的流量分流到不限速的接口。对于使用 NexusHD、期望内网高速上传/下载的同学来说是重大弊端。

相比下面介绍的 L2TP 方式,网页认证的优点是支持同时登录多个设备,而 L2TP 只支持登录 1 个设备。参考信息技术中心说明。并且,由于网页认证无需在设备上进行加解密,对设备性能的要求较低。

注:性能需求在单账号时影响不显著,但在多拨情况下有较大影响。大多数路由器在同时运行数个 L2TP 客户端、满带宽运行时会出现显著的性能问题。

L2TP 认证方式

L2TP 认证方式常用于有线网。在实际的使用中常有两种方式:有线 VPN 客户端和自建 L2TP 客户端。其中,信息技术中心提供的有线 VPN 客户端易于使用,但可能在 Windows 10/11 上导致一些网络问题,并且与科学上网工具的兼容性不佳。自建 L2TP 客户端的常见方式包括:Windows 自带的 VPN 功能、Linux 环境下的 xl2tpd/zjunet。

L2TP 认证方式重要优点为:在拨号后可以在本机设置静态路由,让 10.0.0.0/8 的流量通过原本的接口(未被限速)而非 L2TP 接口(被限速),对使用 NexusHD 的同学相当有用。缺点为设置方法复杂,并且只能一次登录一个设备。

802.1X 认证方式

用于 ZJUWLAN-Secure 无线网。本文主要聚焦于有线网,故不再赘述。

现有多拨方式

目前常见的多拨方式有:

有线 L2TP 多拨 有线 L2TP 叠加 ZJUWLAN 无线

注:2021 年前可实现单账号 L2TP 多拨,目前漏洞已修复,只能进行多账号 L2TP 多拨。

我们分两种情况介绍:

不借助路由器

不借助路由器直接在 Windows PC 上多拨,需要使用 Connectify Dispatch 软件。详细介绍可以看我的这篇帖子。然而,Connectify Dispatch 软件需要破解,并且实测多拨的稳定性很差,故非常不推荐。

注:直接在 Windows 上拨几个 L2TP 账号并不会使带宽叠加,因为 Windows 不会进行负载均衡。同时登录无线和有线,迅雷之类的软件可能会使用全部可用的网络接口,使带宽叠加。

借助路由器多拨

这种情况下一般采用 L2TP 多拨,大多数路由器原装系统并不支持,需要安装第三方固件:

OpenWrt

可以借助 xl2tpd+MWAN3 实现多拨。但实测 OpenWrt 对 L2TP 的支持不太好,容易出现断连的情况(我这里测试的结果是这样,存疑)。

高恪、爱快、ROS 等流控系统

这类系统具有强大的流控功能,可以很好的进行负载均衡。ROS(RouterOS,不是 Robot Operating System) 多拨可以参考 hzdrro 同学的这篇帖子。高恪、爱快等系统的设置也较为容易。

我之前一直使用刷写了高恪固件的新三路由器进行 L2TP 多拨。这类方法也存在一定缺点:

L2TP 多拨需要多个账号 L2TP 对设备性能的要求较高,多个 L2TP 客户端对一般的路由器过于吃力,可能需要 x86 软路由 ROS、爱快均不支持常见的 MT7621 芯片路由器,需要 x86 软路由。高恪支持一些 MT7621 路由器,但高恪系统无 IPv6 支持,需要另想办法

下面开始这篇指南的主要内容:基于网页认证的多拨。

OpenWrt+网页认证实现多拨

这一方案具有如下优点:

OpenWrt 适用于大多数路由器,无需购买软路由 网页认证支持单账号多拨,无需使用多个账号 网页认证方式对设备性能要求低 通过 MacVLAN,可以绕过网页认证后的内网限速

在开始教程前,首先说明以下几点:

多拨的上限受账号并发数和链路速度的限制。其中,链路速度主要和宿舍的交换机有关。将网线插入电脑,适配器属性中会显示 100Mbps 或 1000Mbps,这个即为多拨的上限(此处假设电脑网卡支持 1000Mbps)。

注:不要傻乎乎地以为把宿舍交换机换了就可以实现百兆到千兆的飞跃:先把宿舍交换机到上级的那根网线接自己电脑上试一下,如果还是显示 100Mbps——别折腾了,认了吧,双拨够了。这在玉泉很常见。

多拨并不能加速单个连接。因此,在测速时需要进行多连接测试。可以使用 speedtest.net,或者直接进行 BT 下载。

安装 OpenWrt 及相关依赖 刷入 OpenWrt 固件

首先,确保你的路由器支持刷写 OpenWrt 固件。可以在此列表中查找你的路由器。

注1:大多数市售路由器需要先刷 breed 这个第三方 BootLoader 再刷写系统。可以直接在 breed 支持列表中看看有没有自己的路由器,有的话可以在恩山论坛搜索对应路由器刷 breed 的教程。

注2:建议使用最新的原版 OpenWrt 而非 Lean 的 LEDE 版本。这些版本来源不一,有的会遇到 IPv6 支持问题和 MWAN3 版本问题,不推荐使用。

找到自己的路由器后,从 Firmware OpenWrt Install URL 下载最新稳定版固件,并利用 breed 刷入固件。之后,登入 OpenWrt 的 LuCI Web 界面并修改密码。

安装依赖

由于浙大镜像源支持 OpenWrt,安装依赖的过程只需内网连接,相当简单。

确保路由器的 WAN 口已连接,网络-接口的 WAN 处已获取到校园网 10.0.0.0/8 端的内网 IP。

SSH 连接路由器:

ssh [email protected]

替换镜像源为浙大源:

sed -i 's_https\?://downloads.openwrt.org_http://mirrors.zju.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

安装依赖:

opkg update && opkg install nano kmod-macvlan mwan3 luci-app-mwan3 luci-i18n-mwan3-zh-cn python3 python3-pip

重启路由器:

reboot

配置 MacVLAN 接口

默认情况下,网络-接口中有 LAN、WAN、WAN6 三个接口。关于 IPv6 配置的部分不再展开,有需要的同学可以在论坛自行搜索。

根据上面介绍的网页认证的实现方式可知:单个接口具有一个 MAC,可以通过 DHCP 获取一个 IPv4 地址,完成此接口的网页认证。如果需要多拨,则需要多个网络接口,此时仅仅一个 WAN 是不够的。

一种简单的想法是将 br-lan 网桥中用做 LAN 的接口拿出,配置为新的 WAN 口,从而拿到更多 IP 地址。问题在于这需要从上级交换机连接多根网线,非常不便。何况路由器的网卡是有限的,可能不够使用。

利用 MacVLAN 技术,可以很方便的解决这个问题。关于 MacVLAN 的详细介绍可以参考这篇文章。简单地讲,MacVLAN 技术可以在单个物理网卡上虚拟出多个 MAC 地址不同的虚拟网卡。当物理网卡收到数据包后,会根据目的 MAC 地址判断这个包属于哪一个虚拟网卡。因此,创建多个 MacVLAN 虚拟网卡,即可从 DHCP 服务器获取多个 IP 地址。具体的配置方法如下:

点击网络-接口,查看 WAN 对应的网卡名称,如 eth0。

点击设备选项卡,根据想要多拨的次数添加 MacVLAN 设备。例如,想要双拨,则添加两个 MacVLAN 设备。

添加设备时,设备类型选 MAC VLAN,基设备填 WAN 对应的设备(本例中为 eth0),模式 VEPA,MAC 地址填写一个不与原设备重复的 MAC 地址(可以简单地修改最后一位)。其他不填即可。

全部添加完成后,点击保存并应用。确保原设备 eth0 与新添加的所有 MacVLAN 设备的 MAC 地址互不重复。

回到接口选项卡,添加新接口,个数与刚刚添加的 MacVLAN 数相同。

名称可填 WAN22/WAN33/WAN44 等等,确保不重复即可。协议选择 DHCP 客户端,设备选择刚刚添加的 MacVLAN 设备。

注意:每个接口都需要填写跃点数。在编辑-高级设备-使用网关跃点中填写。这个值无所谓,互不重复即可。可以填名称中的数字:22/33/44。

所有接口创建完成后,点击保存并应用。之后检查每个接口的状态。每个接口都应获取到互不重复的 IPv4 地址。

配置 MWAN3

MWAN3 可以实现负载均衡,配置方法如下:

点击网络-MultiWAN 管理器-接口。首先删除所有原有的接口。然后在下方输入刚刚添加的 MacVLAN 接口的名称,点击添加。在弹出的窗口中勾选已启用,跟踪的主机或 IP 地址填百度的 IP 地址 110.242.68.66,其他默认既可。点击保存。重复此过程,直到所有的 MacVLAN 接口都已添加。

点击成员选项卡。首先删除所有原有的成员,然后在下方输入 web1/web2/web3 之类的名称,点击添加。接口选择上一步中的接口,跃点数和 Weight 都填 1(除非每个接口的带宽不同,此时按比例填写 Weight)。点击保存。重复此过程,直到所有的口都已添加。

点击策略选项卡,删除原有策略,只保留 balanced 策略。将 balanced 策略的成员选择为上一步中添加的成员。点击保存。

点击规则选项卡,删除原有规则,只保留 default_rule_v4 和 default_rule_v6。将 default_rule_v4 的策略选择为 balanced,default_rule_v6 的策略选择为 default。点击保存并应用。

配置网页认证脚本

虽然 MWAN3 配置完成,但此时一定无法访问公网,因为还未进行网页认证。由于此时的 IPv4 流量会被随机分配给某个 MacVLAN 接口,我们只能不断设置到 net.zju.edu.cn 的静态路由,手动完成网页认证,过于麻烦。因此,需要编写一个脚本,自动完成网页认证。

MWAN3 的通知功能可以在接口失败时运行用户自定义的脚本。因此,可以利用这个功能,当某个接口连网失败时,自动在这个接口进行网页认证。登录脚本由田发呆同学的新ZJUWLAN登录脚本修改得来。

下载地址,访问密码:cc98

配置方法如下:

更换 Python3 源:

pip config set global.index-url https://mirrors.zju.edu.cn/pypi/web/simple

安装 requests 模块:

pip install requests

修改脚本:

脚本中此处需要进行修改:

1 2 3 4 5 6 if __name__ == '__main__': if action == "disconnected" and device.find("eth0mac") != -1: global username, password username = "xxxxxxxxxx" password = "xxxxxxxxxx"

将 eth0mac 修改为刚刚添加的所有 MacVLAN 设备名称的共同部分。将 username 和 password 修改为自己的账号密码。

如果有多个账号,可以多添加一些逻辑,根据 device 名称使用不同的账号密码。

将脚本复制到 /root 路径下:

cd /root && nano mwan3.py

之后粘贴脚本内容,然后 Ctrl+O,回车保存。

测试是否能利用脚本完成认证:

python3 mwan3.py wan1 eth0mac0 disconnected

如显示成功,则说明脚本配置无误。修改 eth0mac0,完成所有 MacVLAN 接口的网页认证。

点击网络-MultiWAN 管理器-通知。在输入框最后一行添加:

/usr/bin/python3 /root/mwan3.py $INTERFACE $DEVICE $ACTION

之后保存并应用。

此后,断开连接后会 MWAN3 会自动运行脚本,重新完成网页认证。

配置静态路由分流内网流量

完成上述步骤后,所有的 IPv4 流量都会被分配给 MacVLAN 接口,而这些接口已被限速。因此,访问内网的单连接速度也随之降低。

不过,原接口 WAN 未完成网页认证,未被限速。通过静态路由将 10.0.0.0/8 的流量分配给 WAN,即可避免访问内网时被限速。

注:静态路由规则优先级高于 MWAN3。

配置方法如下:

点击状态-概览,找到 WAN 对应设备的网关地址。

点击网络-路由-静态 IPv4 路由。点击添加,接口选择 WAN,目标填写 10.0.0.0/8,网关填写刚刚记录的网关。保存并应用。

指南到此结束。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭