南邮校园网单线多拨教程
本文最后更新于 496 天前,其中的信息可能已经有所发展或是发生改变。
在2023年2月后验证服务器加入了新的验证规则,按照下面的方法配置之后大部分时间只能登录一个账户。该问题目前没有比较好的解决办法,如果你有想法,欢迎下方评论区交流。

前言

最近拿到了一个不限时的校园网账号,但是测试下来发现速度有点感人,只有40Mbps,虽然日常使用肯定是没问题了,但是我怎么能忍受我宽带低于100Mbps呢?于是我开始研究了单线多拨,然后发现它能解决的不只是网速太慢的问题。下面是我觉得配置单线多拨的好处:

  1. 提升网速 我自己的校园网账号是限速100Mbps,单个账号允许同时登录三台设备,也就是说如果我在路由器上多拨三次,理论上就能把网速提升至300Mbps。
  2. 自动切换 我自己的校园网账号是到了晚上就会断网,但是只要同时配置了不断网的账号,那么断网之后就会自动把全部的流量切换到不断网的账号上,实现全天不断网的功能。

总结一下就是说,配置单线多拨之后白天没断网的时间中,网速是所有账号的宽带的上限总和(理论上),到了晚上断网的时候就会自动把流量切换到不断网账号上,如果你有多个不断网账号的话那也同时是能叠加带宽的。

准备

  • 一台刷了OpenWRT的路由器

我这边就还是我们熟悉的机器,红米AC2100,它的刷机教程可以看我之前的文章,这里就再次略过。另外,也不一定是要OpenWRT的固件,我这里就以OpenWRT为例,其他固件的理论步骤都是一样的。

  • 一根千兆的网线

网速超过100M之后就需要千兆的网线和千兆路由器才能继续提升网速了;查询路由器是否支持的话可以直接百度搜索路由器的参数;看网线是否支持的话可以把OpenWrt安装好之后在 网络 -> 交换机 内查看WAN的速率。

打开上面的链接,然后在Assets中下载NJUPT-AutoLogin.sh到电脑上

安装软件

如果你的固件里面已经安装了均衡负载(管理后台 -> 网络 -> 均衡负载),那么这一节安装的两个软件都可以跳过了。

Macvlan

macvlan 是Linux 内核3.0 版本引入的一种虚拟网卡,它让用户可以在一块物理网卡上,再创建若干个依附于它的虚拟网卡,这些网卡拥有不同的MAC 地址,如此就完成了网卡的虚拟化。 

首先连接上路由器的SSH

然后依次输入命令

opkg update
opkg install kmod-macvlan

MWAN3

OpenWrt上的MWAN3可以支持多根网线或者多个PPPOE账号的同时拨号使用和负载均衡,并且还可以通过Ping方式来检测中断线路并自动屏蔽中断线路,更厉害的是还支持通过IP、端口、甚至配合dnsmasq使用的域名来进行智能的多线路分流。

SSH上执行命令

opkg install mwan3 luci-app-mwan3

如果你的源没问题的那应该安装好了,可以跳下一节了;但是如果install的时候提示找不到软件包,那就需要手动安装一下软件了,继续往下看。

保险起见,我这里就不叫大家修改源了,直接自己下载包来自己安装。

首先进入路由器的管理网页,然后打开系统 -> 软件包 -> 配置 -> 发行版软件源

然后记录下上面URL中的平台型号,比如我这里有一行是

src/gz openwrt_base https://mirrors.cloud.tencent.com/lede/snapshots/packages/mipsel_24kc/base

那么我这个路由器的型号就是mipsel_24kc

然后替换掉下面链接中的<型号>,然后在浏览器内打开

https://downloads.openwrt.org/releases/packages-18.06/<型号>/luci/

比如我这里就需要在浏览器内打开https://downloads.openwrt.org/releases/packages-18.06/mips_24kc/luci/

然后在网页内搜索mwan3,然后找到luci-app-mwan3_git-xxxxx.ipkluci-i18n-mwan3-zh-cn_git-xxxxx.ipk,然后点击下载这两个包。

然后通过WinSCP上传到路由器上

最后,在SSH上输入命令(把下面的两个包名换成刚刚上传的两个文件的文件名)

opkg install luci-app-mwan3_git-xxxxx.ipk
opkg install luci-i18n-mwan3-zh-cn_git-xxxxx.ipk

添加虚拟网卡

首先进入路由器后台,打开网络 -> 接口,记录下WAN口使用的网卡

比如我这里是eth0.2,然后关闭WAN口开机自动运行选项(你也可以选择直接删除WAN这个接口,但是不推荐这样做)

然后SSH中输入命令,创建并启用虚拟网卡(下面的eth0.2请根据实际情况修改)

ip link add link eth0.2 name veth0 type macvlan
ifconfig veth0 up

然后输入

ifconfig

查看里面的返回内容是否存在veth0,如果存在就说明创建成功了;但是这样的创建是暂时的,重启之后就会失效,所以我们需要修改一下/etc/config/network(下面的eth0.2同样需要按照实际情况修改)

vi /etc/config/network

# 在文件末尾添加
config device 'veth0'
        option name 'veth0'
        option ifname 'eth0.2'
        option type 'macvlan'

然后保存文件。

创建接口

网络 -> 接口 -> 添加新接口新接口的名称vwan1协议DHCP客户端接口选刚刚创建的veth0(如果没有的话就手动输入veth0),创建完成之后在vwan1的基本设置中修改一下请求 DHCP 时发送的主机名(建议使用不会重复的名字),高级设置中设置使用网关跃点,值为随意的数字,然后防火墙设置中勾选wan

其他的保持默认,保存&应用。然后回到主页查看vwan1是否获取到了IP地址。

添加更多虚拟网卡和接口

最后重复上面的“添加虚拟网卡”和“创建接口”两个步骤,添加更多的虚拟网卡和接口,如果你打算连接两个账号的话就再创建一个,三个就再创建两个……

需要注意的是,每个创建的接口的请求 DHCP 时发送的主机名使用网关跃点不能相同,比如上面我填写了NuoTian_AC2100和10,那么接下来我就需要填写NuoTian_AC2100_2和20、NuoTian_AC2100_3和30……

我这边添加了两个会断网的账号和一个不会断网的账号,所以我创建了三个虚拟网卡和接口

如果创建的几个接口全都获取到了IP地址,那么就能进行下一步了。

均衡负载

通过上面的步骤,我们成功获取到了三个IP地址,但是这样还仅仅只是获取到了IP而已,接下来配置的均衡负载才是重头戏,通过均衡负载才会让流量走不同的网口。

接下来的内容请多多思考一下自己的想要的效果是什么,然后根据自己的实际情况进行配置,不需要完全按照我设置的那样配置。

接口设置

打开管理后台,网络 -> 均衡负载,然后把接口 成员 策略 规则里面的东西全都删了,然后添加一个名叫vwan1接口(这个名字需要与上一步在网络 -> 接口中添加的接口名字相同),然后修改跟踪的主机或 IP 地址223.5.5.5,其他选项保持默认就行,保存

跟踪的主机或 IP 地址的意思是mwan会不断ping这个地址来判断这个接口是否能连接网络,而223.5.5.5是阿里云的公共DNS,亲测这个地址不登录是不能ping通的。(114的DNS地址和Google的8.8.8.8在断网的时候也能ping通)

之后就需要再添加其他的几个接口了,里面的配置都一样,我就不多说了,最后的结果如下。需要注意但是如果里面的跃点数有任何一个是 - 的话都需要到网络 -> 接口中设置好网关跃点之后才能继续下一步。

成员设置

然后再添加成员,成员的名称建议用“接口_跃点数_权重”的格式,方便之后的配置分辨。跃点数越小,这个接口就会被优先使用,只有当更小跃点数的接口都不能访问网络的时候才会使用比较大的跃点数的接口。

请一定仔细考虑比重的设置,因为这会直接影响后面测速的结果。

相同跃点数的接口通过比重分配通过的流量大小,如果比重设置不合理将会导致速度无法叠加甚至比单个账号速度还慢;我的建议是直接设置成这个账号的最大速率,比如我一个账号能跑100Mbps,那么比重就是10;另一个账号能跑40Mbps,那么比重就是4。

我这边创建了这几个成员,大家按照情况设置就行。(我的情况是vwan1是不断网但网速慢的,vwan2、3是会断网但网速快的,下面图片里面的比重设置并不合理)

策略设置

添加一个名叫night_balanced策略,成员选这几个。(因为vwan1网速慢,所以这里跃点数给了2)

规则设置

添加一个名叫default_rule_v4规则源地址目标地址都输入0.0.0.0/0分配的策略选上一步创建的night_balanced

到这里,均衡负载的配置就完成了,之后大家理解了各个设置的作用之后就能根据自己的需求进行修改了。

确认状态

还是管理后台,状态 -> 均衡负载,点开就能看到各个接口的状态,如果上面的配置没有问题的话那么刚刚添加的几个接口的状态应该都是离线(因为还没登录校园网),接下来就需要用脚本来自动登录校园网了。如果Status里面显示的是已禁用,那么就需要点开旁边的详细,看看里面提示的错误是什么。(如果是错误15的话可以暂时不用管,继续往下看)

配置自动登录

把最开始的准备阶段下载的NJUPT-AutoLogin.sh脚本上传到路由器上,并记下文件的路径,比如我这里是/root/

然后还是在管理后台上打开系统 -> 计划任务,然后在里面添加账户信息

对于不断网的账号是(veth0请修改成在上面创建的虚拟网口的名称)

*/5 * * * * sh /root/NJUPT-AutoLogin.sh -e veth0 -i 运营商 -d 账号 密码

对于会断网的账号添加

*/5 * * * * sh /root/NJUPT-AutoLogin.sh -e veth0 -i 运营商 -l -d 账号 密码

说明:

  • 运营商 校园网是njupt,电信是ctcc,移动是cmcc
  • 密码 建议使用” “将密码括起来,避免出现奇怪的错误

其他参数的含义我就不多说了,想了解的可以自己看看Github上的介绍;之前创建了多少个虚拟网卡,这里就需要添加多少行内容,这里账号也可以使用同一个账号,但是需要注意每个账号是有连接数的限制的,超过限制之后其他设备就用不了这个账号了。

我添加了三个虚拟网卡,所以这里需要添加三行。

配置完成

最后,打开状态 -> 均衡负载,查看接口状态状态,如果是在线的话那么配置就完成了,可以跑一下测速看看效果了。

如果还是显示已禁用,并且详细内的错误码是15,那么就在SSH中输入命令

mwan3 restart

等待mwan3重启之后,就应该正常了。

最后的最后,附上我的测速结果

进阶配置

直接访问内网

如果你有一个账号是校园网的(即不是电信或者移动的账号),那么我们通过配置可以让内网的流量直接走这个账号,这样就免去了需要手动连接到NJUPT网络上才能访问内网的麻烦。

首先编辑一下/etc/dnsmasq.conf文件,并在底部添加(第二行的xxxxx请自行更换成需要在内网访问的域名或IP地址;第一行将会匹配njupt.edu.cn的二级域名)

ipset=/.njupt.edu.cn/njupt
ipset=/xxxxx/njupt

然后保存,再输入下面的命令检查一下刚刚修改的东西有没有问题

dnsmasq --test

提示ok之后,打开管理后台,网络 -> 均衡负载 -> 策略,添加一条名为vwan1_only的策略(我这里vwan1绑定的校园网账号),成员只选择vwan1保存

然后切换到规则,添加一条名叫intranet_rule_v4的规则,然后IPset输入njupt分配的策略vwan_only,其他的不变,保存,然后把这条刚刚添加的规则放在第一位,保存&应用

接下来就能测试一下能不能访问内网了。

参考文章

评论

  1. Mr.Snake
    2 年前
    2022-9-08 19:00:35

    这个多拨后速度反而下降了是因为什么呀?我有一个电信的之前能跑到300Mbps,现在几个加起来只有100Mbps

    • Avatar photo
      博主
      Mr.Snake
      2 年前
      2022-9-24 23:52:14

      那就有可能是你均衡负载的成员或者策略设置不合理导致流量没有正确分配

  2. 一位不愿意透露姓名的南邮同学
    已编辑
    2 年前
    2023-3-01 20:02:59

    .

  3. 2 年前
    2023-3-12 13:40:56

    你好,我在2月的时候根据您的文章部署了
    2个账号的限速总和是140M,但是在宿舍实测多线程测速也只能100M
    想了解是发生了什么变化吗?
    而且我在教室通过WiFi接入校园网,周末测速可以到200M,很神奇

    • Avatar photo
      博主
      沉然
      2 年前
      2023-3-12 13:45:32

      你在测速的同时打开路由器后台的实时监控,检查一下流量是否走了两个虚拟网卡呢?

  4. qy
    3 月前
    2024-10-02 17:25:08

    原来是学长

    • Avatar photo
      博主
      qy
      3 月前
      2024-10-02 17:30:28

      (*´ω`)人(´ω`*)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇