关于OpenWrt路由器及哆点Drcom校园网WEB自动登录
前言
最近买了新华三NX30Pro路由器(下文简称”华三”),我的需求就是千兆、能刷OpenWrt进行二次开发,WIFI6这些。而华三满足这些,且价格合适,所以就入手了。这里记录一下路由器的一些配置和使用。
哆点Drcom校园网认证系统为广州热点软件科技股份有限公司研发,若你的校园网登录界面有本计费系统由广州热点软件科技股份有限公司提供字样,那么你可以参考这篇文章。
目前已知使用此系统大学:
- 中国矿业大学
准备工作
需要:
硬件:
新华三NX30Pro路由器、两条网线、可插网线的电脑
旧路由器(可选)
- 如果旧路由器工作正常。网线 1 一端连接 旧路由器 的 LAN 口,对端连接 华三 的 WAN 口;网线 2 一端连接 华三 的 LAN 口,对端连接电脑的网口
- 如果旧路由器无法工作。网线 1 一端连接 华三 的 WAN 口,对端连接宽带;网线 2 一端连接 华三 的 LAN 口,对端连接电脑的网口
软件:
PuTTY(用于SSH连接)、浏览器(推荐使用Firefox、Chrome、Edge)、TFTP工具(用于刷写固件)
启用电脑的 Telnet 服务:
在Windows上启用Telnet服务,你可以按照以下步骤操作:- 打开“控制面板”。
- 点击“程序”。
- 在“程序和功能”部分点击“打开或关闭Windows功能”。
- 在弹出的窗口中,找到并勾选“Telnet客户端”。
- 点击“确定”按钮。
PS:启用Telnet服务后,你可以使用Windows的Telnet客户端连接到路由器。但是,请注意,Telnet协议不安全,所有的内容都是明文传输,包括你的密码。因此,建议只在安全的内部网络中使用Telnet,或者使用更安全的替代品,如SSH。
待刷写镜像及工具的下载:
文件名 | 描述 | 下载 |
---|---|---|
openwrt-*-preloader.bin | BL2 | 页面 |
OpenWrt-*-bl31-uboot.fip | FIP | 同上 |
OpenWrt-*-initramfs-recovery.itb | initramfs 镜像 | 同上 |
OpenWrt-*-squashfs-sysupgrade.itb | Sysupgrade 镜像 | 同上 |
Tftpd64-4.64-setup.exe | TFTP 工具安装包 | 链接 |
PuTTY | SSH 客户端 | 链接 |
⚠️ 为了避免无线局域网的干扰,可以暂时将电脑的无线网络断开。
刷OpenWrt
到手之后简单看了一下原厂固件。发现并不能满足我校园网自动登录的需求,所以就决定刷OpenWrt。
按照Eric的文章一步一步来,最终成功刷入。
PS:刷入的时候还是需要网络的,可以留着之前的路由器,然后分出一个lan口插入华三的wan口,这样既可以配置也可以联网。还有就是我没有刷入主题,这部分应该是无关紧要,各位自行判断。
配置校园网自动登录
我们的校园网是需要登录的,而OpenWrt默认并没有这个功能。所以需要自己写一个脚本来实现。
1. 抓取curl登录请求
(这一步我已经帮你干完了,不感兴趣的话可以直接往下划到编写登陆脚本)
首先抓取登录页面的form
表单,然后用curl
发送post
请求,最后检查是否登录成功。
以Firefox为例
- 打开Firefox,打开校园网登录界面,按
F12
打开开发者工具,切换到网络
选项卡,然后输入账号密码登陆校园网。
- 打开Firefox,打开校园网登录界面,按
- 在
网络
选项卡中找到login
请求
- 通过
响应
找到含有认证成功
的内容,回到消息头
,右键点击,选择复制
,然后选择复制为cURL(bash)
。
- 通过
- 筛选
消息头
,找到含有你的账号密码的内容,并复制。
- 筛选
- 在
2. 编写登录脚本
首先,我们需要在路由器上安装curl
,这个工具是用来发送请求的。
用PuTTY连接到路由器,然后输入以下命令安装curl
:
1 | opkg update |
我们需要写一个自动登录的脚本。
创建一个文件夹
1 | mkdir /root/auto_login |
然后输入以下内容,注意修改账号密码,请按照实际情况自行测试:
1 |
|
接下来给脚本运行权限:
1 | chmod +x login.sh |
然后我们可以先注销,再手动运行一下脚本,看看是否能够成功登录:
1 | ./login.sh |
若是出现认证成功
及其类似字样,则说明登录成功。
至此,一个自动登录的脚本就成功了。
3. 开机自启以及断网重联
我们可以将脚本设置为开机自启,以及断网重连。
开机自启可以通过/etc/rc.local
实现,断网重连可以通过crontab
实现。
1 开机自启
编辑/etc/rc.local
文件:
1 | vi /etc/rc.local |
在文件中添加以下内容:
1 | /root/auto_login/login.sh |
:wq,保存退出。
2 断网重连
- 我们可以通过
ping
命令来检测网络是否正常,如果网络不正常,我们就执行auto_login.sh
脚本。
可以直接在登录文件夹下创建一个
ping.sh
文件:
1
2cd /root/auto_login
vi ping.sh
然后输入以下内容:
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
30
31
32
33
34
35
36
37
38!/bin/sh
ping 的总次数
PING_SUM=3
ping 的间隔时间,单位秒
SLEEP_SEC=10
时间= (SLEEP_SEC * PING_SUM + 20) * REBOOT_CNT
REBOOT_CNT=3
cnt=0
reboot_cnt=1
while :
do
ping -c 1 -W 1 www.baidu.com > /dev/null
ret=$?
ping -c 1 -W 1 www.bilibili.com > /dev/null
ret2=$?
if [[ $ret -eq 0 || $ret2 -eq 0 ]]
then
echo -e 'network is ok\r'
exit
else
cnt=`expr $cnt + 1`
printf '-> [%d/%d] Network maybe disconnected, checking again after %d seconds!\r\n' $cnt $PING_SUM $SLEEP_SEC
if [ $cnt == $PING_SUM ]
then
echo 'try to re curl'
echo 'ifup wan!!!'
sleep 5
sh /root/auto_login/login.sh
fi
fi
sleep $SLEEP_SEC
done
:wq,保存退出。给脚本运行权限:
1
chmod +x ping.sh
然后我们可以先注销,再手动运行一下脚本,看看是否能够成功登录:
1
./ping.sh
- 我们可以通过
- 接下来使用crontab,它是一个用于执行定时任务的工具,我们可以通过它来实现重连。
编辑/etc/crontabs/root
文件:在文件中添加以下内容:1
vi /etc/crontabs/root
这里的1
*/1 * * * * /root/auto_login/ping.sh
*/1 * * * *
表示每1分钟执行一次ping.sh
脚本,如有需要可以修改。
注意:我们需要查看crontab是否已经启动,如果没有启动,我们需要手动启动:
1
/etc/init.d/cron status
如果没有启动,我们可以通过以下命令启动:
1
/etc/init.d/cron start
同时,我们可以把它添加到开机自启:
1
/etc/init.d/cron enable
这样就可以实现断网重连了。- 接下来使用crontab,它是一个用于执行定时任务的工具,我们可以通过它来实现重连。
至此,我们就实现了校园网自动登录以及断网重连。🍾🍾🍾
若有问题,欢迎和我邮件联系hezi930@foxmail.com,我会尽量回复。