DHCP协议:动态主机配置
协议作用:统一分发和管理IP地址使用传输层UDP(不可靠)端口号:67&68(67端口表示服务器,68表示客户端)
基于C/S架构
DHCP服务器就是提供下发IP的设备,客户端自动获取IP的设备或终端
DHCP条件:
1、要有合法IP地址
2、要有接口或者网卡连接到所要下发地址的网络范围
1、DHCP是一种集中对用户主机的配置信息进行动态管理和配置的技术
2、DHCP主要采用C/S模式,是由客户端主动发起请求信息(信息:IP地址、网络掩码、网关的信息),服务器收到相应的请求后,进行回复
3、DHCP的报文总过有8中,分别是:discovry、offer、request、ack、nak、decline、info、release
(1)discovry:是DHCP客户端首次登录网络时,寻找DHCP服务器的第一个报文
(2)offer:DHCP服务器收到discovery报文后,用来相应次报文,并且携带各种配置信息
(3)request:有三种作用
- 用来响应服务器发送的offer包
- 客户端重启后,发送广播的request报文来确认之前分配的IP地址的配置信息
- 客户端已经和某个IP绑定,用来延长租期的
(4)ack:服务器对客户端的request报文确认,只有收到ack后,客户端才能真正拿到IP地址
(5)nak:服务器对客户端的request报文的拒绝相应
(6)decline:客户端发现服务器分配的IP地址发生冲突时就会发送decline报文通知服务器,并且重新向服务器申请地址
(7)release:客户端主动发送该报文,用来释放服务器分配的IP地址,服务器收到后,可以将该IP地址分配给其他主机i
(8)inform:客户端获得了IP地址,发送次报文的目的是为了获取服务器的网络配置信息
4、DHCP的工作原理
(1)首次登录网络
在首次登录网络中可以分为四个阶段:
发现阶段:客户端寻找网络中DHCP服务器,客户端是以广播的形式发送discovery,源IP是0.0.0.0,目的IP是255.255.255.255,源mac是本客户机的MAC地址,目标MAC是全F,源端口是68,目的端口是67
提供阶段:DHCP服务器提供IP给客户端,源IP是服务器的IP地址,目的IP是255.255.255.255,源MAC是服务器的MAC地址,目的MAC是全F,源端口是67,目的端口是68
请求阶段:DHCP客户端选择第一个收到服务器分配的IP,源IP是0.0.0.0,目的IP是255.255.255.255,源MAC是主机的MAC地址,目的MAC是全F,源端口是68,目的端口是67
确认阶段:服务器收到request后,向客户端发送自己提供的IP地址和ACK确认报文,源IP是服务器的IP地址,目的IP是255.255.255.255,源MAC是服务器的MAC地址,目的MAC是全F,源端口是67,目的端口是68
(2)再次登录网络
当DHCP客户端再次登录网络时,只需要发送广播包request报文,该报文中包含上次分配的IP地址。
DHCP服务器收到request报文后,若是客户端申请的地址没有被分配,则返回ACK确认报文,通知DHCP可以继续使用该地址
若是次IP地址无法分配给该客户端,则DHCP服务器将会回复一个NAK报文,客户端收到后,重新发送discovery报文
(3)延长IP地址租用有效期
DHCP服务器给客户端的动态IP地址通常是有一定的时间限定(租借期限),当到达一定的时间服务器会收回该地址,若是客户端想继续使用,那么就必须更新租期
5、DHCP地址池的租期工作原理
(1)一班当客户端获取IP地址时,就会进入绑定状态,客户端会设定三个计时器,分别是:租期更新、重绑定、到达租期
租期更新:就是到达租期时间的50%的时候,此时客户端发送request报文进行租期更新,服务器收到后就会回复ACK
若是一直等到重绑定时间85%到期还是没有收到服务器的回复,那么就认为原来的DHCP服务器不可使用,并重新广播发送request报文,此时其他的DHCP服务器就会回复ACK报文,客户端收到ACK报文后跟新计时器
达到租期:若是在到达租期前没收到响应,客户端必须停止对此IP地址的使用,重新进行四个阶段。
华为DHCP地址池配置命令:
[Huawei]dhcp enable 开启dhcp服务使用全局配置
[Huawei]ip pool aaa 地址池名字
[Huawei-ip-pool-aaa]net 10.1.1.0 mask 24 //宣告所要下发的网段
[Huawei-ip-pool-aaa]gateway-list 10.1.1.1//配置网关
[Huawei-ip-pool-aaa]dns-list 1.1.1.1 //配置DNS服务器地址[Huawei]int g0/0/0 //进入接口[Huawei-GigabitEthernet0/0/0]dhcp select global //调用全局的地址在接口配置DHCP地址池
[Huawei]int g0/0/0
[Huawei-GigabitEthernet0/0/0]dhcp select interface//选择以接口上所属配置IP地址所属网段为地址池下发地址,并以此接口为网关
[Huawei-GigabitEthernet0/0/0]dhcp server dns-list 1.1.1.1 配置dns
DHCP扩展
1) 其他数据包Release:释放,客户端主动释放服务器下发的地址时,会发出此数据包;服务器收到此数据包后,将收回客户端的IP地址。
PC>IPconfig /release 客户端主动释放从DHCP地址池中获取的地址
Pc> IPconfig /renew 重新自动获取地址Nak数据包:若服务器对客户端的请求数据包拒绝响应时,会发出此包;客户端收到此数据包之后会重新开始DHCP过程。
Decline数据包:当客户端发现服务器分配给自己的ip地址不可用时,比如IP地址冲突,客户端会发送此数据包告知服务器此IP地址不可用
Inform:客户端已经获取到了IP地址,一般情况可以通过此数据包从服务器获取其他的一些的网络配置信息
DHCP安全问题
DHCP饿死攻击:
攻击者持续大量的向服务器申请IP地址,导致服务器地址池地址耗尽,从而不能正常给客户分配地址。
利用的漏洞:DHCP服务器无法分辨主机
防御:DHCP snooping(窥探)防饿死攻击----致性检查(request报文帧头mac地址和chaadde报文字段是否相同,相同才转发)、限制接口允许学习的DHCP snoping绑定表项的MAC数量。
仿冒服务器攻击:
攻击原理:攻击者仿冒服务器,向客户端分配错误的网关地址等参数,导致客户无法正常的访问网络。
利用的漏洞:主机无法分辨合法的服务器。
防御:DHCP Snooping防伪冒服务器攻击—配置信任接口和非信任接口(默认都为非信任接口,需要手动修改)中间人攻击:防御:交换机添加DHCP snooping表,查看映射,攻击不符合的报文
DHCP snooping就是 DHCP 窥探,通过对 Client 和服务器之间的 DHCP 交互报文进行窥探,实现对用户的监控,同时 DHCP Snooping起到一个 DHCP 报文过滤的功能,通过合理的配置实现对非法服务器的过滤。
在DHCP snooping环境中(部署在交换机上),我们将端口视为trust或untrust两种安全级别,也就是信任或非信任接口。在交换机上,将连接合法DHCP服务器的接口配置为trust。只有trust接口上收到的来自DHCPserver的报文(如DHCPOFFER, DHCPACK, DHCPNAK, 或者DHCPLEASEQUERY)才会被放行,相反,在untrust接口上收到的来自DHCPserver的报文将被过滤掉,这样一来就可以防止非法的DHCPserver接入。同时在部署了DHCP Snooping了交换机本地,还能维护一张DHCPsnooping的绑定数据库(binding database),用于保存侦听到的DHCP交互的表项,信息包括(针对untrust接口的):MAC地址、IP地址(DHCP分配的)、租期、绑定类型、VLAN号、接口编号(DHCP客户端也就是连接客户端PC的untrust接口)。这个DHCP snooping banding databse除了可以做一些基本的安全接入控制,还能够用于DAI等防ARP欺骗的解决方案。