TCP/IP详解 第六章 DHCP协议
1、DHCP简介
1、DHCP (Dynamic Host Configuration Protocol)即动态主机设置协议。
2、前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的端口:67(DHCPv4 server),68(DHCPv4 client), 547 (DHCPv6 server) , 546 (DHCPv6 client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率
3、DHCP协议属于应用层协议
DHCP SERVER负责接收客户端的DHCP请求,管理LAN端所有的IP网络设定资料,相比于BOOTP,DHCP通过“租约”来实现动态分配IP的功能,实现IP的时分复用,从而解决IP资源短缺的问题。其地址分配方式有三种,分别是人工配置(由管理员对每台具体的计算机指定一个地址),自动配置(服务器为第一次连接网络的计算机分配一个永久地址),动态配置(在一定的期限内将地址租给计算机,租期结束后客户必须续租或者停用该地址),而对于路由器,经常使用的地址分配方式是动态配置。
1.1、DHCP简介:BOOTP
BOOTP(Bootstrap Protocol,引导程序协议)是一种引导协议,基于IP/UDP协议,也称自举协议,是DHCP协议的前身。BOOTP用于无盘工作站的局域网中,可以让无盘工作站从一个中心服务器上获得IP地址。通过BOOTP协议可以为局域网中的无盘工作站分配动态IP地址,这样就不需要管理员去为每个用户去设置静态IP地址。
BOOTP可以看成是简单版的DHCP,是对主机的静态配置,而DHCP可以依据一些策略对主机进行动态配置。BOOTP用于无盘工作站的启动和配置,而DHCP更适用于客户端接入变化的网络,即客户端接入时间、接入地点不固定。
2、DHCP协议封装
OP:操作类型,0-请求,1-应答
HWtype:1 为以太网
Hwlen: 6
Hops: 中继次数,每中继一次加1
Transaction id:事务ID
Second elapsed:从第一次请求开始过去的时间
Flag:0-单播,1只能处理广播(不能或者不愿意处理单播)
ciaddr:客户端IP地址,如果没有,填全0
yiaddr:由于服务器填写,分配给客户端的IP地址
siaddr: 下一服务器地址(用于bootp引导过程)
giaddr: 中继网关服务器地址(跨子网进行DHCP地址分配的场景)
chaddr:客户端MAC地址
sname:dhcp服务器名称
bootfilename:引导文件名称
magic cookie: dhcp为了兼容BOOTP增加的魔数( 63.82.53.63)
option:拓展选项
2.1、DHCP协议封装:拓展选项
常用tag:
0 :填充 1:子网掩码 3:路由器地址 6:域名服务器
15:域名 50:请求的IP地址 51:地址租用期
53:DHCP消息类型 54:服务器标识符 55:参数请求列表
56:DHCP错误消息 58:租约更新时间 59:租约重新绑定时间
61:客户机标识符 119:域搜索列表 255: 结束
2.2、DHCP协议封装:DHCP消息类型(53)
DHCP常用消息类型:
DHCPDISCOVER(1), DHCPOFFER (2), DHCPREQUEST (3), DHCPDECLINE (4), DHCPACK (5),DHCPNAK (6), DHCPRELEASE (7), DHCPINFORM (8), DHCPFORCERENEW(9) , DHCPLEASEQUERY (10), DHCPLEASEUNASSIGNED (11), DHCPLEASEUNKNOWN (12), DHCPLEASEACTIVE (13).
3、DHCP工作原理
3.1、DHCP协议通信过程
DHCPDISCOVER(1):
广播消息,src 0.0.0.0:68 dst 255.255.255.255:67
DHCPOFFER (2):
携带,租期T,更新时间T1(通常为1/2*T),重新绑定时间T2(通常为7/8*T)
DHCPREQUEST (3):
包含一个服务器标识符,选定的IP地址
DHCPACK (5):
服务器确认可以绑定该IP地址
DHCPNAK (6)
服务器无法分配该IP地址
DHCPDECLINE (4):
客户端使用ACD检测冲突,发现该IP地址被占用,发送此消息放弃该IP地址
DHCPRELEASE (7):
客户端在租期内主动放弃一个IP地址
DHCPINFORM (8):
客户端已经有IP地址的情况下,需要其他配置信息,发送此信息
3.2、DHCP状态机
4、DHCPv6: 与DHCPv4的区别
1、DHCPv6使用组播地址:ff02::1:2
而DHCPv4使用广播
2、 DHCPv6中没有保留BOOTP协议
3、DHCPv6中重要概念:
客服端标识符,服务端标识符
身份关联(IA),DUID
4.1、DHCPv6 :消息格式
4.2、DHCPv6: 消息类型对比
4.3、DHCPv6: IA(身份关联)
IAID:32位随机数
T1:更新时间
T2:重新绑定时间
IA_NA: NA选项
IA_TA: TA选项
4.4、DHCPv6: DUID(DHCP唯一标识符)
三种生成方式:
DUID-LLT:基于链路层地址和时间DUID
DUID-EN:基于企业编号和供应商分配的DUID
DUID-LL:仅基于链路层地址的DUID
4.5、DHCPv6:有状态和无状态
有状态的地址配置:
类似DHCPv4,通过使用如 DHCP 的配置协议,用来配置非链接本地地址,以及其他额外信息(DNS等)
无状态的地址配置:
使用无状态地址自动配置,在无状态下客户机认为能够自己配置IPv6地址,当需要DHCPv6获取额外信息(DNS服务等),另外一种选择是使用ICMPv6路由器通告消息来获得一台DNS服务器的地址
4.5、DHCPv6:生命周期
4.6、DHCPv6:ICMPv6路由器通告消息
两个重要字段
M位:可管理地址配置标志 O位:其他配置标志
M0 O0:表示不使用DHCPv6,采用无状态地址自动分配
M1 O1:DHCPv6 有状态, DHCPv6 将分配有状态地址,同时分配其他配置
M0 O1:DHCPv6 无状态:DHCPv6 不为 IPv6 主机分配有状态地址,但分配无状态配置设置
M1 O0:DHCPv6 用于地址配置,但不用于其他配置,这是一种最不可能的组合
4.7、DHCPv6:通信过程
4.8、DHCPv6:消息介绍
ROUTER SOLICIT:路由器发现消息
ROUTER ADVERTISE:路由器通知消息
SOLICIT(1):DHCPv6发现消息
ADVERTISE(2): DHCPv6通知消息
REQUEST(3): DHCPv6请求消息
REPLY(7):DHCPv6应答消息
DECLINE(9): DHCPv6放弃
INFORMATION-REQUEST(11):已有IP的情况下,使用此消息申请其他配置
4、DHCPv6:前缀委托
一台路由器向另一台路由器委托一个地址空间范围,这个地址可以描述为一个IPv6地址前缀,使得该路由器可以像一个DHCPv6服务器那样工作
5、DHCP中继
5.1、DHCP中继:重要概念
1、中继服务在第3层,只负责DHCP中的广播或者组播数据
2、中继代理选项
DHCPv4 RAIO:元选项,很多子选项用于ISP标识请求来自于哪个用户,哪个链路或网络,安全认证子选项(SHA-1算法)
3、中继代理远程ID子选项
用于标识远程客户机(呼叫方ID,用户名,调制解调器ID,点对点链路的远程IP地址),DHCPv6版本中还包含了DUID
4、服务器标识符覆盖
5、租约查询,批量租约查询
6、2层中继代理 IPv4 LDRA
6、DHCP与DNS交互
组合DNS /DHCP服务器:
能够在给客户机分配IP地址的同时,根据DHCPREQUEST中的客户机标识符或者域名,进行域名和IP地址绑定,并更新到DNS数据库中,这样后续的DNS请求,都能相应最新的IP和域名绑定信息
7、DCHP安全:DHCP认证
1、认证消息:下发一个共享配置令牌,客户端和服务端配置令牌信息匹配则可以接受该消息,有令牌信息能够被截获,所以这种保护方式很弱
2、延期认证:假设客户端和服务端有一个共享秘钥,当客户端发送DHCPDISCOVER和DHCPINFORM时,包含一个认证选项,则DHCPINFORM和DHCPACK中包含一个认证码(MAC加密后的数据),
客户端检测认证码是否正确。核心算法采用MD5签名校验
3、DHCP认证机制没有被广泛应用
7.1、DHCP安全:攻击手段
1、未授权客户机或者未授权服务器对DHCP通信过程的干扰
2、耗尽配置资源的Dos攻击
感谢xuj