2008-09-15 157 views
1

我使用的嵌入式Linux系統有時需要從DHCP服務器獲取其IP地址。我們使用的DHCP客戶端客戶端(dhcpcd)具有有限的重試邏輯。如果我們的設備在沒有任何DHCP服務器可用且超時的情況下啓動,則dhcpcd將退出,並且設備將永遠不會獲得IP地址,直到它通過可見/連接的DHCP服務器重新啓動。我不能成爲唯一存在這個問題的人。這個問題似乎甚至不是特定於嵌入式系統的(儘管它在那裏更糟糕)。你如何處理這個問題?有沒有更強大的客戶端可用?如何通過DHCP可靠地獲取IP地址?

回答

3

來自ISC的引用dhclient應該永久運行在默認配置中,並且如果它在啓動時沒有獲得租約,它應該稍後獲得租約。

我在FreeBSD上使用了開箱即用的dhcp客戶端,它來自於OpenBSD,基於ISC的dhclient,這是開箱即用的行爲。

http://www.isc.org/index.pl?/sw/dhcp/

2

您有幾種選擇:

  1. 雖然你沒有IP地址,重新啓動的dhcpcd獲得更多的重試。
  2. 備有靜態IP地址。這在embedded devices I've made中非常成功。
  3. 使用auto-IP作爲備份。 Windows會這樣做。
+1

這是一個很好的答案。提問者應該記住,在一些環境中,永遠廣播DHCP客戶端可能是不好的行爲。 – benc 2009-07-17 10:58:16

1

添加到rc.local檢查是否已獲得IP。如果在不久的將來沒有設置'at'工作再嘗試。繼續安排'at'作業,直到獲得IP。