1、DHCP客户端获取IP地址的具体流程是怎样的?
(1)在初始阶段,DHCP客户端为了寻找可用的DHCP服务器,会主动发起DHCP DISCOVER消息。由于客户端事先并不了解任何DHCP服务器的具体位置信息,因此它通过广播的方式将DHCP DISCOVER消息发送到网络中的所有设备。所有监听到该广播消息的DHCP服务器都会做出响应,并发送相应的回应报文。客户端通过这些回应可以识别出网络中存在的DHCP服务器。
(2)网络中的DHCP服务器在接收到客户端的DHCP DISCOVER消息后,会从预先配置的地址池中挑选出一个可用的IP地址,并将该地址连同租期信息以及其他网络配置参数(例如默认网关、域名服务器等)封装在DHCP OFFER消息中,然后发送给客户端。
(3)当多个DHCP服务器同时向客户端发送DHCP OFFER消息时,客户端只会接受第一个收到的DHCP OFFER消息。随后,客户端会以广播的方式发送DHCP REQUEST消息,该消息中包含了它所选择的服务器标识信息(即Option54中记录的服务器IP地址)。
(4)当DHCP服务器收到客户端的DHCP REQUEST消息后,会根据消息中包含的MAC地址查找是否存在对应的租约记录。如果存在有效的租约记录,服务器会将包含已分配IP地址和其他设置的DHCP ACK消息发送给客户端。客户端在收到该确认消息后,会通过广播发送免费ARP消息,以确认该IP地址在当前网络中没有被其他设备使用。如果在规定的时间内没有收到任何回应,客户端才会正式使用这个IP地址。
2、为什么客户端在发送REQUEST消息时会采用广播方式?
这是因为DHCP服务器在发送OFFER消息之前,会从地址池中分配一个空闲的IP地址给发送DISCOVER消息的客户端,并创建相应的租约记录。广播发送REQUEST消息的目的在于通知所有其他DHCP服务器,该客户端已经选择了某台特定的DHCP服务器获取IP地址,因此其他服务器可以收回原本分配给该客户端的IP地址并删除相关租约记录。
3、DHCP服务器在什么情况下会发送DHCP ACK消息,又会在什么情况下发送DHCP NAK消息?请举例说明DHCP NAK报文的两种使用场景。
(1)当DHCP服务器收到客户端发送的DHCP REQUEST消息后,会根据消息中包含的MAC地址查找是否存在相应的租约记录。如果找到匹配的租约记录,服务器会发送DHCP ACK消息作为响应,通知客户端可以使用分配的IP地址。如果没有找到相应的租约记录,服务器则会发送DHCP NAK消息作为响应。
(2)在重用曾经分配的IP地址时,客户端会发送携带Option50(请求的IP地址选项)的REQUEST消息(不发送DISCOVER消息),服务器在收到该消息后,如果确认该地址尚未被其他主机使用,就会发送ACK消息;如果该地址已经被其他主机使用,则会发送NAK消息。
(3)在租期续约场景中,当客户端向服务器发送租约请求(REQUEST消息)时,如果服务器同意续约,会发送ACK消息;如果服务器不同意续约,则会发送NAK消息。
4、DHCP服务器主动发送的DHCP OFFER、ACK和NAK消息中主要包含哪些信息参数?这些消息是以广播还是单播方式发送的?为什么采用这样的设计?最后请举例说明DHCP OFFER、ACK和NAK设计成广播和单播的区别。
(1)DHCP OFFER报文和DHCP ACK报文的内容除了Option53(DHCP消息类型)不同外,其他内容基本一致。它们包含了为客户端分配的IP地址、客户端的MAC地址、服务器ID(Option54)、子网掩码(Option1)、租期、域名、网关(Option3)、DNS服务器等信息。
(2)单播还是广播发送取决于客户端请求报文中的flag位(broadcast位)。如果该位为0,则以单播形式发送响应报文;如果为1,则以广播方式发送响应报文。
(3)OFFER消息和ACK消息是直接发送给客户端的,用于确认已分配的IP地址。此时服务器可以认为该IP地址已经正式分配给客户端,因此在数据链路层采用单播封装。
(4)DHCP NAK报文只包含DHCP消息类型为DHCP NAK以及客户端的MAC地址等信息。该消息以广播方式发送。NAK消息是直接发送给客户端的,用于拒绝客户端请求的IP地址。由于服务器无法确定客户端的具体位置,因此使用广播地址(255.255.255.255)进行封装。
如果OFFER和ACK消息也采用广播方式发送,会导致同一个广播域内的所有设备都需要处理这些不必要的报文,从而增加网络负担。
5、什么是DHCP中继?什么是Option82?
(1)DHCP中继(DHCP Relay)是一种在不同网络网段之间实现DHCP服务器与客户端之间报文交互的技术。它充当不同网段间的DHCP客户端和服务器之间的中继服务,能够将DHCP协议报文跨网段透传到目标DHCP服务器,最终使网络上的所有DHCP客户端都可以共享同一个DHCP服务器。
<1>当DHCP客户端向DHCP服务器发送请求报文时,DHCP中继会捕获该报文并进行适当处理,然后以单播形式发送给位于其他网段上的指定DHCP服务器。服务器根据请求报文中提供的信息,通过DHCP中继将配置信息返回给客户端,从而完成对客户端的动态配置。
管理员可以通过Option82获取DHCP客户端的位置信息,以便进行定位,实现对客户端的安全和计费等控制。支持Option82的服务器还可以根据该选项的信息制定IP地址和其他参数的分配策略,提供更加灵活的地址分配方案。
Option82中携带的MAC地址实际上是插入Option82的接口MAC地址。
6、在实际应用中,DHCP可能会遇到哪些问题?如何防范这些问题?
(1)DHCP Server仿冒者攻击
由于DHCP Server和DHCP Client之间缺乏认证机制,如果在网络上随意部署一台DHCP服务器,它就可以为客户端分配IP地址及其他网络参数。如果该服务器分配了错误的IP地址或其他网络参数,将对网络造成严重危害。
(2)DHCP报文泛洪攻击
在DHCP网络环境中,如果攻击者短时间内向设备发送大量DHCP报文,会对设备的性能造成巨大冲击,甚至导致设备无法正常工作。
(3)DHCP饿死攻击
如果存在大量攻击者恶意申请IP地址,会导致DHCP Server中的IP地址迅速耗尽,从而无法为其他合法用户提供IP地址分配服务。
(4)仿冒DHCP报文攻击
如果攻击者冒充合法用户不断向DHCP Server发送DHCP Request报文以续租IP地址,会导致这些到期的IP地址无法正常回收,从而影响合法用户的IP地址获取。而如果攻击者仿冒合法用户的DHCP Release报文发送给DHCP Server,将导致用户异常下线。