首页
关于本博客
友情链接
推荐
linux/shell
Search
1
LEDE官方固件安装中文语言包的方法
11,087 阅读
2
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
9,183 阅读
3
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
8,153 阅读
4
一次OpenVPN交叉编译笔记
6,664 阅读
5
利用iptables的string模块来屏蔽域名(关键词匹配)
6,111 阅读
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
登录
Search
标签搜索
nginx
OpenWrt
openvpn
SSH
seafile
cloudflare
iptables
openssl
linux
letsencrypt
CentOS
反向代理
ftp
openvpn配置模板
vsftpd
seafile网盘
Linux启动脚本
ddns
nas
seafile服务器
自渡
累计撰写
75
篇文章
累计收到
1
条评论
首页
栏目
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
页面
关于本博客
友情链接
推荐
linux/shell
搜索到
1
篇与
wifi踢除弱信号客户端
的结果
2019-01-24
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
最近一直在折腾LEDE和openwrt,才发现自己手头的好几个斐讯都弱爆了,首先斐讯K2的2.4G就是个坑,由于其闭源驱动的缘故,导致除了潘多拉固件和Padavan固件外,刷入原生LEDE和OpenWrt的K2在2.4G频段上表现非常差,具体表现为速率忽高忽低,甚至完全没速度,好在我又从淘宝入了两个洋垃圾NETGEAR wndr3800,原先是打算买Cisco洋垃圾的,但是店家缺货,权衡之下购入了WNDR3800。这款路由在有线上表现的很优秀,5口全千兆,CPU为AR7161,频率是680MHz,而无线速率是150Mbps(2.4G)+300Mbps(5G)的组合。由于家里面积较大,每天访客也多,单个AP难以完整覆盖,所以这两个WNDR3800是我特地买来做无线AP用于做覆盖的,后端主路由器是H3C MSR系列路由,并且在WNDR3800上配置了基于SSID的VLAN(下一篇文章会细说),将访客和私有VLAN分离开以确保安全性。传统的wifi漫游是通过FIT模式的无线AP与AC控制器的组合来实现的,而这套设备都非常贵,个人使用完全没必要,因此我选择刷了lede固件的路由器来实现WiFi漫游,其实就是充当胖AP。首要条件就是各个AP的SSID、加密方式、密钥完全一致,然而有了这些条件是不够的,因为在切换AP时,是由于手机信号低于某个阈值,系统自动断开连接,从而导致手机重新搜索WiFi连接,并选择信号最强的AP连接。这个阈值不同厂商设定不一样,且通常为了保持网络的畅通性,这个阈值都会被厂商调的很低,即信号只剩下一格左右才会断开重连,并不会因为旁边有信号更强的AP而重新与它建立连接。所以必须让无线AP根据客户端的信号强度,来决定是否要将客户端踢出,将原本AC做的事情交给AP来做,一旦低于设定的阈值,AP就会向客户端发出Deauthentication信号从而强制让客户端断开连接,然后客户端会重新搜索信号更强的AP,并连接上去以完成漫游过程。LEDE固件的LUCI界面是没有踢出弱信号客户端的选项的,所以所有过程必须通过shell脚本来实现,所以我编写了如下脚本,然后通过系统的crontab计划任务来实现定时检查客户端信号,并判断是否踢出。脚本如下:#!/bin/sh #输入设备名 DEV= #设定阈值,低于该阈值客户端会被踢出 THRESHOLD=-75 CLIENT_COUNT=$(iwinfo $DEV assoclist|grep dBm|awk '{print $1" "$2}'|wc -l) LINE=1 while [ $LINE -le $CLIENT_COUNT ] do MAC=$(iwinfo $DEV assoclist|grep dBm|awk '{print $1}'|sed -n "$LINE"p) SIGNAL=$(iwinfo $DEV assoclist|grep dBm|awk '{print $2}'|sed -n "$LINE"p) if [ "$SIGNAL" -lt "$THRESHOLD" ]; then ubus call hostapd.$DEV del_client '{"addr":"'"$MAC"'", "reason": 5, "deauth": True, "ban_time": 1000}' fi let LINE=LINE+1 done脚本使用说明:1、设备名查看方式:设备名即网卡名,与SSID是一一对应的,不同SSID的设备名不同,查看方法是通过putty或者xshell等软件SSH进入路由器,然后用iwinfo命令即可列出所有无线网卡名和对应的SSID。2、阈值设定:最好是设定在-75到-80之间,阈值过低可能适得其反,导致网络不稳定。3、定时任务的设置方法:系统的crontab不支持设定单位为秒的定任务,因此可以参考这篇文章通过crontab与sleep的结合的方法来实现:https://blog.csdn.net/bk_guo/article/details/54021032
2019年01月24日
9,183 阅读
0 评论
0 点赞