国家 / 地区

DHCP技术白皮书-6W100

手册下载

DHCP技术白皮书

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2019 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。



概述

1.1  产生背景

连接到Internet的计算机需要在发送或接收数据报前知道其IP地址和其他信息,如网关地址、使用的子网掩码和域名服务器的地址。计算机可以通过BOOTP协议获取这些信息。

BOOTP协议(Bootstrap Protocol)是一种较早出现的远程启动的协议,通过与远程服务器通信以获取通信所需的必要信息,主要用于无磁盘的客户端从服务器得到自己的IP地址、服务器的IP地址、启动映像文件名、网关IP地址等等。

BOOTP设计用于相对静态的环境,每台主机都有一个永久的网络连接。管理人员创建一个BOOTP配置文件,该文件定义了每台主机的一组BOOTP参数。由于配置通常保持不变,该文件不会经常改变。一般情况下,配置将保持数星期不变。

随着网络规模的不断扩大、网络复杂度的不断提高,网络配置也变得越来越复杂,在计算机经常移动(如便携机或无线网络)和计算机的数量超过可分配的IP地址等情况下,原有针对静态主机配置的BOOTP协议已经越来越不能满足实际需求。为方便用户快速地接入和退出网络、提高IP地址资源的利用率,需要在BOOTP基础上制定一种自动机制来进行IP地址的分配。为此,IETF设计了一个新的协议,即DHCPDynamic Host Configuration Protocol,动态主机配置协议)。

1.2  技术优势

DHCPBOOTP的增强版本。它采用客户端/服务器的通信模式。所有的IP网络配置参数都由DHCP服务器集中管理,并负责处理客户端的DHCP请求;而客户端则会使用服务器分配的IP网络参数进行通信。

随着网络规模的扩大化和网络环境的复杂化,DHCP服务被应用到越来越多的网络环境中,H3C公司的DHCP特性解决方案具有完整的产品系列,可以为客户提供完善、灵活、便捷的组网配置方案,其主要优势有以下几点:

·     功能完备,可以为客户提供DHCP客户端、中继到服务器的全面功能实现;

·     具有出色的业务支持能力及灵活的组网方案;

·     良好的易用性和可配置性;

·     可以与业界其它主流厂商设备及WindowsLinux服务器实现良好的互通;

·     方便管理、部署经济、设备开销低。

DHCP技术实现

2.1  概念介绍

·     DHCP服务器:DHCP服务的提供者,通过DHCP报文与DHCP客户端交互,为各种类型的客户端分配合适的IP地址,并可以根据需要为客户端分配其它网络参数。

·     DHCP客户端:是整个DHCP过程的触发者和驱动者,通过DHCP报文和DHCP服务器交互,得到IP地址和其他网络参数。

·     DHCP中继:DHCP报文的中继转发者。它在处于不同网段间的DHCP客户端和服务器之间承担中继服务,解决了DHCP客户端和DHCP服务器必须位于同一网段的问题。

·     DHCP SnoopingDHCP服务的二层监听功能。利用该功能可以从接收到的DHCP-ACKDHCP-REQUEST报文中提取并记录IP地址和MAC地址信息。

2.2  DHCP报文格式

DHCP报文格式如1所示。

图1 DHCP报文格式

 

DHCP报文的各个字段的具体说明如下:

·     op:报文的操作类型,1为请求报文,2为响应报文。具体的报文类型在option字段中标识。

·     htype:硬件地址类型。

·     hlen:硬件地址长度。系统目前只支持以太网,硬件地址长度固定为6

·     hopsDHCP报文经过的DHCP中继的数目。DHCP请求报文每经过一个DHCP中继,该字段就会增加1

·     xid:由客户端软件产生的随机数,用于匹配请求和应答报文。

·     secs:客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0

·     flags:标志字段。第一个比特为广播响应标识位,用来标识DHCP服务器响应报文是采用单播还是广播方式发送,0表示采用单播方式,1表示采用广播方式。其余比特保留不用。

·     ciaddrDHCP客户端的IP地址。

·     yiaddrDHCP服务器分配给客户端的IP地址。

·     siaddrDHCP客户端获取IP地址等信息的服务器IP地址。

·     giaddrDHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。

·     chaddrDHCP客户端的硬件地址。

·     snameDHCP客户端获取IP地址等信息的服务器名称。

·     fileDHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。

·     options:可选变长选项字段,包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。

2.3  DHCP服务器运行机制

由于在IP地址动态获取过程中采用广播方式发送报文,因此要求DHCP客户端和服务器位于同一个网段内。如果DHCP客户端和DHCP服务器位于不同的网段,则需要通过DHCP中继来转发DHCP报文。

通过DHCP中继完成动态配置的过程中,客户端与服务器的处理方式与不通过DHCP中继时的处理方式基本相同。下面仅以DHCP客户端与DHCP服务器在同一网段的情况为例,说明DHCP协议的工作过程。

2.3.1  地址分配策略

针对客户端的不同需求,DHCP提供三种IP地址分配策略:

·     手工分配地址:由管理员为少数特定客户端(如WWW服务器等)静态绑定固定的IP地址,通过DHCP将配置的固定IP地址发给客户端;

·     自动分配地址:DHCP为客户端分配租期为无限长的IP地址;

·     动态分配地址:DHCP为客户端分配有有效期限的IP地址,到达使用期限后,客户端需要重新申请地址。

管理员可以选择DHCP采用哪种策略响应每个网络或每台主机。

2.3.2  动态获取IP地址

为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段:

(1)     发现阶段:即DHCP客户端寻找DHCP服务器的阶段。

(2)     提供阶段:即DHCP服务器提供IP地址的阶段。

(3)     选择阶段:即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。

(4)     确认阶段:即DHCP服务器确认所提供的IP地址的阶段。

图2 IP地址动态获取过程

 

IP地址的动态获取过程如2所示,下面将详细介绍每个阶段的工作过程。

1. 发现阶段

在发现阶段,DHCP客户端通过发送DHCP-DISCOVER报文来寻找DHCP服务器。

由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP-DISCOVER报文。所有收到DHCP-DISCOVER报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。

2. 提供阶段

网络中接收到DHCP-DISCOVER报文的DHCP服务器,会选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址,域名服务器地址等)一同通过DHCP-OFFER报文发送给DHCP客户端。

DHCP服务器通过地址池保存可供分配的IP地址和其他配置信息。当DHCP服务器接收到DHCP请求报文后,将从IP地址池中选取空闲的IP地址及其他的参数,发送给DHCP客户端。

DHCP服务器为客户端分配IP地址的优先次序如下:

(1)     与客户端MAC地址或客户端ID静态绑定的IP地址;

(2)     DHCP服务器记录的曾经分配给客户端的IP地址;

(3)     客户端发送的DHCP-DISCOVER报文中Option 50字段指定的IP地址;

(4)     DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;

(5)     如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。

DHCP服务器为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。DHCP服务器通过发送ICMP Echo Requestping)报文对分配的IP进行探测。如果在规定的时间内没有收到应答,那么服务器就会再次发送ping报文。到达指定的次数后,如果仍没有收到应答,则所分配的IP地址可用。否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。

3. 选择阶段

如果有多台DHCP服务器向DHCP客户端回应DHCP-OFFER报文,则DHCP客户端只接受第一个收到的DHCP-OFFER报文。然后以广播方式发送DHCP-REQUEST请求报文,该报文中包含Option 54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。

以广播方式发送DHCP-REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option 54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。

4. 确认阶段

收到DHCP客户端发送的DHCP-REQUEST请求报文后,DHCP服务器根据DHCP-REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则发送DHCP-ACK报文作为应答,通知DHCP客户端可以使用分配的IP地址。

DHCP客户端收到DHCP服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARPAddress Resolution Protocol,地址解析协议)报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。

如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP-DISCOVER报文来请求新的IP地址。

2.3.3  重用曾经分配的IP地址

DHCP客户端每次重新登录网络时,不需要再发送DHCP-DISCOVER报文,而是直接广播发送包含前一次分配的IP地址的DHCP-REQUEST请求报文,即报文中的Option 50(请求的IP地址选项)字段填入曾经使用过的IP地址。DHCP服务器收到这一报文后,判断DHCP客户端是否可以使用请求的地址:

·     如果可以使用请求的地址,DHCP服务器将回复DHCP-ACK确认报文。收到DHCP-ACK报文后,DHCP客户端可以继续使用该地址进行通信。3所示。

图3 DHCP客户端可以重新使用曾分配的IP地址

 

·     如果请求的IP地址已无法再分配给DHCP客户端(例如,此IP地址已分配给其它DHCP客户端使用),则DHCP服务器将回复DHCP-NAK否认报文。DHCP客户端收到此报文后,必须重新发送DHCP-DISCOVER报文来请求新的IP地址。4所示。

图4 DHCP客户端不能重新使用曾分配的IP地址

 

2.3.4  更新租约

DHCP服务器分配给DHCP客户端的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回分配的IP地址。如果DHCP客户端要延长其IP租约,则必须更新其IP租约。

(1)     IP租约期限达到一半(T1)时,DHCP客户端会自动以单播的方式,向DHCP服务器发送DHCP-REQUEST报文,请求更新IP地址租约。如果收到DHCP-ACK报文,则租约更新成功;如果收到DHCP-NAK报文,则重新发起申请过程。

(2)     到达租约期限的87.5%T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动向DHCP服务器发送更新其IP租约的广播报文。如果收到DHCP-ACK报文,则租约更新成功;如果收到DHCP-NAK报文,则重新发起申请过程。

5所示,租约达到87.5%,广播发送DHCP-REQUEST报文后,收到DHCP服务器回应的DHCP-ACK报文,租约更新成功。

图5 更新IP地址租约

 

2.3.5  DHCP客户端主动释放IP地址

DHCP客户端不再使用分配的IP地址时,会主动向DHCP服务器发送DHCP-RELEASE报文,通知DHCP服务器释放IP地址的租约。DHCP服务器会保留这个DHCP客户端的配置信息,以便该客户端重新申请地址时,重用这些参数。

2.3.6  获取除IP地址外的配置信息

DHCP客户端获取IP地址后,如果需要从DHCP服务器获取更为详细的配置信息,则发送DHCP-INFORM报文向DHCP服务器进行请求。DHCP客户端通过Option 55(请求参数列表选项),指明需要从服务器获取哪些网络配置参数。

DHCP服务器收到该报文后,将通过DHCP-ACK报文为客户端分配它所需要的网络参数。

2.3.7  转控分离组网地址池支持动态分配子网段

本功能适用于转发控制分离组网,此类组网主要包括CPControl Plane,控制平面)和UPUser Plane,用户平面)两类设备:

·     CP设备:负责所有终端用户的认证、授权等工作。

·     UP设备:负责将连接的终端用户按照不同业务划分到不同的VXLAN组网、转发终端用户报文等工作。

CP设备和UP设备之间通过建立OpenFlowVXLAN两条传输通道:

·     OpenFlow作为CP设备和UP设备之间的表项下发通道。

·     VXLAN隧道作为CP设备和UP设备之间的协议报文通道。

图6 IP地址池支持动态分配子网段功能原理图

 

6所示,CP设备通过VXLAN隧道连接多台UP设备,CP设备上开启了DHCP服务器功能,CP设备根据配置的子网段掩码长度将IP地址池中的地址空间分成多个子网段。

动态地址池组网的工作过程为:

(1)     CP设备收到DHCP客户端发送的DHCP-DISCOVER报文时,根据动态地址池下配置的分配模式(up-idinterfaceup-backup-group),查看是否有子网段可以为这个DHCP客户端分配租约。如果存在,直接使用该子网段为DHCP客户端分配租约;如果不存在,则进入下一步骤。

(2)     CP设备按照用户上线时携带的up-idinterfaceup-backup-group信息及动态地址池下配置的分配模式来给UP设备动态分配一个子网段,并从该子网段中选择地址分配给上线用户。同时,CP设备会将该子网段对应的网段路由下发给UP设备,当路由收敛结束后,外部网络可以访问到此UP设备下联的用户。

(3)     当某个子网段的用户全部下线后,CP设备会回收该子网段。

本功能实现了DHCP服务器对IP地址空间的灵活分配和回收,使地址空间分配更合理,并大幅节约了人力维护成本。

2.3.8  ODAP组网按需分配地址池

ODAPOn-Demand Address Pool,按需地址池)根据实际需求动态分配和回收子网段,可以充分利用地址资源。ODAP适用于大量用户上线的组网环境。ODAP组网主要包括服务器子网管理设备(ODAP服务器)和本地子网管理设备(ODAP客户端)。

图7 ODAP按需地址池分配子网段功能原理图

 

7所示,一台ODAP服务器可以连接多台ODAP客户端,ODAP服务器和ODAP客户端均作为DHCP服务器。ODAP服务器上的IP地址池中创建了含有大量地址的网段地址空间,ODAP服务器根据配置的子网掩码长度将这些地址空间分成多个子网段。ODAP客户端上的IP地址池不创建网段地址空间,ODAP客户端需要先从ODAP服务器申请子网段,再从该子网段中选择地址分配给DHCP客户端。

ODAP组网的工作过程为:

(1)     ODAP客户端收到DHCP客户端发送的DHCP-DISCOVER报文时,根据ODAP客户端地址池下配置的分配模式(up-idinterfaceup-backup-group),查看是否有子网段可以给这个DHCP客户端分配。如果存在,则直接使用该子网段给DHCP客户端分配租约;如果不存在,则进入下一步骤。

(2)     ODAP客户端向ODAP服务器申请子网段。子网段申请过程与IP地址申请过程基本相同,不同之处在于子网段申请过程中,ODAP客户端和ODAP服务器发送的报文中均携带Option 220Option 221选项。其中,ODAP客户端发送的请求报文中的Option 220携带请求子网段信息,Option 221携带ODAP客户端地址池所在VPN信息;ODAP服务器发送的应答报文中的Option 220携带分配的子网段信息,Option 221携带ODAP服务器地址池所在VPN信息。

(3)     ODAP客户端使用申请到的子网段为DHCP客户端分配租约。

相比于动态分配子网段功能,ODAP功能降低了ODAP服务器工作负担,使ODAP组网适用于更大规模的动态网段分配组网环境。

ODAP客户端发生故障或者与ODAP服务器之间连接中断时,ODAP服务器感知不到此类事件,导致ODAP服务器无法回收该ODAP客户端的子网段。此时,可以强制ODAP服务器更新子网,该过程为:

(1)     触发一次ODAP服务器的子网强制更新操作后,ODAP服务器会主动向所有ODAP客户端发送DHCP-FORCERENEW报文请求申请到的子网段信息。

(2)     ODAP客户端收到该报文后,通过DHCP-REQUEST报文将自己申请到的子网段信息发送给ODAP服务器。

(3)     ODAP服务器统计DHCP-REQUEST报文中记录的所有子网段信息,未统计到的子网段都会被ODAP服务器直接回收。

本功能保证了子网段资源不会被浪费。

2.3.9  IP地址池组

AAA组网中,终端用户经过AAA认证后,DHCP设备根据AAA服务器的授权信息从本地配置的IP地址池中选择IP地址。如果只配置AAA关联某个独立的IP地址池,则无法满足如下需求

·     为不同位置的接入用户选择不同的DHCP服务器。

·     AAA设备既需要作为DHCP服务器也需要作为DHCP中继,作为DHCP服务器可以直接为客户端分配地址;作为DHCP中继可以将用户的请求报文转发给DHCP服务器,并将DHCP服务器的应答报文转发给终端用户。

·     普通组网和转控分离组网混合环境,AAA需要同时添加普通地址池和可动态分配子网段的地址池。

AAA关联IP地址池组功能可以满足上述需求。使用IP地址池组功能,管理员可以将多个IP地址池添加到同一个IP地址池组中。IP地址池包括普通地址池、本地BAS IP地址池和远端BAS IP址池。配置AAAIP址池组后,AAA按照匹配顺序选择IP址池组中的地址池为终端用户分配IP地址。

DHCP客户端通过IP地址池组获取地址的工作过程为:

(1)     设备收到DHCP客户端发送的DHCP-DISCOVER报文时,如果设备发现该用户已经成功上线,则还会使用同样的地址分配给用户;如果用户未上线,但在某个地址池下存在对应的静态绑定关系,则使用静态绑定关系对应的地址分配给用户,如果不存在以上情况,则继续执行如下步骤。

(2)     根据该用户上线时的UP设备地址或远端接口信息,查看是否存在UP地址或远端接口绑定的可用的普通地址池和本BAS IP地址池。如果存在,则选择该地址池为用户分配地址;如果不存在,则继续执行如下步骤。

(3)     设备查看是否存在未绑定UP地址和远端接口的可用普通地址池和本地BAS IP地址池。如果存在,则按照Buildrun显示的顺序选取地址池为用户分配租约;如果不存在,则继续执行如下步骤。

(4)     根据该用户上线时的UP地址或远端接口信息,查看是否存在UP地址或远端接口绑定的可用远BAS IP址池。如果存在,则将报文转发给该地址池对应DHCP务器;如果不存在,则继续执行如下步骤。

(5)     设备查看是否存在未绑定UP地址和远端接口的可用远端BAS IP地址池。如果存在,则按照Buildrun显示的顺序选择远BAS IP址池,并将报文转发地址池对应DHCP务器;如果不存在,则用户无法获取到IP地址。

当用户匹配到IP地址池组中的最后一个地址池,仍无法为用户分配地址,则地址分配过程失败。

2.3.10  应用限制

DHCP具有如下缺点:

·     当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器分配出去的IP地址;

·     DHCP服务器不能跨网段与客户端通信,除非通过DHCP中继转发报文。

2.4  DHCP中继运行机制

原始的DHCP协议要求客户端和服务器只能在同一个子网内,不可以跨网段工作。因此,为进行动态主机配置需要在所有网段上都设置一个DHCP服务器,这显然是不经济的。

DHCP中继的引入解决了这一问题,它在处于不同网段间的DHCP客户端和服务器之间承担中继服务,将DHCP协议报文跨网段中继到目的DHCP服务器,于是不同网络上的DHCP客户端可以共同使用一个DHCP服务器。

图8 DHCP中继工作过程示意图

 

DHCP中继的工作过程如8所示。DHCP客户端发送请求报文给DHCP服务器,DHCP中继收到该报文并适当处理后,发送给指定的位于其它网段上的DHCP服务器。服务器根据请求报文中提供的必要信息,通过DHCP中继将配置信息返回给客户端,完成对客户端的动态配置。

(1)     DHCP中继接收到DHCP-DISCOVERDHCP-REQUEST报文后,将进行如下处理:

¡     为防止DHCP报文形成环路,抛弃报文头中hops字段的值大于限定跳数的DHCP请求报文。如果收到的请求报文的报文头中hops字段的值小于或等于限定跳数,则继续进行下面的操作。

¡     检查giaddr字段。如果是0,需要将giaddr字段设置为接收请求报文的接口IP地址。如果接口有多个IP地址,则选择接口的主IP地址。以后从该接口接收的所有请求报文都使用该IP地址。如果giaddr字段不是0,则不修改该字段。

¡     hops字段增加1,表明又经过一次DHCP中继。

¡     将请求报文的TTL设置为DHCP中继设备的TTL缺省值,而不是原来请求报文的TTL1。中继报文的环路问题和跳数限制问题都可以通过hops字段来解决。

¡     DHCP请求报文的目的地址修改为DHCP服务器或下一个DHCP中继的IP地址。从而,将DHCP请求报文中继转发给DHCP服务器或下一个DHCP中继。

(2)     DHCP服务器根据giaddr字段为客户端分配IP地址等参数,并将DHCP应答报文发送给giaddr字段标识的DHCP中继。DHCP中继接收到DHCP应答报文后,会进行如下处理:

¡     DHCP中继假设所有的应答报文都是发给直连的DHCP客户端。giaddr字段用来识别与客户端直连的接口。如果giaddr不是本地接口的地址,DHCP中继将丢弃应答报文。

¡     DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP应答报文广播发送给DHCP客户端;否则将DHCP应答报文单播发送给DHCP客户端,其目的地址为yiaddr,链路层地址为chaddr

2.5  DHCP Snooping运行机制

2.5.1  DHCP Snooping基本监听功能

DHCP SnoopingDHCP服务的二层监听功能。出于安全性的考虑,安全部门需要记录用户上网时所用的IP地址,确认用户申请的IP地址和用户使用的主机的MAC地址的对应关系。此时,可以通过DHCP Snooping功能监听接收到的DHCP-REQUEST报文和DHCP-ACK报文,从中提取并记录用户获取的IP地址信息。

2.5.2  DHCP Snooping信任功能

DHCP Snooping的信任功能,可以为用户提供进一步的安全性保证

DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的伪造或非法DHCP服务器为其他主机分配IP地址及其他配置信息。

DHCP Snooping信任功能将端口分为信任端口和不信任端口:

·     信任端口是与合法的DHCP服务器直接或间接连接的端口。信任端口对接收到的DHCP报文正常转发,从而保证了DHCP客户端获取正确的IP地址。

·     不信任端口是不与合法的DHCP服务器连接的端口。从不信任端口接收到DHCP服务器响应的DHCP-ACKDHCP-NAKDHCP-OFFER报文会被丢弃,从而防止了DHCP客户端获得错误的IP地址。

DHCP扩展功能

3.1  DHCP安全功能

DHCP安全功能可以防止非法用户发起的地址申请攻击。在DHCP服务器或DHCP中继设备上配置DHCP安全功能后,就可以有效地进行地址规划和分配,实现对用户的控制。

DHCP安全实现的基本功能如下:

(1)     合法用户IP地址表项管理

确保所有合法用户都记录在DHCP中继的用户地址表项中。

当客户端通过DHCP中继从DHCP服务器获取到IP地址时,DHCP中继可以自动记录客户端IP地址与MAC地址的绑定关系,生成DHCP中继的动态用户地址表项。DHCP中继还支持用户表项的手工删除和查询功能。

(2)     用户地址表项老化功能

DHCP客户端释放动态获取的IP地址时,会向DHCP服务器单播发送DHCP-RELEASE报文,DHCP中继不会处理该报文的内容。如果此时DHCP中继上记录了该IP地址与MAC地址的绑定关系,则会造成DHCP中继的用户地址表项无法实时刷新。为了解决这个问题,DHCP中继支持动态用户地址表项的定时刷新功能。

DHCP中继动态用户地址表项定时刷新功能开启时,DHCP中继每隔指定时间间隔采用客户端获取到的IP地址和DHCP中继接口的MAC地址向DHCP服务器发送DHCP-REQUEST报文:

¡     如果DHCP中继接收到DHCP服务器响应的DHCP-ACK报文或在指定时间内未接收到DHCP服务器的响应报文,则表明这个IP地址已经可以进行分配,DHCP中继会删除对应的动态用户地址表项。为了避免地址浪费,DHCP中继收到DHCP-ACK报文后,会发送DHCP-RELEASE报文释放申请到的IP地址。

¡     如果DHCP中继接收到DHCP服务器响应的DHCP-NAK报文,则表示该IP地址的租约仍然存在,DHCP中继不会删除该IP地址对应的表项。

(3)     DHCP Flood攻击防范功能

DHCP Flood攻击防范功能用于防止源MAC地址固定的DHCP泛洪类攻击,本功能支持在DHCP服务器和DHCP中继上配置。

配置DHCP Flood攻击防范功能后,DHCP设备会根据DHCP报文中的源MAC地址统计收到的DHCP报文数,并创建一个check状态的DHCPFlood攻击表项。当收到某个MAC地址对应DHCP客户端发送的报文数在指定的时间内达到配置的最大报文数时,DHCP设备认为受到了该DHCP客户端的攻击,DHCPFlood攻击表项状态从check状态变成restrain状态,且DHCP设备丢弃该DHCP客户端发送的DHCP报文。DHCP设备在DHCP Flood攻击表项老化时间到达后会检查表项对应报文的抑制速率。如果速率小于DHCP Flood攻击报文速率阈值,设备会删除此表项,设备再次收到源MAC地址为此MAC地址的DHCP请求报文时,会重新统计接收到的报文数目;如果速率大于等于DHCP Flood攻击报文速率阈值,设备不会删除此表项,老化时间重新刷新。

(4)     DHCP接口攻击抑制功能

DHCP接口攻击抑制功能用于防止对某个指定接口的DHCP泛洪类攻击,本功能支持在DHCP服务器和DHCP中继上配置。

在某接口开启DHCP接口攻击抑制功能后,该接口收到DHCP报文后,会统计收到的DHCP报文数,同时创建一个check状态的DHCP接口攻击抑制表项。当接口收到的DHCP报文数在指定的时间内达到配置的最大报文数时,则认为该接口受到了DHCP报文攻击,DHCP接口攻击抑制表项状态从check状态变成restrain状态。在DHCP接口攻击抑制表项的老化时间到期之前,设备会限制被攻击的接口每秒钟接收DHCP报文的速率,防止DHCP攻击报文持续冲击CPU。当某个接口对应的DHCP接口攻击抑制表项老化时间到达后,接口会检查当前接口收到报文的速率。如果速率达不到攻击标准,设备会删除此表项,接口再次收到DHCP报文时,会重新统计接收到的报文数目;如果速率超过攻击标准,则DHCP接口攻击抑制表项老化时间重新刷新。

(5)     DHCP防饿死功能

DHCP饿死攻击是指攻击者伪造chaddr字段各不相同的DHCP请求报文,向DHCP服务器申请大量的IP地址,导致DHCP服务器地址池中的地址耗尽,无法为合法的DHCP客户端分配IP地址,或导致DHCP服务器消耗过多的系统资源,无法处理正常业务。

如果封装DHCP请求报文的数据帧的源MAC地址各不相同,则通过mac-address max-mac-count命令限制端口可以学习到的MAC地址数,并配置学习到的MAC地址数达到最大值时,丢弃源MAC地址不在MAC地址表里的报文,能够避免攻击者申请过多的IP地址,在一定程度上阻止了DHCP饿死攻击。此时,不存在DHCP饿死攻击的端口下的DHCP客户端可以正常获取IP地址,但存在DHCP饿死攻击的端口下的DHCP客户端仍可能无法获取IP地址。如果封装DHCP请求报文的数据帧的MAC地址都相同,则通过mac-address max-mac-count命令无法防止DHCP饿死攻击。

DHCP 服务器的MAC地址检查功能可以很好地解决饿死攻击问题。开启该功能后,DHCP服务器检查接收到的DHCP请求报文中的chaddr字段和数据帧的源MAC地址字段是否一致。如果一致,则认为该报文合法,进行后续处理;如果不一致,则丢弃该报文。

(6)     DHCP中继代理功能

设备可以通过配置DHCP中继支持代理功能,来防止非法用户攻击DHCP服务器。

开启该功能后,DHCP中继收到DHCP服务器的应答报文,会把报文中的DHCP服务器地址修改为中继的接口地址,并转发给DHCP客户端。当DHCP客户端通过DHCP中继从DHCP服务器获取到IP地址等网络参数后,DHCP客户端会把DHCP中继当作自己的服务器,来进行后续的DHCP功能的报文交互。从而达到了把真正的DHCP服务器和DHCP客户端隔离开,保护DHCP服务器的目的。

3.2  DHCP Option 82功能

在传统的DHCP动态分配IP地址方式中,同一VLAN的用户得到的IP地址所拥有的权限是完全相同的。网络管理者不能对同一VLAN中特定的用户进行有效的控制。普通的DHCP中继代理不支持Option 82DHCP Relay Agent Information OptionDHCP中继代理信息选项),也不能够区分不同的客户端,从而无法结合DHCP动态分配IP地址的应用来控制客户端对网络资源的访问,给网络的安全控制提出了严峻的挑战。

RFC 3046定义了DHCP Relay Agent Information OptionOption 82),在DHCP请求报文中附加一些选项信息,使DHCP服务器能够更精确地确定用户的位置,从而对不同的用户采取不同的地址分配策略。Option 82包含两个子选项Circuit IDSub-option 1)和Remote IDSub-option 2)。

图9 Option82原理示意图

 

9所示,Option 82的工作过程为:

(1)     用户未获得动态IP地址前,只有DHCP报文可以通过DHCP Snooping/DHCP中继设备。

(2)     客户端发出的DHCP-DISCOVER报文到达DHCP Snooping/DHCP中继设备后,DHCP Snooping/DHCP中继设备将客户端的位置信息携带到Option 82中,将DHCP-DISCOVER报文转发给服务器。

(3)     支持DHCP Option 82地址分配策略的DHCP服务器根据Option 82为用户分配相应的IP地址回应DHCP-OFFER报文,在该报文中携带原来的Option 82信息。

(4)     DHCP Snooping/DHCP中继设备将回应报文中的Option 82剥离后,将回应报文发给客户端。

(5)     客户端发出的DHCP-REQUEST报文到达DHCP Snooping/DHCP中继设备后,DHCP Snooping/DHCP中继设备将客户端的位置信息携带到Option 82中,将DHCP-REQUEST报文转发给服务器。

(6)     支持DHCP Option 82地址分配策略的DHCP服务器回应DHCP-ACK在该报文中携带原来的Option 82信息。

(7)     DHCP Snooping/DHCP中继设备将DHCP-ACK报文中的Option 82剥离后,将DHCP-ACK报文发给客户端。

通过将Option 82与支持Option 82地址分配策略的DHCP服务器结合,可以实现使用Option 82Circuit IDRemote ID子选项按不同的用户权限为用户分配不同的IP地址。一方面能更精确地进行IP地址管理,另一方面可以让设备进行“源IP地址”的策略路由,从而达到不同IP地址的用户有不同的路由规则的目的。

3.3  自动配置功能

自动配置功能是设备在空配置启动时自动获取并执行配置文件的功能

当设备在空配置启动时,系统会自动将设备的指定接口(如VLAN接口1或第一个以太网接口)设置为DHCP客户端,并向DHCP服务器获取IP地址及后续获取配置文件所需要的信息(例如:TFTPTrivial File Transfer Protocol,简单文件传输协议)服务器的IP地址、TFTP服务器名、启动文件名等)。如果获取到相关信息,则DHCP客户端就可发起TFTP请求,从指定的TFTP服务器获取配置文件,之后设备使用获取到的配置文件进行设备初始化工作。如果没有获取到相关信息,设备使用空配置文件进行设备初始化工作。

典型组网应用

4.1  在本网段内申请地址组网

10所示,DHCP客户端与DHCP服务器处于同一个网段内,以DHCP的方式动态获取IP地址和其他网络参数。

组网时需要保证DHCP服务器上的地址池网段与DHCP服务器的接口IP地址网段相匹配。

图10 DHCP客户端和DHCP服务器在同一个网段内

 

1.2  跨网段申请地址组网

11所示,用户跨网段申请地址,DHCP服务器与DHCP客户端不在同一个局域网中,客户端通过DHCP中继,以DHCP的方式动态获取IP地址和其他网络参数。

组网时需要把DHCP中继的接口网段与DHCP服务器的地址池网段配置为一致,否则可能会导致DHCP客户端申请的地址不在网关的网段内,致使DHCP客户端无法进行通信。同时,DHCP服务器上需要配置好路由,以保证DHCP中继与DHCP服务器能够单播通信。

图11 DHCP客户端和DHCP服务器不在同一个网段内

 

1.3  DHCP Snooping应用组网

12所示,DHCP客户端与DHCP服务器在同一网段内,二者通过DHCP Snooping通信,以保证DHCP客户端从合法的DHCP服务器获取IP地址。还可以通过DHCP SnoopingDHCP请求报文中添加Option 82,以便DHCP服务器根据DHCP客户端的位置信息为其分配IP地址。

组网时需要注意的是,DHCP Snooping设备所有端口默认为非信任端口,需要配置连接服务器的端口为信任端口,否则会导致DHCP服务器的应答报文无法传递给DHCP客户端。

图12 Option 82典型组网应用

 

1.4  自动配置应用组网

13所示,DHCP客户端在空配置启动时,通过DHCP服务器获取IP地址、TFTP服务器地址等信息后,从TFTP服务器获取配置文件并执行。

图13 自动配置典型组网应用

 

1.5  DHCP应用综合组网

如所示,用户跨网段以DHCP的方式动态获取IP地址,并在二层通过DHCP Snooping提高安全性。

图14 DHCP应用综合组网

 

参考文献

·     RFC 951BOOTSTRAP PROTOCOL(BOOTP)

·     RFC 1497BOOTP Vendor Information Extensions

·     RFC 2131Dynamic Host Configuration Protocol(DHCP)

·     RFC 2132DHCP Options and BOOTP Vendor Extensions

·     RFC 3046DHCP Relay Agent Information Option