用户获取IP地址的方式
手工配置
- 通过手工配置IP地址的方式,也就是配置静态IP地址,这种方式适用于终端设备较少的场景。
- 如果从网络管理及安全的角度考虑,对设备与IP地址的绑定关系存在严格要求时,可以配置静态IP地址,比如服务器及大多数网络设备通常有稳定的通信及控制需求,因此往往采用静态IP地址的方式进行配置。
动态获取
- DHCP ( Dynamic Host Configuration Protocol,动态主机配置协议)是一种非常常见的技术,用于对设备的IP地址等信息进行自动分配和管理。
- 如果存在的终端设备数量较多,而且网络对IP地址没有严格管控需求的场景中,比如在这样的访客网络中(酒店、商场等),频繁有匿名用户上、下线的场景中,DHCP是一个非常不错的选择,它可以极大限度地简化网络管理,满足通信需求。
问题背景
- 在一个网络中,如果终端设备接入网络后,获取的IP地址或默认网关地址等信息有误,那么势必造成通信中断或业务受影响。
- DHCP的工作机制导致该协议在工作的过程中可能存在漏洞,最典型的问题之一是非法DHCP Server接入网络后,可能导致大量DHCP客户端获取错误的IP地址信息从而无法正常连接网络。
解决方法
DHCP Snooping是一种DHCP安全技术,用于确保DHCP客户端从合法的DHCP服务器获取正确的IP地址信息。
DHCP Snooping基本工作机制
DHCP动态获取IP地址原理
- 如图所示的网络拓扑中,PC1的网卡设置了通过DHCP的方式自动获取IP地址等信息。
- 当该网卡启动后,PC1从网卡发送DHCP Discover报文,这是一个广播报文,目的IP地址是255.255.255.255,这意味着同处一个广播域(在本例中,意为相同VLAN内)的其他设备也会收到这个报文。
- DHCP Discover报文用于发现广播域中的DHCP服务器。
- DHCP服务器Server 1(合法服务器)收到PC1发送的DHCP Discover报文后,从地址池中挑选一个可用的IP地址,然后向PC1发送DHCP Offer报文,
- 该报文中携带着计划分配给该PC的IP地址、地址的租约期限等信息(还可能有诸如默认网关IP地址、DNS服务器IP地址等字段信息)。
- 需要注意的是,在本广播域中可能除了Server 1之外,还存在其他DHCP服务器(可能是非法服务器),那么这些DHCP服务器都会收到PC1发送的DHCP Discover广播,并且都可能会向PC1发送DHCP Offer报文。
- PC1可能会从多个DHCP服务器收到DHCP Offer,它将选择第一个到达的DHCP Offer报文中所提供的IP地址等信息(假设是Server 1 )。
- 为了告知这些DHCP服务器自己的选择,它从网卡发送一个广播的DHCP Request报文,该报文中携带了Server 1的标识(IP地址)。
- 除了Sever 1之外的其他DHCP服务器收到PC1发送的DHCP Request报文后,知道客户端没有选择自己提供的IP地址,因此将此前预留的地址回收;
- Server 1收到该DHCP Request报文后,进行基本的信息检查,检查通过后向PC1发送DHCP ACK报文以做确认,但是如何合法信息检查不通过则发送DHCP NAK报文。
- PC1只有在收到Served发送的DHCP ACK报文后才能使用分配给它的IP地址,
- 在正式使用该地址之前,它可能会做一个IP地址冲突检查,即从网卡发送广播的免费ARP报文,用于检查该广播域内是否有其他设备已经占用了这个IP地址,在一定时间后如果没有收到任何回应,PC1才能够开始使用该IP地址。
非法DHCP服务器问题
-
从上述DHCP工作过程中,可以发现,一旦网络中出现非法的DHCP服务器,那么客户端可能获取到非法服务器分配的IP地址,从而导致客户端的通信极可能会受到影响
-
如下图所示的网络拓扑中:
- DHCP客户端PC1与网关路由器GW连接在同一台一层交换机上,网络中部署了DHCP服务器Server 1,用于向用户分配IP地址。
- 假设此时交换机上接入了一台非法的DHCP服务器,该服务器可能是攻击者恶意部署的,也可能是网络管理员的无心之失,误将安装了DHCP服务端软件的设备接入到了网络中。
-
当PC1通过DHCP请求IP地址时,Server 1及Server 2都将回应DHCP Offer,此时完全有可能出现的情况是PC1选择了Server2提供的IP地址并最终启用该地址(假设Server2率先回应DHCP Offer报文),
-
由于PC1动态获取的IP地址是非法的,假设并不在本地网段192.168.10.0/24范围内,或者默认网关IP地址并非192.168.10.254等,因此PC1使用该非法IP地址后将出现无法正常通信等问题。
DHCP Snooping
-
在上图所示的网络拓扑中,可以在SW上部署DHCP Snooping,便可解决上述非法DHCP服务器问题。
-
DHCP Snooping可以理解为是DHCP的一个安全特性,基本的功能之一是确保DHCP客户端能从可信任的DHCP服务器获取合法IP地址等信息。
-
在SW上的相应VLAN中激活DHCP Snooping后,SW的接口将存在两种角色。
- 信任接口:信任接口允许接收包括DHCP Offer报文在内的服务器应答报文。
- 非信任接口:非信任接口不会接收包括DHCP Offer、DHCP ACK、DHCP NAK等在内的服务器应答报文。
-
在上图所示的网络拓扑中,可以将交换机连接Server 1的接口指定为DHCP Snooping的信任接口,除此之外,其他接口为非信任接口。
-
如此一来,即使Server 2收到了PC1泛洪的DHCP Discover报文并回应了DHCP Offer报文,该报文也会在SW的GE0/0/21接口上被丢弃,
SW不会将该报文转发给PC1,因此,即可确保非法DHCP服务器Server 2不会对网络造成影响。 -
DHCP Snooping除了以上描述的基本功能外,还支持攻击防范功能,例如可防止DHCP Server拒绝服务攻击、DHCP报文泛洪攻击、仿冒DHCP报文攻击等。
-
在交换机SW上部署DHCP Snooping之后,会侦听DHCP报文的交互过程并将其记录下来,形成如下表项: