DHCP协议
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)是一种网络管理协议,运行在Internet协议(IP)网络上自动将IP地址和其他通信参数分配至客户端。目前DHCP主要有DHCPv4(IPv4)和DHCPv6(IPv6)。
一、概述
DHCP基于Cline-Server
模型运行,数据交互采用无连接服务模型,使用UDP协议进行数据交互(UDP /67是服务器使用的端口,UDP/68是客户端使用的端口)。当计算机或其他设备连接到网络时,DHCP客户端将会发送DHCP广播查询,请求必要的信息。网络上的任何DHCP服务器都可以为该请求进行回复并提供服务。在收到DHCP请求时,DHCP服务器可能会响应每个客户端的特定信息,或使用特定地址对整个网络进行响应(租约、IP地址、DNS等信息)。
DHCP分配三种方式:
-
动态分配:管理员为DHCP保留一系列IP地址。但此时原理员为每个DHCP客户端暂时分配了一个IP地址,并为这个IP地址设置了一定的租约时间。当这个租约到期后,这个IP地址就会返还给DHCP服务器。
-
自动分配:DHCP服务器从管理员定义范围内的IP地址永久分配给客户端。这种分配类似于动态分配,但是这种分配会在DHCP分配会在DHCP服务器上保留一个IP地址分配表,这样以便后期客户端拥有以前相同的IP地址。
-
手工分配:这种分配方式将在DHCP上将IP/MAC地址进行绑定。管理员将每个客户端的唯一标识符映射到请求客户端的IP地址。
二、DHCP角色
DHCP服务器:DHCP服务器负责从地址池中选择IP地址分配给DHCP客户端,还为DHCP客户端提供其他网络参数。
DHCP客户端:客户端发送DHCP请求报文获取相关网络参数。
DHCP中继:DHCP中继负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数。
三、DHCP报文
DHCP服务器与DHCP客户端之间通过DHCP报文进行通信。DHCP报文是基于UDP协议传输的。DHCP客户端向DHCP服务器发送报文时采用68端口号,DHCP服务器向DHCP客户端发送报文时采用67端口号。
报文名称 | 说明 |
---|---|
DHCP DISCOVER | DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。 |
DHCP OFFER | DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 |
DHCP REQUEST | 此报文用于以下三种用途。客户端初始化后,发送广播的DHCP REQUEST报文来回应服务器的DHCP OFFER报文。客户端重启后,发送广播的DHCP REQUEST报文来确认先前被分配的IP地址等配置信息。当客户端已经和某个IP地址绑定后,发送DHCP REQUEST单播或广播报文来更新IP地址的租约。 |
DHCP ACK | 服务器对客户端的DHCP REQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。 |
DHCP NAK | 服务器对客户端的DHCP REQUEST报文的拒绝响应报文,例如DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,则发送DHCP NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。 |
DHCP DECLINE | 当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。 |
DHCP RELEASE | 客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文后,可将这个IP地址分配给其它的客户端。 |
DHCP INFORM | DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求报文。 |
四、交互过程
1、无中继场景是DHCP客户端首次接入网络的工作原理
1)第一步:发现阶段
首次接入网络的DHCP客户端不知道DHCP服务器的相关信息,为了学习到DHCP服务器的IP地址,DHCP客户端以广播方式发送DHCP DISVOER报文(目的IP地址为255.255.255.255)给同一网段内的所有设备。
2)第二步:提供阶段
与DHCP客户端位于同一LAN的DHCP服务器都将收到DHCP DISCOVER包围,DHCP服务器选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址,并从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给客户端。
3)第三步:选择阶段
如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想要选择的DHCP服务器表示和客户端IP地址。
DHCP客户端广播发送DHCP REQUEST报文通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。
4)第四步:确认阶段
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。
DHCP客户端收到DHCP ACK报文后,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果没有客户端则使用该地址,如果有则客户端向DHCP服务器发送DHCP DECLINE报文并重新请求IP地址。DHCP在收到DHCP DECLINE报文后,会将此地址标记为冲突地址。
2、有中继场景时DHCP客户端首次接入网络的工作原理
有DHCP中继的场景中,首次接入网络的DHCP客户端和DHCP服务器的工作原理与无中继场景时DHCP客户端首次接入网络的工作原理相同。主要差异是DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端可以正常交互。
五、攻击手段
1、DHCP Server仿冒攻击
由于DHCP Server和DHCP Client之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。进而可以被攻击者利用给与客户端错误的DHCP参数。
2、DHCP泛洪攻击
向DHCP服务器发送大量DHCP请求数据报文,使得DHCP Server系统资源耗尽,导致其他合法的DHCP交互无法正常使用。
3、DHCP 饿死攻击
攻击者伪造chaddr(DHCP客户端硬件地址)字段各不相同的DHCP请求报文,向DHCP服务器申请大量的IP地址,进而导致DHCP服务器地址池地址耗尽,无法为合法的DHCP客户端分配地址。
4、伪造DHCP请求方向报文攻击
攻击者非法伪造DHCP续约报文、DHCP DECLINE和DHCP RELEASE三种DHCP请求报文对DHCP服务进行攻击。
-
伪造DHCP续约报文攻击是指攻击者冒充合法的DHCP客户端,向DHCP服务器发送伪造的DHCP续约报文,导致DHCP服务器和DHCP客户端无法按照自己的意愿及时释放IP地址租约。如果攻击者冒充不同的DHCP客户端发送大量伪造的DHCP续约报文,则会导致大量IP地址被长时间占用,DHCP服务器没有足够的地址分配给新的DHCP客户端。
-
伪造DHCP DECLINE/DHCP RELEASE报文攻击是指攻击者冒充合法的DHCP客户端,向DHCP服务器发送伪造的DHCP DECLINE/DHCP RELEASE报文,导致DHCP服务器错误终止IP地址租约。
六、DHCP防范技术
DHCP Snooping是DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址,并纪律DHCP客户端IP地址与MAC地址等参数的对应关系。DHCP Snooping可以抵御网络中针对DHCP的各种攻击,为用户提供更安全的网络环境和更稳定的网络服务。
1、DHCP Snooping构成
1)DHCP Snooping信任功能
DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP地址。DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的DHCP Server仿冒者为DHCP客户端分配IP地址及其他配置信息。
DHCP Snooping新人功能将接口分为信任接口和非信任接口:
-
信任接口正常接收DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文;
-
非信任接口在接收到DHCP服务器响应的DHCP ACK、DHCPNAK和DHCP Offer报文后,会丢弃该报文;
2)DHCP Snooping绑定表
DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。由于DHCP Snooping绑定表记录了DHCP客户端IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。
2、DHCP Snooping配置
1)华为设备
2)华三设备
3)思科设备
七、参考链接
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!