概述
该文章主要用于描述使用 OpenWRT 连接,成都工业职业技术学院(东校区)校园网的一个方案。使用该方案的目的是为了让寝室内部拥有一个能够自由调配的内网环境以及稳定的科学上网功能。
这篇教程将提供两种使用方式的教程:
-
仅使用一个校园网账号通过路由器认证上网,不需要多账号认证并实现负载均衡。
-
多个校园网账号认证上网,并实现负载均衡。负载均衡并不能叠加上网带宽,只有在多连接通信情况下才能够体验到负载均衡带来的带宽提升。
使用 Linux 内核的 macvlan 功能,创建多个二层虚拟接口,每个接口通过 dhcp 获取 IP,然后通过认证脚本认证上网。使用 MWAN3 插件,实现多 wan 口负载均衡。并使用 watchcat 插件实现联网状态维持。
接下来请根据个人情况点击跳转,需要注意的是无论你选择何种方式,都请先完成必做章节的内容:
多用户负载均衡测速:
代理上网Youtube播放8K视频测速:
必做
单用户上网
单用户上网其实完成必做菜单中的内容,就足够了。但是每一次校园网断开连接(断开连接的情况有很多),都需要使用SSH登录进OpenWrt执行认证脚本,这样未免跳过麻烦,所以我们使用Watchcat来进行网络检测。
多用户上网
多用户上网,即创建多个虚拟接口,然后使用MWAN3插件,使多个虚拟接口对上网流量进行负载均衡操作。
- 创建虚拟接口
- 安装MWAN3,通过命令
opkg install luci-i18n-mwan3-zh-cn
- 为每个接口配置认证上网执行脚本,创建多个上网执行脚本,修改其中指定参数。
- 将上网执行脚本与Watchcat绑定
- MWAN3教程
创建虚拟接口
我们使用 macvlan 类型的虚拟网卡,然后需要关闭 ipv6,自定义网卡 MAC,并使用 vepa 模式,开启混杂。
macvlan 可能有些系统中不自带,可使用安装包安装和包管理器安装等两种方式,这里只演示包管理器安装:
opkg install kmod-macvlan
两种方式:
- 使用Web管理接口创建(高版本OpenWrt)
- 使用命令行创建(低版本OpenWrt)
参数描述:
- 基设备:该接口应该为 OpenWrt 连接校园有线网的接口,一般为 wan 口默认绑定的接口,大家习惯将 eth0,也就是第一个网口作为 wan 口默认接口。
- 设备名:我们创建的接口为 macvlan 虚拟接口,一般建议的标准命名为
物理接口mac序号
,也就是说,当我绑在在 eth0 物理口上的第一个 macvlan 接口,那么命名为eth0mac0
- MAC地址 macaddr:虚拟地址建议采用物理接口 mac 地址+1 的方式。例如,在 OpenWrt 上有两个物理接口,它们的物理地址分别为
0a:c5:33:e0:13:85
,0a:c5:33:e0:13:86
,那么我们创建的第一个 macvlan 虚拟接口的 mac 地址应该为0a:c5:33:e0:13:87
,后续创建的接口,使用的 macaddr 以此类推。 - 其它:其它的配置选项,不做阐述。
使用Web管理界面创建虚拟网卡
使用UCI创建虚拟网卡
uci add network device
uci set network.@device[-1].ifname='基设备'
uci set network.@device[-1].name='设备名'
uci set network.@device[-1].type='macvlan'
uci set network.@device[-1].ipv6='0'
uci set network.@device[-1].mode='vepa'
uci set network.@device[-1].macaddr='0a:c5:33:e0:13:87'
uci set network.@deivce[-1].promisc='1'
uci commit network
service network restart
创建网络接口
网卡设备(物理网卡和虚拟网卡),在OpenWrt中并不能直接使用。遵循OpenWrt的规则,我们需要创建一个网络接口配置项。
这个比较简单,直接在网络->接口->接口->添加新的接口即可。
- 名称:建议使用wan开头,第一个虚拟网卡使用
wan
,第二个使用wan1
,以此类推 - 协议:请使用dhcp客户端
- 设备:选择刚才创建的虚拟网卡
新建网络接口后,点击编辑,然后选择高级设置,调整该接口的网关跃点。网关跃点的值设置的越大,该网卡的上网优先级就越低。即使你要是用MwAN3进行负载均衡,你也要配置该选项。
之后点到该接口的防火墙选项,将该接口分配给WAN
区域。
如果你需要使用两条或以上的虚拟网络接口的话,那么请参照以上步骤(创建虚拟接口和创建网络接口),修改指定参数,再操作一遍。
软硬件推荐
在这里,我推荐使用 Friendly NanoPi R2S Plus。
若你不想看硬件推荐,你可以直接跳转到:
Firendly 淘宝官方店铺如下:
R2S和R2S Plus价格如下:
两款均为 32GB 配置
R2S:不自带存储卡,所以需额外购买,图中价格为 32GB 卡+R2S 整机价格
R2S Plus: 自带 eMMC 32G 存储卡,无需额外购买。图中价格为 R2S Plus 整机(无线网卡和无线射频器)
这里建议购买 R2S Plus,不要一味的只看价格,R2S Plus 自带有无线功能,无需再额外购买无线路由器。
R2S和R2S Plus硬件配置如下:
基本使用
在软路由刚到手的时候,我们有几个要做的操作
- 在软路由通电后,我们使用网线连接电脑和软路由的 LAN 口。这个使用我们应该能够通过软路由的 DHCP 服务器分配到 IP 地址。
- 通过网关地址确定软路由的地址。
- 通过 SSH 登录软路由(若为上文推荐软路由,默认密码为
password
,若为第三方固件,请自行查询)。 - 通过 Web 管理页面登录软路由(Web 管理页面一般为http://软路由IP)
- 配置 WAN 口,通过认证脚本使 OpenWrt 能够访问 Internet
SSH使用教程
在你的 Windows 电脑上使用Win+R
打开运行框->输入cmd
进入命令行终端->使用命令ssh root@网关地址
登录 OpenWrt。
第一次登录会提示是否保存设备主机密钥,输入yes
并回车即可。确认后输入命令后会提示输入密码(默认密码为password),输入过程不可见。
使用命令
passwd
可修改密码
Web使用教程
打开你的浏览器,在地址栏输入 http://网关地址
,即可进入 Web 管理页面。
- 账号:root
- 密码:password
Wacthcat
安装WatchCat
watchcat 是一个 ping 看门狗工具,可以让你制定规则。当ping失败时将按照你配置的规则进行操作。
可以使用的规则如下:
- Ping 重启:当ping指定的主机失败时,重启OpenWrt设备。
- 重启接口:基于指定的接口去ping,当失败时,重启网络接口。
- 定时重启:在指定的时间间隔后重启该设备。
- 执行脚本:基于指定的接口去ping,当失败时,执行脚本。
watchcat 工具是Linux上都有的软件,都能够通过包管理器进行安装,OpenWrt 只是使用了一个前端,用以简化操作门槛。
安装方式(软件包名 luci-i18n-watchcat-zh-cn
watchcat
):
- 安装包安装
- 优点:无需联网
- 缺点:需要自己下载相关依赖
- 联网安装
- 优点:无需手动下载相关依赖
- 缺点:需要联网
安装包安装需要自行去软件库下载安装包,你可以通过如下指令,获取当前OpenWrt的软件库URL,进入软件库后使用CTRL+F
打开搜索功能,搜索软件包即可。
echo "https://archive.openwrt.org/releases/$(grep '^VERSION_ID=' /etc/os-release | cut -d'=' -f2 | tr -d '\"')/packages/aarch64_generic/"
联网安装在命令行输入如下命令,即可安装:
opkg install luci-i18n-watchcat-zh-cn
使用Watchcat
找到 服务->watchcat
将原本的存在的脚本删除->点击添加
内容描述:
- 模式:执行脚本
- 要执行的脚本:填写上网执行脚本的路径
- 周期:执行了检测后,多久没有收到回复则自行脚本
- 要检查的主机:可以配置为能够 ping 通的 IP 地址
- Ping 主机的地址簇:ipv4
- 检查间隔:多久 Ping 一次
- ping 包大小:默认即可
- 接口:请选择该脚本对应的虚拟机接口
若后续需要添加新的断网重连接口,依此配置即可
返回必做菜单
认证脚本
脚本的功能如下:
- 通过指定网卡、用户名以及密码,认证上网
- 网卡在线检测
- 日志记录功能(日志将以
网卡名.log
的形式存储在/var/log/cise
路径下)
相关文件:
- auth.sh:该文件为认证脚本源码文件
- 执行脚本.sh:执行脚本的名称可以任意更改,执行脚本主要用于精简认证命令。因为认证脚本需要提供三个较长参数,可以通过写入一个
bash
文件中,直接执行bash
脚本即可。
创建认证脚本文件
将以下认证脚本内容复制并粘贴至OpenWrt中:
git clone https://hub.xoneki.cn/shawing/cise.git
创建执行脚本
如果你是使用多用户的情况下,读到这里就已经足够了,后续会在多用户章节向你描述。若你是使用单用户,那么请继续查看。
echo "/root/认证脚本名.sh" | xargs -I {} bash -c 'echo "/root/auth.sh nic=网卡名 username=认证账户 password=密码" > "{}" && chmod +x "{}"'
上文中,认证脚本名为 webauth.sh。网卡名请改为物理接口名,例如 eth0或eth1
你需要修改其中汉字的占位符的内容为你实际的内容,请勿直接复制粘贴。
注意事项
若你的科学上网使用的OpenClash
,那么在多账户负载均衡的环境下,你的OpenClash可能会很不稳定。
- 频繁掉线
- 连接中断
- 代理设备爆满等问题
以上的问题都是因为MWAN3负载均衡导致的,当我们使用OpenClash时,我们需要将一个接口从MWAN3
的负载均衡中释放出来,并通过OpenClash->插件设置->流量控制->WAN接口名称 的配置选项,指定单独的接口,专门用以代理上网使用。
免责声明
该文章的所有操作均没有涉及到任何团体的利益,认证脚本也并非绕过校园网认证,只是简单的使用脚本替代人工点击。在使用中仍然需要自行办理校园网,用以获取上网权限。文中所有的软件、固件、内容等,均为 OpenWrt 官方文档理解整合。推荐使用的硬件,没有收取任何费用,只是目前只在该硬件上测试,避免出现不可预测的问题而推荐使用。
在使用过程中有任何问题,可以通过 Email xiaosir2022@gmail.com 与我联系。
感谢你的阅读
引用资料:
NanoPi R2S Plus(友善 R2S Plus): https://wiki.friendlyelec.com/wiki/index.php/NanoPi_R2S_Plus/zh
MWAN3 - MultiWAN(负载均衡):https://openwrt.org/docs/guide-user/network/wan/multiwan/mwan3
WatchCat - Network WatchDog(网络看门狗): https://openwrt.org/docs/guide-user/advanced/watchcat
UCI - Unified Configuration Interface(统一管理接口):https://openwrt.org/docs/guide-user/base-system/uci
Network Configuration(网络配置):https://openwrt.org/docs/guide-user/network/network_configuration