我想知道是否可以检测到连接到使用dnsmasq和hostapd在wlan0接口上创建的接入点的站点(客户端)的断开连接。
到目前为止,我发现的最佳解决方案是使用以下命令
iw dev wlan0 station dump
问题是当我拔下连接设备的电缆时,该命令仍然显示设备已连接,同时增加“非活动时间”值。
PS。连接的设备是 ESP8266 模块。
任何提示表示赞赏。谢谢!
您不能只使用 hostapd 或 iw 工具,因为它认为设备将在一段时间内再次可访问。
您需要(或至少,这是我的方式)使用 extern 命令(如 ping)检查站是否仍可访问。
在我的情况下,我使用ip neigh show dev wlan0 nud reachable nud delay
并将 mac 地址与给出的站列表进行比较iw dev wlan0 station dump
您可以监控您的系统日志,例如在它报告的 openwrt 上:
Aug 26 21:41:19 192.168.0.245 hostapd: wlan0-1: STA aa:aa:aa:aa:aa:aa IEEE 802.11: deauthenticated due to REASON
原因可以是其中之一(至少我发现了这些):
Aug 26 19:00:00 192.168.0.1 hostapd: wlan0: STA aa:aa:aa:aa:aa:aa IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
Aug 26 19:00:00 192.168.0.1 hostapd: wlan0: STA aa:aa:aa:aa:aa:aa IEEE 802.11: deauthenticated due to local deauth request
Aug 26 19:00:00 192.168.0.1 hostapd: wlan0: STA aa:aa:aa:aa:aa:aa IEEE 802.11: deauthenticated due to inactivity
为此,您必须监视该站是否已成功连接,例如
Aug 26 19:00:00 192.168.0.1 hostapd: wlan0: STA aa:aa:aa:aa:aa:aa WPA: group key handshake completed (RSN)