DHCP
1.DHCP概述
DHCP是Bootstrap协议的一种扩展,基于UDP协议,客户端的端口号是68,服务器的端口号是67
Application Layer | DHCP |
---|---|
Transport Layer | UDP |
Network Layer | IP |
Data-link Layer | NO-limited |
Physical Layer | NO-limited |
DHCP协议特性
1.保证任何IP地址在同一时刻只能由一个DHCP客户机所使用
2.DHCP应当可以给用户分配永久的IP地址
3.DHCP应当可以通过其他方法获得IP地址的主机共存(如手工配置IP地址的主机)
4.DHCP服务器应当向现有的DHCP客户端提供服务
DHCP数据包结构
- 操作码(1字节):该字段用于定义BOOTP报文类型。请求报文1,应答报文为2。
- 硬件类型(1字节):用于定义物理网络的类型。每种类型的网络被分配一个整数。10M以太网,这个字段值为1
- 硬件地址长度(1字节):用于定义以字节为单位的物理地址长度。对于以太网,该字段值为6.
- 条数(1字节):该字段的初始值为0 ,DHCP中继代理负责填写这一字段。
- 事务标识(4字节):由DHCP客户随机选择,用来对DHCP请求/应答报文进行匹配,DHCP服务器在应答报文中返回同样的值。
- 秒数(2字节):由DHCP客户端设置,给出DHCP从获得IP地址或更新租约所经历的时间。
- 标志:该字段最高位是广播标志位,其余位必须设为0。当DHCP客户不知道自己的IP地址时,要设置广播标志,通知服务器发送应答报文时采用IP广播方式。
- 客户IP地址:如果DHCP客户知道自己的IP地址,则在发送请求时,将自己的IP地址填入该字段,同时将前面的广播标志位设为0,通知服务器以单播方式发送应答报文;如果DHCP客户不知道自己IP地址,则该字段全部填0
- 您的IP地址:DHCP服务器返回给客户的IP地址
- 服务器IP地址:由DHCP服务器在DHCPOFFER和DHCPACK报文中提供的引导服务器IP地址
- 网关IP地址:
- 客户硬件地址:
- 服务器名字:
- 引导文件名:
- 选项(长度可变):
常用的option:
- 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 | 服务器对REQUSET报文的确认响应报文 |
DHCP NAK | 服务器对REQUSET报文的拒绝响应报文(广播) |
DHCP RELEASE | 客户端要释放地址时来通知服务器。(单播) |
DHCP DECLINE | decinePC收到DHCP服务器的地址后,发送分配地址免费ARP,如果有回应,会发送DHCP DECINE报文(即向DHCP报告该IP被占用) |
DHCP INFORM | PC单独请求域名、DNS这些参数的时候 |
2.DHCP协议工作原理
工作过程:
(1)请求IP地址
1.发现阶段。DHCP客户机以广播方式发送DHCP DISCOVER报文
2.提供阶段。DHCP服务器提供IP地址的阶段。收到DHCPdiscover报文后,从IP地址池中选择一个尚未分配的IP地址分配给DHCp客户机,向DHCP客户发送包含租借的IP地址和其他配置参数的DHCPoffer。
3.选择阶段。DHCP客户选择IP地址的阶段。如果多台DHCP服务器向该DHCP客户发送DHCPoffer报文,则DHCP客户从中随机挑选,然后以广播方式向各DHCP服务器回应DHCPrequest,宣告宣告使用他挑中的DHCP服务器提供的地址,并正式请求DHCP服务器分配地址。其他发送DHCPoffer报文的DHCP服务器接收到该报文后,将释放已经offer(预分配)DHCP客户的IP地址。
如果发送给DHCP客户的DHCPoffer报文中包含无效的配置参数,DHCP客户会发送DHCPdecline报文拒绝。
4.确认阶段。DHCP服务器确认所提供的的IP地址的阶段。当DHCP服务器收到DHCPrequest报文后,向客户发送包含它所提供的IP地址及其他配置信息的DHCPACK确认报文。然后DHCP客户将接收并使用IP地址及其他TCP/IP配置参数
(2)续租IP地址
在DHCP中,每个IP地址都是有一定租期的,若租期已到,则DHCP服务器就可以将该IP地址分配给其他计算机。续租在租期达到50%时就将启动,DHCP客户发送DHCPrequest报文请求续租,若服务端回复DHCPack报文,续租成功。若此次不成功在租期87.5%时再次续租。若DHCP服务器回复则续租成功。否则租期一到释放该IP地址
(3)释放IP地址
DHCP客户可以通过向DHCP服务器发送DHCErelease报文主动释放IP地址,同时将IP地址设置为0.0.0.0
3.DHCP中继及snooping
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检测。