Intelligent Network Watchdog for OpenWrt/Kwrt. Auto-reconnect & Captive Portal Login (Curl) with dynamic IP support. 专为 OpenWrt/Kwrt 打造的网络看门狗,支持断网重连与校园网自动认证。
🚀 专为校园网环境设计的 OpenWrt/Kwrt 网络保活工具。
解决了校园网环境下的两大痛点:
- 断电/断网后无法自动重连:每天早上来电后,路由器不会自动重拨。
- IP 变动导致认证失效:重连后获取了新的内网 IP,但认证服务器还记录着旧 IP,导致无法上网。
本工具包含一个Windows 一键生成器,可以根据你抓取的登录数据,自动生成适配动态 IP 的保活脚本。
simple_watchdog.sh: [基础版] 仅包含断网重连功能 (无自动认证)。generator_tool/: [进阶版] 包含 Windows 自动脚本生成工具,用于生成带认证功能的脚本。README.md: 使用说明文档。
| 你的需求 | 推荐方案 | 说明 |
|---|---|---|
| 仅需自动重连 | 方案 A (基础版) | 适用于不需要网页认证,或认证长期有效的环境。 |
| 需要自动网页认证 | 方案 B (进阶版) | 适用于每次断网/重启后都需要重新登录校园网账户的环境。 |
如果你的网络只需要执行 ifup 就能恢复,请使用此方案。
- 下载仓库中的
simple_watchdog.sh。 - 使用文本编辑器打开,修改
INTERFACE="wwan"为你实际的逻辑接口名称。 - 上传到路由器
/root/目录。 - 跳转到 部署与定时任务 章节。
此方案会自动检测网络,断网后自动重拨,并自动抓取当前最新的 IP/MAC 地址发送认证请求。
我们需要获取你的登录请求数据。
- 准备环境:确保你的设备连接到校园网,且处于未认证状态(打开网页会跳转登录页)。
- 开启抓包:
- 使用 Chrome 或 Edge 浏览器打开登录页。
- 按
F12打开开发者工具,点击顶部 Network (网络) 标签。 ⚠️ 重要:勾选 Preserve log (保留日志)。
- 执行登录:输入账号密码并点击登录。
- 复制命令:
- 在 Network 列表中找到登录请求(通常名为
login.do,auth,login等,类型为 POST)。 - 右键点击该请求 -> Copy -> Copy as cURL (Bash)。
- (注意:请选择 Bash 格式,不要选 cmd)
- 在 Network 列表中找到登录请求(通常名为
由于 Curl 命令包含大量特殊字符,手动修改容易出错。请使用仓库提供的生成器:
- 进入
generator_tool文件夹。 - 双击运行
生成自动认证脚本.bat。 - 按照提示操作:
- 输入逻辑接口名(如
wwan)。 - 输入物理接口名(如
phy0-sta0,可通过路由器的ifconfig命令查看)。 - 粘贴 刚才抓取到的 Curl 命令。
- 输入 Curl 命令中包含的旧内网 IP(用于脚本定位替换位置)。
- 输入逻辑接口名(如
- 工具将在当前目录下生成一个
network_watchdog.sh文件。
无论使用方案 A 还是 B,生成好脚本后,都需要上传到路由器并设置定时运行。
使用 WinSCP 或 SSH 将脚本 (simple_watchdog.sh 或生成的 network_watchdog.sh) 上传到路由器的 /root/ 目录。
SSH 登录路由器,赋予脚本执行权限:
# 如果是方案 B
chmod +x /root/network_watchdog.sh
# 如果是方案 A
chmod +x /root/simple_watchdog.sh设置每分钟检查一次网络。
-
编辑 Crontab:
crontab -e
-
在文件末尾添加一行(按
i进入编辑,粘贴后按Esc输入:wq保存):# 每分钟执行一次看门狗 */1 * * * * /root/network_watchdog.sh
(注:请将脚本文件名替换为你实际上传的文件名)
-
重启 Cron 服务使配置生效:
/etc/init.d/cron restart
Q: 怎么知道脚本有没有在工作?
A: SSH 连接路由器,输入 logread | grep Network_Watchdog 查看日志。
Q: 为什么认证失败,提示“未获取到 IP”?
A: 这是一个常见错误。通常是因为脚本中的 PHYSICAL_IF(物理接口名)填错了。
- 逻辑接口 (Logical):OpenWrt 后台设置的接口名(如
wwan),用于执行重启命令。 - 物理接口 (Physical):实际的硬件网卡名(如
phy0-sta0,wlan0,eth1),用于获取 IP 地址。 - 解决方法:SSH 输入
ifconfig,找到那个显示了校园网内网 IP 的接口名字,填入生成器中。
Q: 脚本里的 223.5.5.5 是什么?
A: 这是阿里云的公共 DNS,用于测试网络是否通畅。你也可以改成 114.114.114.114 或 8.8.8.8。
本工具仅供学习和技术交流使用。请勿用于非法用途,作者不承担任何因使用本工具导致的后果。