
我的公司生產透過 USB 連接的物聯網設備,其中包含一個蜂窩數據機模組,其中包含一個 DHCP 伺服器。我們有一個運行 Ubuntu 14.04 的生產測試伺服器和另一個運行 Ubuntu 16.04 的伺服器。當物聯網裝置的蜂巢式調變解調器開機時,伺服器的 dhclient 會從嵌入在蜂巢式調變解調器模組中的 DHCP 伺服器取得 IP 位址。
昨天 14.04 伺服器耗盡了 inode,因為有660萬 dhclient-<uuid>-usbXX.lease
文件在/var/lib/NetworkManager/
.
由於需要讓它運行用於生產目的,我無法全面檢查該系統,但是,這些租賃文件看起來可以追溯到大約 14 個月前的伺服器調試。也就是說,NetworkManager 和/或 dhclient(來自 isc-dhcp-client 套件)似乎從未刪除任何客戶端租用檔案。
使問題更加複雜的是,每次蜂窩調製解調器設備開機時都會建立一個新的租用檔案。 (物聯網設備使蜂窩調製解調器保持關閉以節省電池電量,僅在需要時才將其打開。測試包括多次打開和關閉調製解調器。)
我sudo apt-get source isc-dhcp-client
檢查了原始程式碼,似乎從來沒有刪除租賃文件的程式碼。事實上,我的筆記型電腦(Ubuntu 14.04)有可追溯到其調試的租賃文件。 (我已經連接了一些 IoT 設備,以及各種其他乙太網路 USB 轉接器。)
租賃文件有一個非常合理的 24 小時到期時間。
我正在研究如何針對我們的 IoT 設備取消配置 dhclient,但是,如果我們決定測試單元資料連接,我寧願不這樣做。
有沒有辦法讓 dhclient 和/或 NetworkManager 刪除舊的客戶端租賃檔案?
我可以設定一個 cron 作業來處理這個問題,但這似乎應該是系統的一部分。我就是找不到它。我用谷歌搜索,搜尋這裡/StackOverflow,並閱讀 dhclient 和 NetworkManager 文件。
注意:我沒有足夠的聲譽來創建標籤 dhclient,所以我用 dhcp 代替。