У меня довольно специфическая ситуация, когда я немного не понимаю, как все делать правильно, поэтому решил, что пора просить о помощи.
Ситуация такова: у меня есть Raspberry Pi с 3G-модемом, а также установлены hostapd и dnsmasq. Это означает, что когда я подключен к точке доступа на Pi, я получаю доступ в Интернет через 3G.
Эта установка будет использоваться для обеспечения доступа к Интернету для магнитофона для работы вместе с аудиосистемой Chromecast. Все работает нормально, я могу подключиться к Wi-Fi и проигрывать музыку из Spotify - все хорошо. Почти. Тариф сотовой связи, используемый в модеме, ограничен несколькими гигабайтами - этого достаточно для музыки, но недостаточно, чтобы люди забыли отключить Wi-Fi, когда они не отвечают за музыку.
На данный момент я установил Chromecast (и мой собственный телефон) на статический IP-адрес и установил для области DHCP ровно 1 адрес. Это почти решает мою проблему, за исключением очевидной особенности дизайна, для которой IP-адрес зарезервирован. клиенту до тех пор, пока действует договор аренды.Я мог бы установить сверхкороткое время аренды, но это просто создает другие проблемы с людьми, которые захватывают IP-адрес при попытке подключения, если кто-то уже подключен.
В идеале я хочу отменить аренду клиента, как только он отключится. Это возможно? Должен ли я сделать что-нибудь еще? Я уже написал слишком много, чтобы кто-нибудь мог все прочитать?
Я немного растерялся - что мне делать?
Я просто отвечу сам, тогда.
hostapd_cli
может запускать скрипты и взаимодействовать с hostapd. Вместе с dhcp_release
в dnsmasq_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