小小DHCP,连网管大哥都懂的协议,你还不会嘛?看这里,理论加实验分分钟拿下DHCP,带你走进网管的世界!

学习目标
看完本章博客你将能够:
理解DHCP的原理与配置
理解DHCP Relay的原理与配置
理解DHCP Relay的原理与配置

一、DHCP产生背景

1、手工配置网络参数存在的问题

传统的手工配置网络参数需要每个用户都手动配置IP地址、掩码、网关、DNS等多个参数
这样就会存在一-些问题 :
人员素质要求高
主机的使用者需要懂得如何进行网络参数的配置操作方法,这在实际中是难以做到的。
容易出错
手工配置过程中非常容易出现人为的误操作情况。
灵活性差
网络参数发生改变时,需要重新进行配置操作。例如,如果某主机在网络中的位置发
生了变化,则该主机的网关地址也可能会发生变化,这时就需要重新配置该主机的网
关地址。
IP地址资源利用率低
IP地址无法得到重复利用。
工作量大
配置工作量会随着主机数量的增加而增大。

2、DHCP概念的提出

随着用户规模的扩大及用户位置的不固定性,传统的静态手工配置方式已经无法满足需求,为了实现网络可以动态合理地分配IP地址给主机使用,需要用到动态主机配置协议DHCP。
DHCP相对于静态手工配置有如下优点:
效率高
灵活性强
易于管理

二、DHCP基本原理 与配置实现

1、DHCP基本工作过程

DHCP采用了Client/Server模型;DHCP Client需要从DHCP Server那里获得各种网络配
置参数,这个过程是通过DHCP Client与DHCP Server之间交互各种DHCP消息来实现的。
DHCP消息是封装在UDP报文中的,DHCP Server使用端口号67来接收DHCP消息,
DHCP Client使用端口号68来接收DHCP消息。本课程中,我们主要关心DHCP Client是如
何获得自己的IP地址的。
如图所展示的是DHCP Client通过DHCP来申请获取自己的IP地址的基本过程,这一过程包
含了四个阶段:
发现阶段:
发现阶段也就是PC上的DHCP Client寻找DHCP Server的阶段。PC上的DHCP
Client开始运行后,会以广播的方式发送一个DHCP Discover消息。
需要说明的是,图中所示的二层广播域中除了路由器R上运行了DHCP Server
外,可能还有其它设备也运行了DHCP Server。如果是这样,那么所有这些
DHCP Server都会接收到PC发送的DHCP Discover消息,也都会对所收到的
DHCP Discover消息做出回应。
提供阶段
提供阶段也就是DHCP Server向DHCP Client提供IP地址的阶段,每一个接收
到DHCP Discover消息的DHCP Server(包括路由器R上运行的DHCP Server)
都会从自己维护的地址池中选择一个合适的IP地址,并通过DHCP Offer消息将
这个IP地址发送给DHCP Client。DHCP Server是以单播的方式来发送DHCP
Offer消息的
请求阶段
在请求阶段中,PC上的DHCP Client会在若干个收到的Offer(即若干个收到的DHCP
Offer消息)中根据某种原则来确定出自己将要接受哪一个Offer。通常情况下,DHCP
Client会接受它所收到的第一个Offer(即最先收到的那个DHCP Offer消息)。图中,假
设PC最先收到的DHCP Offer消息是来自路由器R。于是,PC上的DHCP Client会以广播方
式发送一个DHCP Request消息,其意图就是向路由器R上的DHCP Server提出请求,希望
获取到该DHCP Server发送给自己的DHCP Offer消息中所提供的那个IP地址。注意,这个
DHCP Request消息中携带有R上的DHCP Server的标识(称为Server Identifier),表示
PC上的DHCP Client只愿意接受R上的DHCP Server所给出的Offer。  显然,该二层广播域中所有的DHCP Server都会接收到PC上的DHCP Client发送的DHCP
Request消息。R上的DHCP Server收到并分析了该DHCP Request消息后,会明白PC已
经愿意接受自己的Offer了。其他的DHCP Server收到并分析了该DHCP Request消息后,
会明白PC拒绝了自己的Offer。于是,这些DHCP Server就会收回自己当初给予PC的Offer。
也就是说,当初准备提供给PC使用的IP地址现在可以用来分配给别的设备使用了。
确认阶段
在确认阶段,R上的DHCP Server会向PC上的DHCP Client发送一个DHCP Ack消息。注
意,由于种种原因,R上的DHCP Server也可能会向PC上的DHCP Client发送一个DHCP
Nak消息。如果PC接收到了DHCP Nak消息,就说明这次获取IP地址的尝试失败了。在这
种情况下,PC只能重新回到发现阶段来开始新一轮的IP地址申请过程。
在这里插入图片描述
DHCP基本工作过程(2)
DHCP Server每次给DHCP Client分配一个IP地址时,只是跟DHCP Client定立了一个关于
这个IP地址的租约(Lease)。每个租约都有一个租约期(Duration of Lease),DHCP
协议规定租约期的缺省值不得小于1个小时,而实际部署DHCP时,租约期的缺省值通常都
是24小时。在租约期内,DHCP Client才能使用相应的IP地址。当租约期到期之后,DHCP
Client是不被允许继续使用这个IP地址的。在租约期还没有到期的时候,DHCP Client可以
申请续租这个IP地址,其过程如图所示。
DHCP协议规定,在缺省情况下,图中的T1时刻是租约期到了一半的时刻,而T2时刻则是
租约期到了87.5%的时刻。在T1时刻,PC上的DHCP Client会以单播方式向R上的DHCP
Server发送一个DHCP Request消息,请求续租IP地址(也就是请求重新开始租约期的计
时)。如果在T2时刻之前, PC上的DHCP Client收到了回应的DHCP Ack消息,则说明续
租已经成功。如果直到T2时刻,PC上的DHCP Client都未收到回应的DHCP Ack消息,那
么在T2时刻,PC上的DHCP Client会以广播方式发送一个DHCP Request消息,继续请求
续租IP地址。如果在租约期到期之前,PC上的DHCP Client收到了回应的DHCP Ack消息,
则说明续租成功。如果直到租约期到期时,PC上的DHCP Client仍未收到回应的DHCP
Ack消息,那么PC就必须停止使用原来的IP地址,也就是说,PC只能重新从发现阶段开始
来重新申请一个IP地址。
在这里插入图片描述

2、DHCP配置实现

DHCP Server配置基于接口的地址分配方式,只会响应该接口接收的DHCP请求;配置基
于全局地址池的地址分配方式,可以响应所有端口接收的DHCP请求。
dhcp enable //使能DHCP功能,在配置DHCP服务器时必须先执行该命令,才能配置
DHCP的其他功能并生效
ip pool HW //设置一个名为HW的全局地址池
gateway-list 192.168.1.1 //设置分配的网关IP
network 192.168.1.0 mask 255.255.255.0 //设置分配的地址网段
excluded-ip-address 192.168.1.2 //设置不参与自动分配的IP地址范围
lease day 3 hour 0 minute 0 //设置地址池中IP地址的租用有效期限,默认
1天  dns-list 192.168.1.2 //设置分配的DNS服务器地址
interface GigabitEthernet0/0/0
ip address 192.168.1.1 255.255.255.0
dhcp select global //接口下使能全局方式分配地址
interface g0/0/0 ip address 192.168.1.1 24
dhcp select interface //使能接口分配地址方式且关联接口地
址池
dhcp server dns-list 192.168.1.2 //指定分配的DNS服务器地址
dhcp server excluded-ip-address 192.168.1.2 //配置接口地址池中不参与自动分配的
IP地址范围
dhcp server lease day 2 hour 0 minute 0 //配置接口地址池中IP地址的租用有效
期,默认1天
在这里插入图片描述

三、DHCP Relay产生背景

1、为什么需要DHCP Relay ?

随着网络规模的扩大,网络中就会出现用户处于不同网段的情况:
从前面的描述中可知,DHCP Client和DHCP Server必须在同一个二层广播域中才能接收
到彼此发送的DHCP消息。DHCP消息无法跨越二层广播域传递。
一个实际的IP网络通常都包含了多个二层广播域,如果需要部署DHCP,那么可以有两种方
法:
方法一:在每一个二层广播域中都部署一个DHCP Server(代价太大,现实中一般不
推荐此方法)。
方法二:部署一个DHCP Server来同时为多个二层广播域中的DHCP Client服务,这
就需要引入DHCP Relay。
在这里插入图片描述

四、DHCP Relay基本原理与配置实现

1、DHCP Relay基本原理

DHCP Relay的基本作用就是专门在DHCP Client和DHCP Server之间进行DHCP消息的中
转。
如图所示,DHCP Client利用DHCP Relay来从DHCP Server那里获取IP地址等配置参数时,
DHCP Relay必须与DHCP Client位于同一个二层广播域,但DHCP Server可以与DHCP
Relay位于同一个二层广播域,也可以与DHCP Relay位于不同的二层广播域。DHCP
Client与DHCP Relay之间是以广播方式交换DHCP消息的,但DHCP Relay与DHCP
Server之间是以单播方式交换DHCP消息的(这就意味着,DHCP Relay必须事先知道
DHCP Server的IP地址)。
在这里插入图片描述

2、DHCP Relay配置实现

配置DHCP-Server: //DHCP服务器可以采用全局地址分配或
者接口地址分配,此处以全局地址池分配地址为例
dhcp enable
ip pool DHCP-relay //"DHCP-relay"仅为DHCP地址池名称
ip route-static 192.168.1.0 24 10.1.1.2 //由于中继后的DHCP报文是一个源地址
为192.168.1.1的单播报文,需要有回去的路由,当前为了简单,使用静态路由完成,
正常网络内可以配置IGP使得地址能够通信
配置DHCP中继(GW):
dhcp server group DHCP //配置DHCP服务器组名
dhcp-server 10.1.1.1 //设定DHCP服务器地址
dhcp enable //中继设备也需要开启DHCP,否则后面接口下的命令不能使能
interface g0/0/1 //进入连接客户端的接口
ip address 192.168.1.1 24
dhcp select relay //启动DHCP Relay功能
dhcp relay server-select DHCP //设定DHCP Relay要使用的服务器组

五、DHCP面临的安全威胁与防护机制

1、DHCP面临的安全威胁

网络攻击行为无处不在,针对DHCP的攻击行为也不例外。例如,某公司突然出现了大面积用户无法上网的情况,经检查用户终端均未获取到IP地址,且DHCP
DHCP在设计上未充分考虑到安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
DHCP饿死攻击
仿冒DHCP Server攻击
DHCP中间人攻击

2、DHCP饿死攻击

●攻击原理:攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server
地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。
●漏洞分析: DHCP Server向申请者分配IP地址时,无法区分正常的申请者与恶意的申请者。攻击者遇过不断修改DHCP报文中
在这里插入图片描述
DHCP饿死攻击
是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是
耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。
DHCP消息中有一个名叫CHADDR(Client Hardware Address)的字段,该字段是由
DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP
Server是针对CHADDR来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同
的IP地址;DHCP Server无法区分什么样的CHADDR是合法的,什么样的CHADDR是非法
的。利用这个漏洞,攻击者每申请一个IP地址时,就在DHCP消息的CHADDR字段中填写
一个不同的值,以此来冒充是不同的用户在申请IP地址。

3、仿冒DHCP Server攻击

攻击原理:攻击者仿冒DHCP Server ,向客户端分配错误的IP地址及提供错误的网关地址等参数,导致客户端无法正常访问网络。
漏洞分析: DHCP客户端接收到来自DHCP Server的DHCP消息后,无法区分这些DHCP消息是来自仿冒的DHCP Server ,还是来自合法的DHCP Server.
在这里插入图片描述
攻击者私自安装并运行DHCP Server程序后,便可以把自己装扮成一个合法的DHCP
Server,这就是所谓的仿冒DHCP Server。仿冒DHCP Server与合法的DHCP Server在工
作原理上是完全一样的,所不同的是,仿冒DHCP Server会向客户端分配错误的IP地址及
提供错误的网关地址等参数,导致客户端无法正常访问网络。

我们知道,客户端以广播方式发送DHCP Discover消息后,仿冒DHCP Server和合法的
DHCP Server都能够收到该DHCP Discover消息,并且都会回应DHCP Offer消息。如果
客户端最先收到的DHCP Offer消息是来自仿冒DHCP Server,那么客户端就会继续向仿冒
DHCP Server(而不是合法的DHCP Server)请求获得IP地址等参数,而仿冒DHCP
Server就会乘机向客户端分配错误的IP地址及提供错误的网关地址等参数。

4、DHCP中间人攻击

●攻击原理:攻击者利用ARP机制,让PC-A学习到IP-S与MAC- B的映射关系,又让Server学习到IP-A与MAC-B的映射关系。如此一来, PC-A与Server之间交互的IP报文都会经过攻击者中转。
●漏洞分析:从本质上讲,中间人攻击是-种Spoofing IP/MAC攻击,中间人利用了虚假的IP地址与MAC地址之间的映射关系来同时欺骗DHCP的客户端和服务器。
在这里插入图片描述
 如图所示,攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学
习到IP-A与MAC-B的映射关系。当PC-A向DHCP Server发送IP报文时,目的IP地址为IP-S, 源IP地址为IP-A,而封装这个IP报文的帧的目的MAC地址为MAC-B,源MAC地址为MAC- A,所以这个帧会首先到达攻击者PC-B。攻击者收到这个帧后,将这个帧的目的MAC地址
更换为MAC-S,源MAC地址更换为MAC-B,然后将这个帧发往Server。如此“偷梁换
柱”,Server是看不出任何破绽的。另一方面,当DHCP Server向PC-A发送IP报文时,目
的IP地址为IP-A,源IP地址为IP-S,而封装这个IP报文的帧的目的MAC地址为MAC-B,源
MAC地址为MAC-S,所以这个帧也会首先到达攻击者PC-B。攻击者收到这个帧后,将这
个帧的目的MAC地址更换为MAC-A,源MAC地址更换为MAC-B,然后将这个帧发往PC- A。同样,PC-A也是看不出任何破绽的。
 由于往来于PC-A与DHCP Server之间的IP报文都会经过攻击者(中间人)进行中转,攻击
者便很容易窃取这些IP报文中的某些信息,并利用这些信息来进行其他的破坏行为。攻击
者也可以很容易对往来于PC-A与DHCP Server之间的DHCP消息(这些消息是封装在UDP
报文中的,而UDP报文又是封装在IP报文中的)进行篡改,达到直接攻击DHCP的目的。

5、DHCP Snooping技术的出现

●为了增强网络安全,防止DHCP受到攻击, -种称为DHCP Snooping的技术应运
●为了增强网络安全,防止DHCP受到攻击, -种称为DHCP Snooping的技术应运设备制造商在DHCP Snooping的实现上也不尽相同。
●DHCP Snooping部署在交换机上,其作用类似于在DHCP客户端与DHCP服务器端之间构筑了-道虛拟的防火墙。在这里插入图片描述

6、DHCP的防护机制防护机制

DHCP Snooping用于防止DHCP饿死攻击
在这里插入图片描述
DHCP饿死攻击是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是
耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。
DHCP消息中有一个名叫CHADDR(Client Hardware Address)的字段,该字段是由
DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP
Server是针对CHADDR来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同
的IP地址;DHCP Server无法区分什么样的CHADDR是合法的,什么样的CHADDR是非法
的。利用这个漏洞,攻击者每申请一个IP地址时,就在DHCP消息的CHADDR字段中填写
一个不同的值,以此来冒充是不同的用户在申请IP地址。

为了弥补上述漏洞,从而阻止饿死攻击,DHCP Snooping技术支持在端口下对DHCP
Request报文的源MAC地址与CHADDR进行一致性检查:如果二者相同,则转发报文;如
果二者不相同,则丢弃。如果要在某端口下实施源MAC地址与CHADDR的一致性检查,可
以在该端口下使用命令dhcp snooping check dhcp-chaddr enable。  还可能存在这样一种饿死攻击,就是攻击者不断同时变换MAC地址和CHADDR,并且每一次变换时,都让CHADDR与MAC地址相同,如此一来,便可以躲过上述源MAC地址与CHADDR的一致性检查!

DHCP Snooping用3 F防止仿冒DHCP Server攻击

DHCP Snooping将交换机上的端口分为两种类型,即信任端口(Trusted端口)和非信任
端口(Untrusted端口);与合法的DHCP Server相连接的端口应配置为Trusted端口,其
他端口应配置为Untrusted端口。
交换机从Trusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等
等)后,会转发这些报文,从而保证合法的DHCP Server可以正常地分配IP地址及提供其
他网络参数;交换机从Untrusted端口接收到DHCP响应报文(例如DHCP Offer报文、
DHCP Ack报文等等)后,会丢弃这些报文,从而阻止仿冒的DHCP Server分配IP地址及
提供其他网络参数。
关键配置命令:交换机的端口默认是Untrusted端口。如果需要将交换机的某个端口配置
为Trusted端口,可以在该端口视图下使用命令dhcp snooping trusted。如果需要将某个
Trusted端口恢复为Untrusted端口,可以在该端口视图下使用命令undo dhcp snooping
trusted。
在这里插入图片描述
DHCP Snooping用于防止DHCP中间人攻击

,我们已经知道, DHCP中间人攻击本质上是一种Spoofing IP/MAC攻击。 要想防止DHCP中间人攻击,其实就是要防止Spoofing IP/MAC攻击。
运行了DHCP Snooping的交换机会 "侦听( Snooping )”往来于用户与DHCP Server之间的DHCP消息,并从中收集用户的MAC地址(这里的MAC地址是指DHCP消息中CHADDR字段的值)、用户的IP地址(这里的IP地址是指DHCP Servet分配给相应CHADDR的IP地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为DHCP Snooping绑定表。运行了DHCP Snooping的交换机会建立并动态维护DHCP
Snooping绑定表,绑定表中除了包含了用户的MAC地址、用户的IP地址外,还包括IP地址租用期、VLAN-ID等等信息。址租用期、VLAN-ID等等信息。

如图所示,假设DHCP Server给PC- A分配了IP地址IP-A ,给PC-B分配了IP地址IP-B ,那么IP-A与MAC-A就形成了绑定关系, IP-B与MAC-B也形成了绑定关系,这种绑定关系都存放于DHCP Snooping绑定表中。
攻击者为了让Server学习到IP-A与MAC-B的映射关系,会发送ARP请求报文(将ARP报文中的源IP地址填为IP-A ,源MAC地址填为MAC-B )。交换机接收到ARP请求报文后,会检查该ARP请求报文中的源IP地址和源MAC地址,发现该IP/MAC ( IP-A/MAC-B )映射关系不能匹配DHCP Snooping绑定表中的条目, 于是会丢IP/MAC ( IP-A/MAC-B )映射关系不能匹配DHCP Snooping绑定表中的条目, 于是会丢IP/MAC ( IP-A/MAC-B )映射关系不能匹配DHCP Snooping绑定表中的条目, 于是会丢须在交换机的系统视图”下执行配置命令arp dhcp-snooping-detect enable.
在这里插入图片描述

7、DHCP Snooping与IPSG技术的联动

网络中经常会存在针对源IP地址进行欺骗的攻击行为,例如,攻击者仿冒合法用户的IP地
址来向服务器发送IP报文。针对这类攻击,相应的防范技术称为IPSG(IP Source Guard)
技术。
交换机使能IPSG功能后,会对进入交换机端口的报文进行合法性检查,并对报文进行过滤
(如果合法,则转发;如果非法,则丢弃)。
DHCP Snooping技术可与IPSG技术进行联动,即:对于进入交换机端口的报文进行DHCP
Snooping绑定表匹配检查,如果报文的信息和与绑定表一致,则允许其通过,否则丢弃报
文。
报文的检查项可以是源IP地址、源MAC地址、VLAN和物理端口号的若干种组合。例如,
在交换机的端口视图下可支持IP+MAC、IP+VLAN、IP+MAC+VLAN等组合检查,在交
换机的VLAN视图下可支持:IP+MAC、IP+物理端口号、IP+MAC+物理端口号等组合检
查。
关键配置命令:在交换机的端口视图下或VLAN视图下执行配置命令ip source check
user-bind enable。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47219935/article/details/106613328