使用 minieap 实现路由器锐捷认证上网
学校的校园网需要通过锐捷认证才能上网,这样的话我的一些智能家具就无法联网了,于是想通过路由器进行认证上网。当然了锐捷官方是不提供路由器端的认证客户端的,所以我们要找一个路由器可以运行的认证程序。目前比较主流的是 @updateing 开发的 MiniEAP 项目,这篇文章将编译该项目的一个分支并通过它实现路由器的锐捷认证上网。
编译并安装 openwrt-minieap
建议使用 Ubuntu 22.04 进行编译。
-
安装依赖(我也不太清楚是不是必须,不过之前编译 OpenWrt 的时候安装了这些依赖。你可以先跳过,如果出现依赖报错再回来安装这些):
sudo apt update -y sudo apt full-upgrade -y sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ bzip2 ccache clang cmake cpio curl device-tree-compiler ecj fastjar flex gawk gettext gcc-multilib \ g++-multilib git gnutls-dev gperf haveged help2man intltool lib32gcc-s1 libc6-dev-i386 libelf-dev \ libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5 \ libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lld llvm lrzsz mkisofs msmtp \ nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip python3-ply \ python3-docutils python3-pyelftools qemu-utils re2c rsync scons squashfs-tools subversion swig \ texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev zstd
-
下载适用于你的路由器的 OpenWrt SDK。
在 Firmware Selector 上搜索你的路由器型号,然后点击链接处的文件夹图标进入下载服务器。
拉到最下面,找到
openwrt-sdk-xxx
,点击下载。 -
解压并进入 SDK 目录,然后克隆
openwrt-minieap
项目。openwrt-minieap
是minieap
的 OpenWrt 适配版。需要注意的是不同学校的认证算法有所不同,你需要找到适配了自己学校认证算法的分支项目(如果要自己修改的话,方法是替换minieap
项目中的packet_plugin/rjv3/rjv3_hashes/checkV4.c
文件)。这里我使用的是 @KumaTea 的 openwrt-minieap 分支。git clone https://github.com/KumaTea/openwrt-minieap package/minieap
-
配置编译选项:
make menuconfig
在菜单中打开
Network
选项:选中
minieap
作为模块(显示为M
)编译。保存并退出编译菜单:
-
编译:
make package/minieap/compile V=s
在
bin/packages/your_arch/base
目录下可以找到编译产物minieap_xxx.ipk
。 -
打开路由器配置页面,在
系统
>软件包
菜单下上传并安装软件包: -
SSH 登录路由器,启动 minieap:
minieap -u <your_username> -p <your_password> -n wan --module rjv3 -w
这里
-n
选项要设置成路由器的网络接口中wan
网络下的物理接口名。我的wan
网络下的物理接口就叫wan
,因此设置选项-n wan
。
编译并安装 luci-app-minieap
luci-app-minieap 是 MiniEAP 的 LuCI 界面,安装之后可以直接在 OpenWrt 配置页面管理 MiniEAP 的配置:
编译过程和 openwrt-minieap
类似,这里略过。
附:主要项目分支
-
2009 年,华中科技大学的学生开发了 MentoHUST,这是我目前找到的最早的开源 EAP 认证客户端,该项目已于 2011 年停止更新。后来本校学生接手了这个项目,发布了新版的 MentoHUST,这个项目于 2016 年停止更新。后来有人在新版 MentoHUST 的基础上开发了 MiniEAP,其相对于 MentoHUST 有着更少的内存占用。该项目最后一次更新是在 2023 年,不确定是否会持续更新。
-
可以编写 Makefile 以将 MiniEAP 编译为
.ipk
包,具体可以参考 openwrt-minieap 项目。 -
关于锐捷认证的具体过程,集美大学的学生写了一篇论文:锐捷认证过程分析与第三方锐捷认证客户端的设计与实现
-
前人开发的
minieap
的认证流程不太适合我的学校,因此我又进行了修改,并将修改过程记录在博客修改 MiniEAP 中。