2008年2月12日 星期二

解決 Microsoft 平台 DHCP 用戶端問題

自從架好 DHCP 伺服器之後,三不五時就會有人抱怨無法上網,根據已知的任何錯誤訊息來看,完全摸不清任何頭緒,這問題真是令人頭痛。新春才第一天上班而已,我就遇到同樣地問題,無法獲得 DHCP 伺服器配發 IP 位址,亦即我的電腦目前無法連上網路。

我知道 Microsoft 的安裝光碟中,都附有 Windows Support Tools 可提供更多的工具指令,便利用其中的 dhcploc.exe 指令,試圖找尋任何的蛛絲馬跡,最少也能有更多的錯誤訊息可供參考。但結果卻不如預期,僅得到『 OpenReceiveSocket failed 10049. 』這樣的資訊而已,似乎幫助不大。

再重新看一次設定手冊吧。

什麼!關於伺服器設定的部份,一開頭就已提及,而我居然漏掉了,自從加上這個路由 IP 位址之後,『 route add -host 255.255.255.255 dev eth0 』,看來問題就解決了。為了以防萬一,怕主機重新開機後這個設定又跑了,也直接加到『 /etc/rc.d/rc.local 』這個檔案中,由系統開機後逕行加上這個路由。
In order for dhcpd to work correctly with picky DHCP clients (e.g., Windows 95), it must be able to send packets with an IP destination address of 255.255.255.255. Unfortunately, Linux insists on changing 255.255.255.255 into the local subnet broadcast address (here, that's 192.5.5.223). This results in a DHCP protocol violation, and while many DHCP clients don't notice the problem, some (e.g., all Microsoft DHCP clients) do. Clients that have this problem will appear not to see DHCPOFFER messages from the server.
ISC 網站
DHCP mini-HOWTO

後來找到那段中文譯文:
為了讓 dhcpd 能夠正確地服務過分挑剔的 DHCP 用戶端(例如,Windows 95),dhcpd 必須能夠送封包到 255.255.255.255 的 IP 位址上。不幸的是,Linux 會將 255.255.255.255 做為本地子網路的廣播位址(此處為 192.5.5.223)。這將違反 DHCP 通訊協定,然而許多 DHCP 用戶端並不受影響,有些(例如,所有 Microsoft DHCP 用戶端)卻會。有此類問題 的用戶端,將會看不到來自伺服器的 DHCPOFFER 訊息。

mini HOWTO:DHCP(DHCPd/DHCPcd)

沒有留言: