1.DHCP典型组网
DHCP组网中,包括以下三种角色:
-
DHCP服务器
DHCP服务器负责从地址池中选择IP地址分配至DHCP客户端,还可以为DHCP客户端提供其他网络参数,如默认网关地址、DNS服务器地址和WINS服务器地址。DHCP服务器可以接收处理来自本网段或跨网段由DHCP中继转发的DHCP请求报文。
-
DHCP客户端
DHCP客户端发送DHCP请求报文、通过BOOTP或DHCP协议请求获取IP地址等网络参数的设备。例如,IP电话、PC、手机、无盘工作站等。
-
DHCP中继
DHCP中继负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备。
DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),位于同一网段内的DHCP服务器能够接收请求报文。如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。
2.DHCP租期和地址池
1)租期
DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。
在没有其他空闲地址可用的情况下,DHCP服务器会把客户端主动释放的IP地址分配给其他客户端。
DHCP服务器动态分配的所有IP地址都受租期时长的限制,不同的DHCP服务器配置的租期时长可以不同。静态分配的IP地址不受租期时长的限制,使用期限为无限长。
DHCP客户端不会等到租期到期后再申请IP地址,这样会导致IP地址被服务器回收,然后分配给其他客户端。为保证能够使用原来的IP地址,客户端会在租期到期前的某个时间点就开始申请延长租期。
2)地址池
地址池指的是DHCP服务器可以为客户端分配的所有IP地址的集合。除IP地址外,地址池内还可以配置租期、子网掩码、默认网关等网络参数。在DHCP服务器为客户端分配IP地址时,这些网络参数也一并分配给客户端。
DHCP服务器依据是否部署DHCP中继来选择地址池。无DHCP中继场景下,DHCP服务器选择与接收DHCP请求报文的接口IP地址处于同一网段的地址池。有DHCP中继场景下,
DHCP服务器选择与DHCP请求报文中giaddr字段(标识客户端所在网段)位于同一网段的地址池。
需要根据客户端的数量和接入断开的时间、频率来确定地址池内需要部署的IP地址数量。
根据IP地址的使用情况,地址池中的IP地址可以分为多种状态,包括:
-
Used:表示此IP地址已使用。
-
Idle:表示此IP地址处于空闲状态。
-
Static-bind:表示此IP地址已绑定MAC地址且未使用。
-
Static-bind used:表示此IP地址与MAC地址绑定且已使用。
-
Disable:表示此IP地址无法使用。
-
Expired:表示此IP地址租期已过,处于空闲状态。
地址池中IP地址到期后是Expired状态。地址池内保留Expired状态IP地址的分配记录,目的是当用户重新关联请求IP地址时,分配原来使用过的IP地址给用户,保持用户IP地址的稳定性。
当地址池中Idle状态的IP地址耗尽时,地址池会自动回收Expired状态的IP地址,然后分配给新用户,无需手动清理。
-
Conflict:表示此IP地址与网络上其他地址冲突。
地址池中出现Conflict状态的IP地址,说明提前避免了网络中出现IP地址冲突。以下两种情形会出现Conflict状态IP地址:
- DHCP服务器收到DHCP Discover报文时,给客户端分配IP地址前会发送Ping探测,如果能Ping通则设置IP地址为Conflict状态,并选择其他IP地址分配给客户端。
- DHCP客户端获取IP地址成功后,会立即发送免费ARP报文,如果收到响应,则发送DHCP Decline报文通知DHCP服务器该IP地址冲突,DHCP服务器设置该IP地址为Conflict状态,客户端发送DHCP Discover报文重新申请IP地址。
当地址池中Idle状态和Expired状态的IP地址耗尽时,地址池会自动回收Conflict状态的IP地址,然后分配给新用户,无需手动清理
3.DHCP报文类型
DHCP服务器与DHCP客户端之间通过DHCP报文进行通信。DHCP报文是基于UDP协议传输的。DHCP客户端向DHCP服务器发送报文时采用68端口号,DHCP服务器向DHCP客户端发送报文时采用67端口号。
DHCP定义了如下八种类型报文。
4.DHCP 协议是基于UDP层(这也就是说在snort检测过程中,只能看UDP的包)之上的应用,dhcp使用udp携带报文,udp封装在ip数据包中发送。我们先来看下dhcp报文格式。
DHCP报文是基于UDP协议传输的。DHCP客户端向DHCP服务器发送报文时采用67端口号,DHCP服务器向DHCP客户端发送报文时采用68端口号。
5.DHCP Options字段选项
DHCP报文中的Options字段可以用来存放普通协议中没有定义的控制信息和参数。如果用户在DHCP服务器端配置了Options字段,DHCP客户端在申请IP地址的时候,会通过服务器端回应的DHCP报文获得Options字段中的配置信息。