|
|
本帖最后由 8267 于 2025-11-2 14:58 编辑
这两天 又从坛友 lucktu 那里了解到了 nodogsplash 这个极小占用的轻量化web认证程序 论坛搜索了一下这个软件挺老的了,新分支 opennds 完全是按照openwrt写的 完全不适合Padavan了
发现nodogsplash还是比较适合Padavan这种低性能设备用的不依赖php 仅依赖 iptables命令, 这大佬 lucktu 老是有小体积的好用的东西分享
原因是大佬 lucktu 担心自己的wifi密码老是被万能钥匙分享出去,于是需要一个能web进行二次认证的程序,而我刚好也需要,我已经向万能钥匙申请几次取消分享了
=============================================================================
采用静态编译打包了程序: 对于hiboy的Padavan启动报错: 无法无法创建 Web 认证服务器: Protocol not available 的可以添加-a参数启动
Padavan详细安装步骤: 仅供参考
1. 下载上述的程序zip包 解压出执行程序 nodogsplash ndsctl 上传到路由器 /etc/storage/bin/ 目录里 没有这个文件夹就新建一个
2. 将配置文件 nodogsplash.conf 和前端文件夹 htdocs 上传到 /etc/storage/nodogsplash/ 目录里,没有这个文件夹的也新建一个
3. 在 /etc/storage/nodogsplash/ 目录里新建一个文本,命名为 myauth.sh 写入以下内容
- #!/bin/sh
- METHOD="$1"
- MAC="$2"
- USERNAME="$3"
- PASSWORD="$4"
- if [ "$USERNAME" = "admin" ] && [ "$PASSWORD" = "password123" ] ; then
- # 认证成功:允许客户端访问互联网
- # echo参数1: 3600秒(1小时)的会话时长
- # echo参数2: 请填0
- # echo参数3: 请填0
- echo 3600 0 0
- logger -t "【NoDogSplash】" "客户端:${MAC} 认证成功,已允许访问互联网!"
- # 退出码:
- # 0: 认证成功
- # 非0: 认证失败
- exit 0
- else
- logger -t "【NoDogSplash】" "客户端:${MAC} 认证失败,用户名 ${USERNAME} 密码 ${PASSWORD}"
- exit 1
- fi
-
复制代码 并赋予这个 myauth.sh 执行权限
4. 编辑配置文件 nodogsplash.conf
主要修改 GatewayInterface 的值也就是接口名称 一般是 br0
还有前端路径 WebRoot 的值 就是那个htdocs文件夹的路径
再找到下面的 # BinAuth /etc/storage/nodogsplash/myauth.sh 去掉前面的 # 就是启用密码认证
配置文件里也可以设置 mac白名单 TrustedMACList 自己的设备无需验证 多个 设备的mac地址用英文的逗号分隔
5. 写开机启动,在 自定义设置 - 脚本 - 在防火墙规则启动后 的脚本最下面 写
killall nodogsplash 2>/dev/null ; /etc/storage/bin/nodogsplash -c /etc/storage/nodogsplash/nodogsplash.conf -s >/dev/null 2>&1 &
- # Padavan开机自启请将命令添加在防火墙规则启动后执行的脚本里
- killall -15 nodogsplash 2>/dev/null ; /etc/storage/bin/nodogsplash -c /etc/storage/nodogsplash/nodogsplash.conf -s >/dev/null 2>&1 &
复制代码
然后点击保存配置,最后打开ssh 运行 mtd_storage.sh save 固化保存 防止重启丢失。 接着再手动启动一次输入上述命令即可 。在系统日志内可以看程序的输出日志了
关于hiboy的Padavan的 可能需要添加 -a 参数,并且需要替换内置的iptables防火墙文件
1.将压缩包内的 xtables-multi 一并上传到 /etc/storage/bin/xtables-multi 赋予执行权限
2.然后执行替换命令 mount --bind /etc/storage/bin/xtables-multi /bin/xtables-multi
3.并且将这个替换命令写在自定义设置 - 脚本 - 在路由器启动执行的脚本最后 并保存
===================================================================================
日志时间不对的话 加个时区即可: TZ=utc-8 /etc/storage/bin/nodogsplash -c /etc/storage/nodogsplash/nodogsplash.conf -s &
开机启动必须写在 自定义设置- 脚本 - 在防火墙规则启动后的脚本,不能写在路由器启动后执行的脚本里!!
有些老Padavan固件无法运行 不知道为什么也有些阉割的可能也无法运行 有个检测脚本check_nodog.sh
上图的就无法运行
下图的就可以正常运行
这样哪怕知道wifi密码连接成功,也需要经过二次认证才能访问互联网啦。
htdocs 文件夹里的前端页面可以自定义 登录页面login.html 已认证的状态页面status.html 我让AI改了下前端
访问任何 http 页面的80端口就会自动跳转到认证页面
没启用 # BinAuth 的也就不需要密码 直接点连接按钮就行 设置了密码的需要正确输入才能上网
未认证过的设备访问 http://路由器ip:2050/login.html 进行认证操作(访问任意http网页也会自动跳转的)
已认证过的设备访问 http://路由器ip:2050/status/ 可以看到连接状态 以及退出认证操作
已认证过的设备访问 http://路由器ip:2050/logout/ 可快速注销认证
管理页面 请访问 http://路由器ip:2050/admin 可对所有接入网络并且主动发起过http连接的设备进行认证、踢出、信任等操作
- 在管理页面的任何操作都不会写入配置文件,程序重启状态将会还原,如果需要信任设备请写入配置文件,管理页面的操作仅作为临时授权
问:为什么管理页面看不到设备? 明明已经连接路由器了?
答:已连接路由器的的设备需要主动访问 网关ip:2050内的任意网页才能被nodog识别到,才能在管理页面显示。需要认证的设备首次访问http网页会自动跳转到 网关IP:2050/admin.html 因此会显示,而信任的设备没访问网关ip:2050内的任意网页,不会显示出来,这是因为nodog的设计,已经信任的设备不会被nodog限制联网和统计流量,避免消耗网关性能,如需显示 可以访问一次 http://网关ip:2050/status/ 即可显示在管理页面了。
问:为什么开机启动命令要写在防火墙规则启动后的脚本里?
答:nodog依赖iptables来对连接的设备进行限制的,如果防火墙重载将导致nodog的规则被清除,因此防火墙重载后必须重新启动nodog才行!
问:openwrt可以用吗?
答:openwrt的防火墙需要fw3 也就是iptables管理的也可以使用,不支持fw4 也就是nftables ,nft的请使用分支项目 openNDS
问:为什么会无法启动 报错日志为 无法创建 Web 认证服务器: Protocol not available
答:此报错最容易出现在老版本的Padavan或hiboy的Padavan里,因为此固件不支持端口复用,因此 添加 -a 参数启动即可。
问:可以针对设备进行限速吗?
答:不行,nodog应该是未写完限速相关的功能,哪怕是高内核的openwrt也不支持,请不要开启限速功能!(默认关闭的)
问:zip包里的 ndsctl 程序干什么的?可以不要吗?
答:ndsctl 是用来获取nodog状态的,你路由器空间不足 可以不用上传进去。具体作用可以 ndsctl -h 查看。
问:前端文件可以修改吗?
答:可以的,在 htdocs 文件夹内,其中 status.html 是已认证设备的状态显示, admin.html 是管理页面, login.html 是认证登录的页面。splash.jpg 是页面内使用的标题图片。
前端文件status.html login.html 里可以填写变量名 程序会自动替换为实际的值 如下图
附源码文件 可以自行打包,nodog仅 依赖libmicrohttpd 和 json-c
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分
|