Debian

如何讓 Debian 9 的 DHCP 客戶端檢查更頻繁?

  • September 17, 2019

我們在 Minnowboard(一個小型嵌入式系統)上使用 Debian 9 安裝。Debian 9 安裝並沒有什麼特別之處——它是我們從 Debian 網站獲得的正常 Debian 9 映像,必須使用 Debian 安裝程序從頭開始安裝。

我們看到的問題是,有時,當 Minnowboard 啟動時,Debian 的 DHCP 客戶端不會抓取 IP,並且似乎需要幾分鐘才能再次嘗試,直到最終,它確實抓取了一個。手動使用 dhclient,Debian 獲取 IP 沒有問題。

Linux DHCP 客戶端在第一次嘗試時沒有獲取 IP 的原因可能是因為為 Minnowboard 供電的同一電源也為路由器供電(它們通常同時開始啟動),因此,當 minnowboard 首次請求 IP 時,路由器(DHCP 伺服器)可能尚未啟動。

如果介面配置為 DHCP 並且還沒有 IP,我們是否可以更改任何配置文件以使 Debian 的預設 DHCP 客戶端更頻繁地請求 IP?

在相關主題中,是什麼控制 Debian 9 中的 DHCP 客戶端?是否有一些 systemd 正在執行的服務來監控以確保 DHCP 租約沒有過期,並根據需要更新它們?

注意:不確定這是否相關,但我做了這個技巧,並將GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"網路介面名稱設置回 eth0。

您可以在 中配置dhclient的超時和重試設置/etc/dhcp/dhclient.conf。設置retry為 60 秒或更少可能是您想要的。

來自man dhclient.conf(添加了額外的換行符和粗體以強調):

協議時序

客戶端的定時行為不需要使用者配置。如果使用者沒有提供時序配置,預設情況下將使用相當合理的時序行為——這種行為會導致相當及時的更新,而不會給伺服器帶來過多的負載。

如果需要,可以使用以下語句來調整 DHCPv4 客戶端的計時行為。DHCPv6 協議提供了要使用的值,它們目前不可配置。

timeout聲明_

timeout time;

timeout 語句確定客戶端開始嘗試確定其地址的時間和它決定無法聯繫伺服器的時間之間必須經過的時間量。

預設情況下,此超時時間為 60 秒

超時後,如果配置文件中定義了任何靜態租約,或者租約數據庫中剩餘的任何租約尚未到期,客戶端將循環通過這些租約嘗試驗證它們,如果它找到一個似乎是有效的,它將使用該租約的地址。

如果租約數據庫中沒有有效的靜態租約或未過期的租約,客戶端將在定義的重試間隔後重新啟動協議。

retry聲明_

retry time;

retry 語句確定在客戶端確定不存在 DHCP 伺服器之後,在它再次嘗試聯繫 DHCP 伺服器之前必須經過的時間。

預設情況下,這是五分鐘

引用自:https://unix.stackexchange.com/questions/542069