DHCP Client/Server的一些設定技巧

最近花一個禮拜的時間,把DHCP的機制實際實現一個DHCP Client/Server程式,測試了三台WAN/LAN,都可以透過DHCP正確設定Router,因此得到一些小心得,為了可以通用所有的Router,找出最小公倍數的設定。
經過這樣的測試就會發現,有些感覺很便宜的網卡或是Router很偷懶,都不做什麼驗證,感覺隨便就可以通過了。底下就列出一些我的心得,給要自己寫DHCP Client/Server或是想研究一下封包的人參考:

【MAC層】

  • Destination MAC = Boradcast(FF:FF:FF:FF:FF:FF),Source MAC設為自己
  • 要能發ARP Reply包:不設定不知有無影響,因為待測物會定期發ARP Request來詢問MAC,即使先前有先發過ARP讓其辨認。

【IP層】

  • ID不用理會:設為0就可以。
  • 計算IP Checksum:一定要算,不算或是錯的可能連網卡都過不了。
  • Destination IP = 255.255.255.255

【UDP層】

  • 計算UDP Checksum:有些DUT不看Checksum,有些看,所以建議還是計算。我都用ip checksum的算法,把UDP包加上DIP/SIP/UDP Protocol/UDP Length一起算,不用新產生pseudo header了。

【DHCP層】

  • Message Type:Request=1,Reply=2。但有些DUT甚至不看,意思是Reply包設定為1,也可以過。建議還是照規則走。
  • Flags設為0:看Spec建議是說Client端因為不知自己IP,所以用Broadcast,但設不設都可以過。
  • Transaction ID要相同:同樣一群DHCP包,設定為相同,所以我收到後回彈的包都直接套用不改。至於第一個discover包,就用亂數給。
  • Next Server IP可加可不加:不會影響結果

【DHCP層-必要的Options設定】

  • Option 53 - DHCP Message Type:Discover=1/Offer=2/Request=3/ACK=5/NAK=6。
  • Option 54 - DHCP Server ID:用在reply封包,值為Server IP。
  • Option 55 - Parameter Request:Client端像Server端要求回應的包要夾帶的Option參數,其實Server不完全回應也沒差。
  • Option 61 - Client ID:用途是識別唯一的Client端,因此通常是Client端的MAC
  • Option 1 - Subnet:主要讓Client端可以填Mask,算基本欄位,沒有的話不確定是否可行。
  • Option 3 - Router:Router IP。基本上和Server IP同
  • Option 6 - Domain Name Server:設定DNS IP的意思,有些Server會和Client IP一樣
  • Option 255 - End:結束時一定要附上

DHCP說起來,還真有點麻煩哩!

0 意見:

搜尋此網誌

總網頁瀏覽量

TK呱呱

Made with by TK