DHCP技术白皮书.docx
- 文档编号:17927345
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:20
- 大小:93.68KB
DHCP技术白皮书.docx
《DHCP技术白皮书.docx》由会员分享,可在线阅读,更多相关《DHCP技术白皮书.docx(20页珍藏版)》请在冰点文库上搜索。
DHCP技术白皮书
DHCP技术白皮书
关键词:
DHCP,BOOTP,DHCP服务器,DHCP中继,DHCP客户端,DHCPSnooping,DHCP安全
摘 要:
本文介绍了DHCP的基本原理和典型应用,以及H3C公司DHCP特性解决方案的特点和组网情况。
缩略语:
缩略语
英文全名
中文解释
DHCP
DynamicHostConfigurationProtocol
动态主机配置协议
BOOTP
BootstrapProtocol
自举协议
ARP
AddressResolutionProtocol
地址解析协议
Option82
DHCPRelayAgentInformationOption
DHCP中继代理信息选项
TFTP
TrivialFileTransferProtocol
简单文件传输协议
目 录
1 概述
1.1 产生背景
1.2 技术优点
2DHCP协议介绍
2.1 相关术语
2.2DHCP报文格式
2.3DHCP协议工作过程
2.3.1 动态获取IP地址
2.3.2 重用曾经分配的IP地址
2.3.3 更新租约
2.3.4DHCP客户端主动释放IP地址
2.3.5 获取除IP地址外的配置信息
2.4DHCP中继工作过程
2.5DHCP应用限制
3DHCP扩展功能
3.1DHCP安全功能
3.2DHCPSnooping功能
3.2.1DHCPSnooping基本监听功能
3.2.2DHCPSnooping信任功能
3.3DHCPOption82功能
3.4 自动配置功能
4DHCP的典型组网案例
4.1 在本网段内申请地址组网
4.2 跨网段申请地址组网
4.3DHCPSnooping应用组网
4.4 自动配置应用组网
4.5DHCP应用综合组网
5 总结和展望
6 参考文献
1 概述
1.1 产生背景
连接到Internet的计算机需要在发送或接收数据报前知道其IP地址和其他信息,如网关地址、使用的子网掩码和域名服务器的地址。
计算机可以通过BOOTP协议获取这些信息。
BOOTP协议(BootstrapProtocol)是一种较早出现的远程启动的协议,通过与远程服务器通信以获取通信所需的必要信息,主要用于无磁盘的客户端从服务器得到自己的IP地址、服务器的IP地址、启动映像文件名、网关IP地址等等。
BOOTP设计用于相对静态的环境,每台主机都有一个永久的网络连接。
管理人员创建一个BOOTP配置文件,该文件定义了每台主机的一组BOOTP参数。
由于配置通常保持不变,该文件不会经常改变。
典型情况下,配置将保持数星期不变。
随着网络规模的不断扩大、网络复杂度的不断提高,网络配置也变得越来越复杂,在计算机经常移动(如便携机或无线网络)和计算机的数量超过可分配的IP地址等情况下,原有针对静态主机配置的BOOTP协议已经越来越不能满足实际需求。
为方便用户快速地接入和退出网络、提高IP地址资源的利用率,需要在BOOTP基础上制定一种自动机制来进行IP地址的分配。
为此,IETF设计了一个新的协议,即DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)。
1.2 技术优点
DHCP可以说是BOOTP的增强版本。
它采用客户端/服务器的通信模式。
所有的IP网络配置参数都由DHCP服务器集中管理,并负责处理客户端的DHCP请求;而客户端则会使用服务器分配的IP网络参数进行通信。
针对客户端的不同需求,DHCP提供三种IP地址分配策略:
l 手工分配地址:
由管理员为少数特定客户端(如WWW服务器等)静态绑定固定的IP地址,通过DHCP将配置的固定IP地址发给客户端;
l 自动分配地址:
DHCP为客户端分配租期为无限长的IP地址;
l 动态分配地址:
DHCP为客户端分配有有效期限的IP地址,到达使用期限后,客户端需要重新申请地址。
管理员可以选择DHCP采用哪种策略响应每个网络或每台主机。
DHCP从两个方面扩充了BOOTP:
l DHCP允许计算机快速、动态的获取IP地址。
为使用DHCP的动态地址分配机制,管理员必须配置DHCP服务器,使其能提供一组IP地址,称之为地址池。
任何时候一旦有新的计算机连接到网络上,该计算机就与服务器联系,并申请一个IP地址。
服务器从配置的地址池中选择一个地址,并将它分配给该计算机。
l 与BOOTP相比,DHCP可以为客户端提供更加丰富的网络配置信息。
2 DHCP协议介绍
2.1 相关术语
l DHCP服务器:
DHCP服务的提供者,通过DHCP报文与DHCP客户端交互,为各种类型的客户端分配合适的IP地址,并可以根据需要为客户端分配其它网络参数。
l DHCP客户端:
是整个DHCP过程的触发者和驱动者,通过DHCP报文和DHCP服务器交互,得到IP地址和其他网络参数。
l DHCP中继:
DHCP报文的中继转发者。
它在处于不同网段间的DHCP客户端和服务器之间承担中继服务,解决了DHCP客户端和DHCP服务器必须位于同一网段的问题。
l DHCPSnooping:
DHCP服务的二层监听功能。
利用该功能可以从接收到的DHCP-ACK和DHCP-REQUEST报文中提取并记录IP地址和MAC地址信息。
2.2 DHCP报文格式
DHCP报文格式如图1所示。
图1DHCP报文格式
DHCP报文的各个字段的具体说明如下:
l op:
报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。
具体的报文类型在option字段中标识。
l htype:
硬件地址类型。
l hlen:
硬件地址长度。
系统目前只对以太网支持,硬件地址长度固定为6。
l hops:
DHCP报文经过的DHCP中继的数目。
DHCP请求报文每经过一个DHCP中继,该字段就会增加1。
l xid:
由客户端软件产生的随机数,用于匹配请求和应答报文。
l secs:
客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。
目前没有使用,固定为0。
l flags:
标志字段。
第一个比特为广播响应标识位,用来标识DHCP服务器响应报文是采用单播还是广播方式发送,0表示采用单播方式,1表示采用广播方式。
其余比特保留不用。
l ciaddr:
DHCP客户端的IP地址。
l yiaddr:
DHCP服务器分配给客户端的IP地址。
l siaddr:
DHCP客户端获取IP地址等信息的服务器IP地址。
l giaddr:
DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。
l chaddr:
DHCP客户端的硬件地址。
l sname:
DHCP客户端获取IP地址等信息的服务器名称。
l file:
DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。
l options:
可选变长选项字段,包含报文的类型、有效租期、DNS服务器的IP地址、WINS服务器的IP地址等配置信息。
2.3 DHCP协议工作过程
由于在IP地址动态获取过程中采用广播方式发送报文,因此要求DHCP客户端和服务器位于同一个网段内。
如果DHCP客户端和DHCP服务器位于不同的网段,则需要通过DHCP中继来中继转发DHCP报文。
通过DHCP中继完成动态配置的过程中,客户端与服务器的处理方式与不通过DHCP中继时的处理方式基本相同。
下面仅以DHCP客户端与DHCP服务器在同一网段的情况为例,说明DHCP协议的工作过程。
DHCP中继的工作过程,请参见“2.4 DHCP中继工作过程”。
2.3.1 动态获取IP地址
为了动态获取并使用一个合法的IP地址,需要经历以下几个阶段:
(1) 发现阶段:
即DHCP客户端寻找DHCP服务器的阶段。
(2) 提供阶段:
即DHCP服务器提供IP地址的阶段。
(3) 选择阶段:
即DHCP客户端选择某台DHCP服务器提供的IP地址的阶段。
(4) 确认阶段:
即DHCP服务器确认所提供的IP地址的阶段。
图2IP地址动态获取过程
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报文中Option50字段指定的IP地址;
(4) 在DHCP地址池中,顺序查找可供分配的IP地址,最先找到的IP地址;
(5) 如果未找到可用的IP地址,则依次查询租约过期、曾经发生过冲突的IP地址,如果找到则进行分配,否则将不予处理。
DHCP服务器为客户端分配IP地址时,服务器首先需要确认所分配的IP没有被网络上的其他设备所使用。
DHCP服务器通过发送ICMPEchoRequest(ping)报文对分配的IP进行探测。
如果在规定的时间内没有应答,那么服务器就会再次发送ping报文。
到达规定的次数后,如果仍没有应答,则所分配的IP地址可用。
否则将探测的IP地址记录为冲突地址,并重新选择IP地址进行分配。
3.选择阶段
如果有多台DHCP服务器向DHCP客户端回应DHCP-OFFER报文,则DHCP客户端只接受第一个收到的DHCP-OFFER报文。
然后以广播方式发送DHCP-REQUEST请求报文,该报文中包含Option54(服务器标识选项),即它选择的DHCP服务器的IP地址信息。
以广播方式发送DHCP-REQUEST请求报文,是为了通知所有的DHCP服务器,它将选择Option54中标识的DHCP服务器提供的IP地址,其他DHCP服务器可以重新使用曾提供的IP地址。
4.确认阶段
收到DHCP客户端发送的DHCP-REQUEST请求报文后,DHCP服务器根据DHCP-REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。
如果有,则发送DHCP-ACK报文作为应答,通知DHCP客户端可以使用分配的IP地址。
DHCP客户端收到DHCP服务器返回的DHCP-ACK确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。
否则,客户端会发送DHCP-DECLINE报文给DHCP服务器,通知DHCP服务器该地址不可用,并重新申请IP地址。
如果DHCP服务器收到DHCP-REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则发送DHCP-NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。
DHCP客户端需要重新发送DHCP-DISCOVER报文来请求新的IP地址。
2.3.2 重用曾经分配的IP地址
DHCP客户端每次重新登录网络时,不需要再发送DHCP-DISCOVER报文,而是直接发送包含前一次分配的IP地址的DHCP-REQUEST请求报文,即报文中的Option50(请求的IP地址选项)字段填入曾经使用过的IP地址。
DHCP服务器收到这一报文后,判断DHCP客户端是否可以使用请求的地址:
l 如果可以使用请求的地址,DHCP服务器将回复DHCP-ACK确认报文。
收到DHCP-ACK报文后,DHCP客户端可以继续使用该地址进行通信。
如图3所示。
图3DHCP客户端可以重新使用曾分配的IP地址
l 如果请求的IP地址已无法再分配给DHCP客户端(例如,此IP地址已分配给其它DHCP客户端使用),则DHCP服务器将回复DHCP-NAK否认报文。
DHCP客户端收到此报文后,必须重新发送DHCP-DISCOVER报文来请求新的IP地址。
如图4所示。
图4DHCP客户端不能重新使用曾分配的IP地址
2.3.3 更新租约
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.4 DHCP客户端主动释放IP地址
DHCP客户端不再使用分配的IP地址时,会主动向DHCP服务器发送DHCP-RELEASE报文,通知DHCP服务器释放IP地址的租约。
DHCP服务器会保留这个DHCP客户端的配置信息,以便该客户端重新申请地址时,重用这些参数。
2.3.5 获取除IP地址外的配置信息
DHCP客户端获取IP地址后,如果需要从DHCP服务器获取更为详细的配置信息,则发送DHCP-INFORM报文向DHCP服务器进行请求。
DHCP客户端通过Option55(请求参数列表选项),指明需要从服务器获取哪些网络配置参数。
DHCP服务器收到该报文后,将通过DHCP-ACK报文为客户端分配它所需要的网络参数。
2.4 DHCP中继工作过程
原始的DHCP协议要求客户端和服务器只能在同一个子网内,不可以跨网段工作。
因此,为进行动态主机配置需要在所有网段上都设置一个DHCP服务器,这显然是不经济的。
DHCP中继的引入解决了这一问题,它在处于不同网段间的DHCP客户端和服务器之间承担中继服务,将DHCP协议报文跨网段中继到目的DHCP服务器,于是不同网络上的DHCP客户端可以共同使用一个DHCP服务器。
图6DHCP中继工作过程示意图
DHCP中继的工作过程如图6所示。
DHCP客户端发送请求报文给DHCP服务器,DHCP中继收到该报文并适当处理后,发送给指定的位于其它网段上的DHCP服务器。
服务器根据请求报文中提供的必要信息,通过DHCP中继将配置信息返回给客户端,完成对客户端的动态配置。
(1) DHCP中继接收到DHCP-DISCOVER或DHCP-REQUEST报文后,将进行如下处理:
l 为防止DHCP报文形成环路,抛弃报文头中hops字段的值大于限定跳数的DHCP请求报文。
否则,继续进行下面的操作。
l 检查giaddr字段。
如果是0,需要将giaddr字段设置为接收请求报文的接口IP地址。
如果接口有多个IP地址,可选择其一。
以后从该接口接收的所有请求报文都使用该IP地址。
如果giaddr字段不是0,则不修改该字段。
l 将hops字段增加1,表明又经过一次DHCP中继。
l 将请求报文的TTL设置为DHCP中继设备的TTL缺省值,而不是原来请求报文的TTL减1。
对中继报文的环路问题和跳数限制问题都可以通过hops字段来解决。
l DHCP请求报文的目的地址修改为DHCP服务器或下一个DHCP中继的IP地址。
从而,将DHCP请求报文中继转发给DHCP服务器或下一个DHCP中继。
(2) DHCP服务器根据giaddr字段为客户端分配IP地址等参数,并将DHCP应答报文发送给giaddr字段标识的DHCP中继。
DHCP中继接收到DHCP应答报文后,会进行如下处理:
l DHCP中继假设所有的应答报文都是发给直连的DHCP客户端。
giaddr字段用来识别与客户端直连的接口。
如果giaddr不是本地接口的地址,DHCP中继将丢弃应答报文。
l DHCP中继检查报文的广播标志位。
如果广播标志位为1,则将DHCP应答报文广播发送给DHCP客户端;否则将DHCP应答报文单播发送给DHCP客户端,其目的地址为yiaddr,链路层地址为chaddr。
2.5 DHCP应用限制
DHCP具有如下缺点:
(1) 当网络上存在多个DHCP服务器时,一个DHCP服务器不能查出已被其它服务器租出去的IP地址;
(2) DHCP服务器不能跨网段与客户端通信,除非通过DHCP中继转发报文。
3 DHCP扩展功能
3.1 DHCP安全功能
DHCP安全的主要功能是管理DHCP中继的用户地址表(包括动态添加、手工添加、手工删除以及查询),并通过与ARP模块配合实现禁止非正常获取IP地址的用户上网。
这样就可以有效的进行地址规划和分配,实现对用户的控制。
图7DHCP安全示意图
如图7所示,DHCP安全实现的基本功能如下:
(1) 合法用户IP地址表的管理
确保所有合法用户都记录在DHCP中继的用户地址表项中。
当客户端通过DHCP中继从DHCP服务器获取到IP地址时,DHCP中继可以自动记录客户端IP地址与MAC地址的绑定关系,生成DHCP中继的动态用户地址表项。
同时,为满足用户采用合法固定IP地址访问外部网络的需求,DHCP中继也支持静态用户地址表项配置,即在DHCP中继上手工配置IP地址与MAC地址的绑定关系。
DHCP中继还支持用户表项的手工删除和查询功能。
(2) 禁止非正常获取IP地址的用户上网的功能
该功能需要ARP功能配合。
对于和用户地址表中MAC地址与IP地址不匹配的ARP请求,DHCP中继不会返回ARP应答。
(3) 表项老化功能
由于某些三层设备无法处理DHCP客户端发出的DHCP-RELEASE报文(单播报文直接进行硬件三层转发,不会送给CPU处理),造成DHCP客户端主动释放IP地址后,DHCP中继用户地址表中依然保留用户的MAC地址与IP地址绑定信息,使用户地址表项无法老化。
为了解决这个问题,目前设备提供握手功能来实现DHCP用户地址表项的老化。
握手功能即DHCP中继模拟DHCP客户端定期向DHCP服务器发送握手请求报文DHCP-REQUEST,报文的内容根据用户地址表项的内容来构建,但源MAC地址使用DHCP中继接口的MAC地址,以和正常发送的DHCP-REQUEST报文进行区分。
服务器收到DHCP-REQUEST报文后,检测申请的IP地址是否可以分配,若可以分配则回应一个DHCP-ACK报文,若不可以分配则回应一个DHCP-NAK报文。
DHCP中继收到服务器回应的报文后,进行判断:
l 若收到了DHCP-ACK报文,则证明用户表项中的IP地址已经被释放,DHCP中继将删除该表项;
l 若收到了DHCP-NAK报文,则证明用户表项中的IP地址还没有被用户释放,DHCP中继将继续保留该表项。
对于部分DHCP服务器,一旦租约过期就会不响应中继的握手请求报文。
针对这种情况,设备上设置了握手请求报文的最大发送次数。
如果DHCP中继发送DHCP-REQUEST报文的次数达到最大值后,仍没有收到应答,DHCP中继则认为租约已经过期,将该表项删除。
3.2 DHCPSnooping功能
3.2.1 DHCPSnooping基本监听功能
DHCPSnooping即DHCP服务的二层监听功能,开启DHCPSnooping功能后,设备就可以从接收到DHCP-ACK和DHCP-REQUEST报文中提取并记录IP地址和MAC地址信息。
出于安全性的考虑,安全部门需要记录用户上网时所用的IP地址,确认用户申请的IP地址和用户使用的主机的MAC地址的对应关系。
可以通过DHCPSnooping功能监听DHCP-REQUEST报文和DHCP-ACK报文,并记录用户获取的IP地址信息。
3.2.2 DHCPSnooping信任功能
DHCPSnooping的信任功能,可以为用户提供进一步的安全性保证
DHCPSnooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的伪造或非法DHCP服务器为其他主机分配IP地址及其他配置信息。
DHCPSnooping信任功能将端口分为信任端口和不信任端口:
l 信任端口是与合法的DHCP服务器直接或间接连接的端口。
信任端口对接收到的DHCP报文正常转发,从而保证了DHCP客户端获取正确的IP地址。
l 不信任端口是不与合法的DHCP服务器连接的端口。
从不信任端口接收到DHCP服务器响应的DHCP-ACK、DHCP-NAK和DHCP-OFFER报文会被丢弃,从而防止了DHCP客户端获得错误的IP地址。
3.3 DHCPOption82功能
在传统的DHCP动态分配IP地址方式中,同一VLAN的用户得到的IP地址所拥有的权限是完全相同的。
网络管理者不能对同一VLAN中特定的用户进行有效的控制。
普通的DHCP中继代理不支持Option82,也不能够区分不同的客户端,从而无法结合DHCP动态分配IP地址的应用来控制客户端对网络资源的访问,给网络的安全控制提出了严峻的挑战。
RFC3046定义了DHCPRelayAgentInformationOption(Option82),在DHCP请求报文中附加一些选项信息,使DHCP服
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DHCP 技术 白皮书