本篇文章稍微有点长,但相信你一定不会后悔读这篇文章
DHCP的内容还没有讲完,如果觉得总结的还可以,记得阅读下一篇哦
关于DHCP面试的总结后续也会分享,记得关注哦
下一篇文章将写道有关DHCP的 网络攻击和防范机制
目录
一、DHCP介绍
1. 概念:
2. 用途:
3. 原理
4. 报文类型:
5. DHCP报文格式
1.DHCP协议报文封装格式
2. DHCP协议报文格式
6. DHCP角色:
1. DHCP客户端:
2. DHCP服务器:
3.(可选)DHCP中继:
7. 端口:
二、DHCP原理描述
1. DHCP服务器给首次接入网络工作原理:
1. 无中继场景:
2. 有中继场景:
3. DHCP客户端重用曾经使用的地址的工作原理:
4. DHCP客户端更新租期的工作原理:
三、DHCP的优缺点
优点:
缺点:
四、DHCP配置方法
1. 接口配置办法
2. 全局配置办法
最后,可以简单看张图,对着图回想中间的细节
由于篇幅问题,关于DHCP存在的安全问题和解决方法等内容留到下一篇文章叙述
是一种用于集中对用户IP地址进行动态管理和配置的技术。
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议。
DHCP采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,服务器返回为客户端分配的配置信息(包括IP地址、缺省网关、DNS Server、WINS Server等参数),可以实现IP地址动态分配,以及其他网络参数的集中配置管理。
1. 给内部网络或网络服务供应商自动分配IP地址
2. 给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
DHCP四个工作步骤:
1. 客户端通过广播发送DHCP Disccover报文寻找服务器端
2. 服务器通过单播发送DHCP offer报文向客户提供IP地址等信息
3. 客户端通过广播发送DHCP Request报文告知服务端本地选择使用哪个IP
4. 服务器通过单播发送DHCP Ack报文告知客户端IP地址是合法可用的
链路层头、IP头、UDP头和DHCP报文。
dhcp主要的数据都封装在dhcp报文中。
Op消息操作代码:1byte,既可以是引导请求(BOOTREQUEST)也可以是引导答复(BOOTREPLY),1为请求报文;2为响应报文。具体的报文类型在option字段中标识。
Htype:硬件地址类型:1byte,表示client硬件地址的类型,1表示以太网类型。
Hlen:硬件地址长度:1byte,以太网的硬件地址长度为6bytes。
Xid:处理ID:1byte,由client端产生的随机数,用于匹配请求和应答报文,就是匹配应答报文是对哪个请求报文做出应答。
Secs:从获取到IP地址或者续约过程开始到现在所消耗的时间:2bytes,客户端进入IP地址申请进程的时间或者更新IP地址进程的时间;由客户端软件根据情况设定。目前没有使用,固定为0。
Flags:标记:2bytes,16bit中只使用了最高位比特(即最左边的比特),这个个比特是广播响应标识位,用来标识DHCP服务器发出的响应报文是广播还是单播,0是单播,1是广播。其余的比特位保留不用,都为0.
Ciaddr:客户机IP地址:4bytes,可以是client自己的IP地址,也可以是server分配给client的IP地址。
Yiaddr:你的(客户机)IP地址:4bytes,是server分配给client的IP地址。
Siaddr:在bootstrap中使用的下一台服务器的IP地址:4bytes,是client端获取IP地址等信息的server端的地址。
Giaddr:用于导入的接替代理IP地址:4bytes,是client发出请求报文后经过的第一个中继的IP地址。
Chaddr:客户机硬件:16bytes,是client端的硬件地址,在client发出报文时会把自己网卡的硬件地址写进这个字段。
Sname:任意服务器主机名称:空终止符,64bytes,是client端获取IP地址等信息的服务器名称。
File:DHCP发现协议中的引导文件名、空终止符、属名或者空:DHCP供应协议中的受限目录路径名
Options:可选参数字段:这个字段包含了终端的初始配置信息和网络配置信息,包括报文类型,有效租期,DNS服务器的IP地址等配置信息。这个字段的结构采用“CLV”结构。
通过DHCP协议请求获取IP地址等网络参数的设备。
例如,IP电话、PC、手机、无盘工作站等。
负责为DHCP客户端分配网络参数的设备。
负责转发DHCP服务器和DHCP客户端之间的DHCP报文,
协助DHCP服务器向DHCP客户端动态分配网络参数的设备。
DHCP报文是基于UDP协议传输的。
DHCP统一使用两个IANA分配的端口作为BOOTP:服务器端使用67,客户端使用68。
DHCP客户端向DHCP服务器发送报文时采用67端口号,DHCP服务器向DHCP客户端发送报文时采用68端口号。
DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),
位于同一网段内的DHCP服务器能够接收请求报文。
如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。
不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。
在企业网络中,如果需要规划较多网段,且网段中的终端都需要通过DHCP自动获取IP地址等网络参数时,可以部署DHCP中继。这样,不同网段的终端可以共用一个DHCP服务器,节省了服务器资源,方便统一管理。
1. 发现阶段——DHCP客户端发现DHCP服务器的阶段。
DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。
广播方式(不知道DHCP服务器的IP地址)(目的IP地址为255.255.255.255,源IP为0.0.0.0)
同一网段内所有DHCP服务器或中继都能收到此报文。
DHCP DISCOVER报文中携带了客户端的MAC地址(chaddr/clint hardware address字段)
需要请求的参数列表选项:
广播标志位(flags字段,客户端请求服务器以单播0或广播1形式发送响应报文)等信息。
2. 提供阶段——DHCP服务器提供网络配置信息的阶段。
所有同网段DHCP服务器都会接收到DHCP DISCOVER报文,DHCP服务器上可能会部署多个地址池,服务器通过地址池来管理可供分配的IP地址。
收到DHCP DISCOVER报文后,从地址池中选择一个可用的IP地址
然后通过DHCP OFFER报文发送给DHCP客户端。
DHCP OFFER报文里面携带了希望分配的IP地址及其租期等配置参数。
DHCP服务器的地址池中会指定IP地址的租期
DHCP DISCOVER报文中携带了期望租期,服务器会将客户端期望租期与其指定的租期进行比较,时间较短的租期分配给客户端。
选择IP地址的优先顺序:
1.DHCP服务器上已配置的与客户端MAC地址静态绑定的IP地址。
2.客户端发送的DHCP DISCOVER报文中请求IP地址选项指定的地址。
3.DHCP服务器上记录的曾经分配给客户端的IP地址。
4.按照IP地址从大到小的顺序查询,选择最先找到的可供分配的IP地址。
(如果未找到可供分配的IP地址,则依次查询超过租期、处于冲突状态的IP地址)
可能出现情况:
1. 找到可用的IP地址:则进行分配;
2. 没有找到可用IP:发送DHCP NAK报文作为应答,通知DHCP客户端无法分配IP地址。
DHCP客户端需要重新发送DHCP DISCOVER报文来申请IP地址。
为了防止分配出去的IP地址跟网络中其他客户端的IP地址冲突,
DHCP服务器在发送DHCP OFFER报文前可以对分配的IP地址进行地址冲突探测。
如果在指定的时间内没有收到应答报文,表示网络中没有客户端使用这个IP地址,可以分配给客户端;
如果指定时间内收到应答报文,表示网络中已经存在使用此IP地址的客户端,则把此地址列为冲突地址,然后等待重新接收到DHCP DISCOVER报文后按照前面介绍的选择IP地址的优先顺序重新选择可用的IP地址。
注意:
此阶段DHCP服务器分配给客户端的IP地址不一定是最终确定使用的IP地址,因为DHCP OFFER报文发送给客户端等待16秒后如果没有收到客户端的响应,此地址就可以继续分配给其他客户端。
通过下面的选择阶段和确认阶段后才能最终确定客户端可以使用的IP地址。
3. 请求阶段——DHCP客户端选择IP地址的阶段。(客户端选择接受)
因为DHCP DISCOVER报文是广播发送的,所以如果同一网段内存在多个DHCP服务器
收到DHCP DISCOVER报文的服务器都会回应DHCP OFFER报文。
如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,
则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,
然后以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和分配给客户端IP地址
广播方式发送DHCP REQUEST报文原因:
以广播方式发送DHCP REQUEST报文,是为了通知所有的DHCP服务器,它将选择某个DHCP服务器提供的IP地址,
其他DHCP服务器可以重新将曾经分配给客户端的IP地址分配给其他客户端。
4. 确认阶段——DHCP服务器确认所分配IP地址的阶段(服务器确认)
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,
DHCP服务器回应DHCP ACK报文,
表示DHCP REQUEST报文中请求的IP地址,分配给客户端使用。
冲突检测:免费ARP(后续有ARP详解)
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP(FARP)报文,
探测本网段是否有其他终端使用服务器分配的IP地址,
如果在指定时间内没有收到回应,表示客户端可以使用此地址。
如果收到了回应,说明有其他终端使用了此地址,
客户端会向服务器发送DHCP DECLINE报文,
并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。
当服务器没有空闲地址可分配时,再选择冲突地址进行分配,尽量减少分配出去的地址冲突。
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,如果DHCP服务器由于某些原因(如协商出错或者由于发送REQUEST过慢(16s)导致服务器已经把此地址分配给其他客户端)无法分配DHCP REQUEST报文中填充的IP地址,
则发送DHCP NAK报文作为应答,通知DHCP客户端无法分配此IP地址。
DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。
发现阶段
中继跳数最大16
客户端以广播发送DHCP DISCOVER报文,同一网段内所有DHCP服务器或中继都能收到。
检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;
否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。
hops字段:
Hops: DHCP报文经过的DHCP中继的数目,该字段由客户端或服务器设置为0,
每经过一个DHCP中继时,该字段加1。
hops字段的作用是限制DHCP报文所经过的DHCP中继的数目。
目前,设备最多支持DHCP客户端与服务器之间有存在16个中继。
检查DHCP报文中的giaddr(gateway ip address)字段。
如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。
如果不是0,则不修改该字段,继续下面的操作。
giaddr字段:
giaddr字段:标识客户端网关的IP地址。
如果服务器和客户端不在同一个网段且中间存在多个DHCP中继,
当客户端发出DHCP请求时,第一个DHCP中继会把自己的IP地址填入此字段,
后面的DHCP中继不修改此字段内容,
DHCP服务器会根据此字段来判断出客户端所在的网段地址,从而为客户端分配该网段的IP地址。
将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,
源地址改为中继连接客户端的接口地址,
通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。
如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。
提供阶段
服务器接收到DHCP DISCOVER报文后,
选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址;
然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。
检查报文中的giaddr字段,
如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。
DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。
选择阶段
确认阶段
选择阶段和确认阶段的过程同无中继场景。
DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。
选择阶段:
客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文
确认阶段:
服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录,如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址。否则,保持沉默,等待客户端重新发送DHCP DISCOVER报文请求新的IP地址。
1. DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。
2. 租期时间到后服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。
这种机制可以提高IP地址的利用率,避免客户端下线后IP地址继续被占用。
如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。
1. 当租期达到50%(T1)时
当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。
如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
2. 当租期达到87.5%(T2)时
当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);
如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
3. 租期时间到时都没有收到服务器的回应
如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
客户端在租期时间到之前,用户不想使用分配的IP地址(例如客户端网络位置需要变更),会触发DHCP客户端向DHCP服务器发送DHCP RELEASE报文,通知DHCP服务器释放IP地址的租期。
DHCP服务器会保留这个DHCP客户端的配置信息,将IP地址列为曾经分配过的IP地址中,以便后续重新分配给该客户端或其他客户端。
客户端可以通过发送DHCP INFORM报文向服务器请求更新配置信息。
自动分配IP地址,大大缩减了人力资源浪费,减轻网络管理员的工作量,加强了管理员对网络设备的管理控制。
1.提供安全而可靠的配置。
DHCP避免了由于需要手动在每个计算机上键入值而引起的配置错误。
DHCP有助于防止由于在网络上配置新的计算机时重用以前指派的IP地址而引起的地址冲突。
2.可以减少配置管理。
使用DHCP服务器可以大大降低用于配置和重新配置网上计算机的时间。
可以配置服务器以便在指派地址租约时提供其他配置值的全部范围。
这些值是使用DHCP选项指派的。
3.DHCP租约续订过程还有助于确保客户端计算机配置需要经常更新的情况
(如使用移动或便携式计算机频繁更改位置的用户),
通过客户端计算机直接与DHCP服务器通讯可以高效、自动地进行这些更改。
4.IP地址采用租用方式,需要时向DHCP服务器申请IP,用完后释放,使IP地址可以再利用。
DHCP服务器数据库是一个动态数据库,向客户端提供租约或释放租约时会自动更新,
降低了管理IP地址的难度,所有DHCP客户的设置和变更都由客户端和服务器自动完成,不需人工干涉。
1.DHCP不能发现网络上非DHCP客户端已经在使用的IP地址。
2.DHCP服务器对于用户的接入没有限制,任何一台电脑只要连接到网络上,就能够通过DHCP服务器获得正确的网络配置,从而访问网络。
这样使得非法的用户很容易进入内部网络,带来安全隐患。
3.当网络上存在多个DHCP服务器时,尤其是存在私设的冒充DHCP服务器时,
一个DHCP服务器不能查出已被其它服务器租出去的IP地址,将会给网络造成混乱。
4.DHCP服务器不能跨路由器与客户端通信,除非路由器允许BOOTP转发。
1、dhcp enable 在系统视图开启DHCP功能
2、int g0/0/1 进入接口
3、dhcp select interface DHCP选择视图模式
4、dhcp server dns-list 2.2.2.2 8.8.8.8 国际通用DNS方式
5、dhcp server lease day 5 设置期限为5天,默认是3天
6、arp broadcast enable 路由需要配置ARP启动才能进行广播
1、dhcp enable 在系统视图开启DHCP功能
2、int g0/0/1 进入接口
3、dhcp select global DHCP选择全局模式(在网关下设置这个命令)
4、quit 回到系统视图(全局模式)下进行之后配置
5、ip pool x x 进行命名如DHCP15
6、network 15.0.0.0 mask 24 网络网段及子网
7、gateway-list 15.0.0.1 网关是15.0.0.1
8、dns-list 2.2.2.2 8.8.8.8 国际通用标准(具体的要求还得看生产环境)