断开连接时清除 DHCP 租约

断开连接时清除 DHCP 租约

我遇到了一种相当特殊的情况,我有点不知道如何正确地做事,所以我想是时候寻求帮助了。

情况是:我有一台装有 3G 调制解调器以及 hostapd 和 dnsmasq 的 Raspberry Pi。这意味着当我连接到 Pi 上的热点时,我可以通过 3G 访问互联网。

该设置将用于为 boombox 提供互联网访问,以便与 chromecast 音频协同工作。一切正常,我可以连接到 WiFi 并播放 spotify 的音乐 - 一切都很好。几乎。调制解调器中使用的蜂窝计划限制为几个千兆字节 - 足以播放音乐,但不足以让人们忘记在不负责音乐时关闭 wifi。

到目前为止,我所做的是将 Chromecast(和我自己的手机)置于静态 IP 上,并将 DHCP 范围设置为 1 个地址。这几乎解决了我的问题,除了明显的设计特点,即只要租约有效,IP 就会为客户端保留。我可以设置一个非常短的租约时间,但这只会带来其他问题,即如果有人已经连接,人们在尝试连接时劫持 IP。

理想情况下,我想要做的是客户端断开连接后立即清除其租约。这可能吗?我应该做点别的吗?我写的内容是不是太多了,没人能读完?

我有点不知所措——我该怎么办?

答案1

那么我就自己回答这个问题吧。

hostapd_cli可以运行脚本并与 hostapd 交互。结合使用,dhcp_releasednsmasq_utils可以使用一些脚本解决问题:

sudo hostapd_cli -a dhcp_release_script.sh

dhcp_release_script 如下所示:

#!/bin/bash
#dhcp-release-script.sh

#Chromecast, My Phone, My Laptop
staticDevicesMac=("" "" "")

if [[ $2 == "AP-STA-DISCONNECTED" ]]
 then
 if [[ ! "${staticDevicesMac[@]}" =~ "${3}" ]]
 then
   dhcp_release $1 10.0.0.20 $3
 fi
fi

相关内容