Dhcp

斷開連接時清除 DHCP 租約

  • May 31, 2018

我有一個相當具體的情況,我對如何正確地做事有點茫然,所以我想是時候尋求幫助了。

情況是:我有一個安裝了 3G 調製解調器以及 hostapd 和 dnsmasq 的 Raspberry Pi。這意味著當我連接到 Pi 上的熱點時,我可以通過 3G 訪問網際網路。

該設置將用於為揚聲器提供 Internet 訪問,以便與 chromecast 音頻一起工作。一切正常,我可以連接到 WiFi 並從 spotify 播放音樂 - 一切都很好。幾乎。調製解調器中使用的蜂窩計劃僅限於數 GB - 足以播放音樂,但不足以讓人們在不負責音樂時忘記離開 wifi。

到目前為止,我所做的是將 Chromecast(和我自己的手機)放在靜態 IP 上並將 DHCP 範圍設置為恰好 1 個地址這幾乎解決了我的問題,除了 ip 為客戶端保留的明顯設計功能只要租約有效。我可以設置一個超短的租用時間,但這只會導致人們在嘗試連接時劫持 ip(如果有人已經連接)的其他問題。

理想情況下,我想做的是在斷開連接後立即清除客戶的租約。這可能嗎?我應該做點別的嗎?我是否已經寫了太多,以至於任何人都無法閱讀所有內容?

我有點茫然 - 我該怎麼辦?

那我自己回答吧。

hostapd_cli可以執行腳本並與 hostapd 互動。與dhcp_releasein一起,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

引用自:https://serverfault.com/questions/914310