DHCP
1、DHCP服务又两个角色,一个是server,一个是client。DHCP是基于UDP传输,server的端口号为67,client的端口号为68。
2、DHCP请求过程:
①client端发送discover报文进行全网泛洪。该报文的主要属性,源ip为0.0.0.0,目的ip为255.255.255.255,源mac为自己的mac,目的mac为广播mac(一堆F)。之后client进入init状态。
②DHCP服务器收到该报文之后将回复一个offer报文(为单播),该报文中包含了client所需要的各种信息(ip、子网掩码、DNS等)。
③client收到offer报文后在广播一个request报文,该报文为正式请求使用该ip地址。这里使用广播的原因是该网络中可能不止一个DHCP服务器,可能有多个服务器,当client请求时可能有多个服务器响应了这个请求,那么他就要告诉其他的服务器自己用了别的DHCP分配的资源。收到offer报文之后进入selecting状态。发送request报文进入requesting状态。
④DHCP服务器收到request报文之后,将回复一个ACK确认报文,此时才正式的将该ip分配给客户端。
⑤当client获得这个ip之后,他会在这个局域网中广播一个arp报文,作用就是看看这个网络中有没有人在使用这个ip地址(防止IP地址冲突)。收到ACK报文之后进入到BOUND状态。
3、DHCP相关报文:
①discover报文:用于client请求DHCP服务器。
②offer报文:server响应client的请求。
③request报文:client正式请求。
④ack报文:server确认client的请求。
⑤DHCP NAK报文:该报文一般时地址无效或者client重复请求时发送,发送该报文后,client会重新进入到原始状态重新请求地址
4、DHCP租用更新:
①到地址的租期时间到达50%的时候,client进入RENEW状态,然后重新续订租用。client会单播一条request报文给服务器申请租用时间更新,如果DHCP服务器可用,就会发送一条ACK作为响应,然后更新租期。
②如果DHCP不可用,也就是没有响应client的租约更新请求。那么当租约时间到达87.5%的时候,客户端进入REBIND状态,此时并发送一条广播的request报文,如果有响应,则使用新的配置ip。如果没有响应则到达租期结束的时候就无法在使用该地址并终止上网。
5、DHCP的安全问题:
问题:恶意攻击者在局域网内通过短时间发送大量的discover报文向DHCPserver请求地址,但是地址是有限的,当DHCP地址池耗尽的时候,攻击者在伪造成一台DHCP服务器给此client分配地址等信息,那么该网络中就完全由攻击者控制了,这是非常危险的。
解决:在交换机上启用DHCP snooping技术,凡是开启了该技术的交换机,在对应的vlan下的所有接口将会被置为untrunst状态,该状态下自动拒绝offer和ack报文,这样就可以防止攻击者冒充DHCP服务器了。
关于DHCP snooping在DHCP snooping在记录。