Очистить аренду DHCP при отключении

У меня довольно специфическая ситуация, когда я немного растерялся из-за того, как все делать правильно, поэтому я подумал, что пришло время обратиться за помощью.

Ситуация такова: у меня Raspberry Pi с модемом 3G, а также установлены hostapd и dnsmasq. Это означает, что когда я подключен к точке доступа на Pi, я получаю доступ в Интернет через 3G.

Эта установка будет использоваться для обеспечения доступа в интернет для работы Boombox с аудио Chromecast. Все работает отлично, и я могу подключиться к WiFi и воспроизводить музыку из spotify - все хорошо. Почти. План сотовой связи, используемый в модеме, ограничен количеством гигабайт - достаточно для музыки, но недостаточно, чтобы люди забыли отключиться от Wi-Fi, когда они не отвечают за музыку.

На данный момент я установил Chromecast (и мой собственный телефон) на статический IP-адрес и установил область DHCP на ровно 1 адрес. Это почти решает мою проблему, за исключением очевидной функции дизайна, которую ip зарезервировал для клиента для пока договор аренды действителен. Я мог бы установить очень короткое время аренды, но это просто создает другие проблемы с людьми, угоняющими IP при попытке подключения, если кто-то уже подключился.

В идеале то, что я хочу сделать, это очистить аренду клиента, как только он отключится. Это возможно? Должен ли я сделать что-то еще? Я уже написал слишком много, чтобы кто-нибудь все прочитал?

Я в растерянности - что мне делать?

1 ответ

Решение

Тогда я просто отвечу сам.

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
Другие вопросы по тегам