目录
协议背景
减少错误
通过配置DHCP,把手工配置IP地址所导致的错误减少到最低程度,例如已分配的IP地址再次分配给另一设备所造成的地址冲突等将大大减少。
减少网络管理
- TCP/IP配置是集中化和自动完成的,不需要网络管理员手工配置。网络管理员能集中定义全局和特定子网的TCP/IP配置信息。
- 使用DHCP选项可以自动给客户机分配全部范围的附加TCP/IP配置值。客户机配置的地址变化必须经常更新,比如远程访问客户机经常到处移动,这样便于它在新的地点重新启动时,高效而又自动地进行配置。
- 同时大部分路由器能转发DHCP配置请求,这就减少了在每个子网设置DHCP服务器的必要,除非有其它原因要这样做。
协议概述
DHCP,全称Dynamic Host Configuration Protocol,中文名称动态主机配置协议。DHCP是Bootstrap协议的一种扩展,基于UDP协议,客户端的端口号是68,服务端的端口号是67。
Application layer | DHCP |
Transport layer | UDP |
Network layer | IP |
Data-link layer | No limited |
Physical layer | No limited |
DHCP协议特性
- 保证任何IP地址在同一时刻只能由一台DHCP客户机所使用
- DHCP应当可以给用户分配永久固定的IP地址
- DHCP应当可以同用其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
- DHCP服务器应当向现有的DHCP客户端提供服务
数据包结构
常用的options:
1 netmask
3 router
6 DNS
12 host name
51 ip address lease time
53 message type (dhcp报文8种类型,下一页介绍)
54 server identification
55 parameter request list (需要服务器给你提供哪些东西:ip地址,域名,网关)
61 client identification
82 relay agent
255 end
数据包类型
DHCP的8种报文
报文类型 | 含义 |
DHCP DISCOVER | 客户端用来寻找DHCP服务器。 |
DHCP OFFER | DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。 |
DHCP REQUEST | 客户端请求配置确认,或者续借租期。 |
DHCP ACK | 服务器对REQUEST报文的确认响应。 |
DHCP NAK | 服务器对REQUEST报文的拒绝响应。(广播) |
DHCP RELEASE | 客户端要释放地址时用来通知服务器。(单播) |
DHCP DECLINE | PC收到DHCP服务器的地址后,发送分配地址免费ARP,如果有回应,会发送DHCP DECLINE报文 |
DHCP INFORM | PC单独请求域名、DNS这些参数的时候 |
工作原理
1.用户以广播的形式发送discover请求,数据包的源IP为0.0.0.0,目标IP为255.255.255.255,源MAC为自己的MAC,目标MAC为全F,寻找能够提供服务的服务器。一般主机收到这个包会直接丢掉。
2.当服务器收到这个discover包之后会单播进行回复一个Offer包给予Client端应答,意在告诉Client端它可以提供IP地址。但在给出此地址前,应当用ICMP ECHO REQUEST报文进行检查,检查是否有其他机器配置此IP地址。
3.Client只能处理其中的一个DHCP Offer报文,一般的原则是Client处理最先收到的DHCP Offer报文。 Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。此时数据包的源IP和目的IP依然是0.0.0.0和255. 255.255.255。如果客户机之前曾经获得过一个IP地址,它会将此地址写在DHCP Request报文的Options域的“REQUESTD IP ADDRESS”中发给服务器。
4.当Server收到请求后,DHCP Server就会向Client响应一个DHCP Ack报文,并在选项字段中增加IP地址的使用租期信息。至此IP分配完成。当收到DHCP Request报文后,如果发现其申请的地址无法被分配,则用DHCP Nak报文回应。客户机收到DHCP Ack报文后,再对所有的参数进行一次最后的检查,如果发现由地址冲突存在,则使用DHCP Decline报文回复服务器。如果客户机放弃现在使用的IP地址,则她使用DHCPRELEASE报文通知服务器,服务器将此地址回收以备下次使用。
抓包分析
DHCP的实例
DHCP中继
考虑到成本,无需每个子网都配备一台DHCP服务器,所以DHCP协议应当可以通过路由器或者BOOTP代理透传(DHCP中继)。
由于DHCP请求报文采用广播方式发送报文,因此当DHCP客户端和DHCP服务器处于不同子网时,必须要通过DHCP中继进行通信,最终获取到IP地址。多个网络上的DHCP客户端可以使用同一个DHCP服务器,既节省了成本,又便于进行集中管理。
DHCP Snooping
DHCP Snooping是 DHCP 的一种安全特性,主要应用在交换机上,作用是屏蔽接入网络中的非法的 DHCP 服务器。即开启 DHCP Snooping 功能后,网络中的客户端只有从管理员指定的 DHCP 服务器获取 IP 地址。DHCP在设计上未从分考虑安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
DHCP饿死攻击
攻击原理:攻击者持续大量的向DHCP Server申请地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。
解决方法:通过校验CHADDR与MAC值。
仿冒DHCP Server攻击
攻击原理:攻击者仿冒DHCP Server,向客户端分配错误的IP地址及提供错误的网关地址等,导致客户端无法正常访问网络。
解决办法:通过配置trust与untrust口区分转发。
DHCP中间人攻击
攻击原理:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学习到IP-A与MAC-B的映射关系。如此一来,PC-A与Server之间交付的IP报文都会经过攻击者中转。
解决办法:开启ARP检测。