1. DHCP简介
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,
主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
2. DHCP整体流程
另外,当DHCP客户端主动释放(断开)IP时,会向DHCP服务器发送DHCP RELEASE报文;当DHCP客户端获得了一个IP地址以后,就可以发送一个免费ARP请求探测网络中是否还有其它主机使用IP地址,来避免由于DHCP服务器地址池重叠而引发的IP冲突,当检测到IP冲突时,会向DHCP服务器发送DHCP DECLINE报文,一段时间后,重新请求新的IP。
3. DHCP报文结构
- Op: 报文类型,分为 两大类: Request(1) 和 Reply(2)
- HW Type: 硬件类型,一般是以太网:1
- HW Len: 硬件地址长度,单位字节。对应以太网:6(mac地址长度为6字节48bit)
- Transaction ID:事务ID,随机数,有客户端生成,服务器Reply时,会把Request中的Transaction拷贝到Reply报文中。
- Secs: 距离第一次发射IP请求或Renew请求过去的秒数
- Flags:标志位,目前仅第一个bit有使用,置1 标明广播
- Client IP Address:当前客户端的IP地址,如果当前客户端没有IP地址,则置0
- Your IP Address: 服务器想客户端提供IP地址时,会把IP地址填入本字段
- (Next)Server IP Address:客户端引导时需要的另一个服务器的IP地址
- Gateway (Relay) IP Address: 网关(中继)IP地址,有DHCP 中继器在转发DHCP报文的时候填入
- Server Name: Server名字,有64bytes,一般不使用,填充为0
- Boot File name: boot file的路径,128bytes, 一般不使用,填充为0
- Option: 选项,不定长度。 DHCP报文中比较重要的字段,后面会有比较详细的介绍。
报文封装结构为 MAC->IP->UDP->DHCP
4. DHCP二层交互过程
4.1 发现阶段 DHCP DISCOVER
DHCP客户端获取网络中DHCP服务器信息的阶段。以广播方式发送DHCP DISCOVER报文寻找网络中的DHCP服务器。
DHCP DISCOVER报文中IP报头中的目的地址(Destination Address)是255.255.255.255这个有限广播地址。这个有限广播地址就是代表任意一个IPv4子网的广播地址,当然是发送报文的主机所在的子网和DHCP服务器所在子网的广播地址,但因为此时DHCP客户端并不知道DHCP服务器所在的是哪个子网。
至于IP报头中的源地址(Source Address),由于当前DHCP客户端主机并未分配具体的IP地址,所以只能用具有任意代表功能的0.0.0.0地址来表示了。因为此时,DHCP客户端没有分配到IP地址,也不知道DHCP服务器或DHCP中继的IP地址,所以在报文中Ciaddr(客户端IP地址)、Yiaddr(被分配的DHCP客户端IP地址)、Siaddr(下一个为DHCP客户端分配IP地址的DHCP服务器地址)、Giaddr(DHCP中继IP地址)这四个字段均为0.0.0.0。另外,从中可以看到,在CHADDR字段和DHCP选项中Client Identifier字段中都标识了DHCP客户端网卡MAC地址。
4.2 提供阶段 DHCP OFFER
DHCP服务器向DHCP客户端提供预分配IP地址。网络中的所有DHCP服务器接收到客户端的DHCP DISCOVER报文后,都会根据自己地址池中IP地址分配的优先次序选出一个IP地址,以广播方式发送给客户端。客户端通过封装在帧中的目的MAC地址(CHADDR字段)的比对来确定是否接收该帧。但这样一来,理论上DHCP客户端可能会收到多个DHCP OFFER报文(当网络中存在多个DHCP服务器时),但DHCP客户端只接受第一个到来的DHCP OFFER报文。
报文中可以看到Yiaddr字段已有值了,这是DHCP服务器为该客户端预分配的IP地址。另外,在 DHCP可选项部分,可以看到由服务器随 IP 地址一起发送的各种选项。在这种情况下,服务器发送的是子网掩码、默认网关(路由器)、租约时间、WINS 服务器地址(NetBIOS 名称服务)和 NetBIOS 节点类型。
4.3 选择阶段 DHCP REQUEST
DHCP客户端选择IP地址以广播方式发送DHCP REQUEST报文。在该报文的“Requested Address”选项中包含DHCP服务器在DHCP OFFER报文中预分配的IP地址,对应的DHCP服务器IP地址等。这样也就相当于同时告诉其他DHCP服务器,它们可以释放已提供的地址,并将这些地址返回到可用地址池中。
4.4 确认阶段 DHCP ACK
DHCP服务器确认分配级DHCP客户端IP地址,某个DHCP服务器在收到DHCP客户端发来的DHCP REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则以广播方式返回DHCP ACK报文;否则返回DHCP NAK报文,表明地址不能分配给该客户端。除此之外,还会有租约的相关字段,详细见5。
5. 地址租约
5.1 1/2阶段续约和7/8阶段续约
打个比方。如果客户端在1月1日0时成功获取到一个IP地址,那么在DHCP管理器上就可以看到这条租约信息,对应的租约截止日期就是1月9日0时。当日期到默认租期的一半时,也就是第四天的时候。客户端会向DHCP服务器发送一个DHCP Request 的数据包,目的是请求更新自己的租约。如果DHCP服务器正常且响应了此请求,那么就会返回一个DHCP ACK的数据包,这表示续约成功。比如1月5日时,客户端提出续约申请,当DHCP服务器正常响应后,这台客户端的IP过期时间将延至1月13日,因为他是在5号提出的申请,判断是否续期和过期是以DHCP服务器上时间为准。
如果第一次没有续约成功,到了租期的7/8时,还会重复一次申请续约的过程。如果成功,新的租期自然是在申请日期的基础上加8天,以此类推。
DHCP客户端获取到一个IP,只要是续约的时候顺利,那么它会一直使用这个IP地址,除非这个IP被排除或者被保留等。
5.2 续约失败
如果在1/2租期申请更新,但没有得到DHCP的响应,怎么办? 比如这个IP被从作用域中移除,那么DHCP服务器会返回给客户端一个DHCP NACK的数据包。客户端收到这个数据包后会发送Discover的包查询,如果还是没得到回复,它就会继续使用原有的IP地址,当到7/8租期时间时就会再次申请租约更新。如果依然没有得到正确的回应,那只能得到租期截至后重新申请IP地址了。以上是有关租约的内容。
6. DHCP Snooping
DHCP Snooping是 DHCP 的一种安全特性,主要应用在 交换机 上,作用是屏蔽接入网络中的非法的 DHCP 服务器。即开启 DHCP Snooping 功能后,网络中的客户端只有从管理员指定的 DHCP 服务器获取 IP 地址。
7. DHCP Relay
DHCP中继代理,就是在DHCP服务器和客户端之间转发DHCP数据包。当DHCP客户端与服务器不在同一个子网上,就必须有DHCP中继代理来转发DHCP请求和应答消息。DHCP中继代理的数据转发,与通常路由转发是不同的,通常的路由转发相对来说是透明传输的,设备一般不会修改IP包内容。而DHCP中继代理接收到DHCP消息后,进行转换源、目的IP,MAC生成一个DHCP消息,然后转发出去。
8. DHCP Proxy
DHCP proxy是对DHCP relay的增强,它在DHCP relay的基础上增加了两个功能,一个是Server ID代理,一个是租期代理。
- Server ID代理:修改DHCP报文中的Server ID(Option 54),目的是对DHCP客户端屏蔽真正的DHCP服务器,从而避免恶意用户对DHCP服务器进行攻击。
- 租期代理:修改DHCP报文中的Option51选项、Option58选项和Option59选项。使能DHCP proxy功能的MA5800可以快速感知DHCP客户端的在线状态;同时,DHCP客户端在短租期内的续租报文由MA5800处理,不再转发到DHCP服务器,从而减轻了DHCP服务器频繁处理短租期续租报文的负担,并使DHCP客户端获得较短的IP租期。
9.DHCP+
DHCP协议本身并没有用来认证的功能,但是DHCP可以配合其他技术实现认证,比如DHCP+web方式、DHCP+客户端方式和利用DHCP+OPTION扩展字段进行认证。所有这些方式都统称为DHCP+认证。
9.1 IPOE
DHCP+OPTION扩展字段进行认证,又称为IPoE认证方式。用来作为DHCP扩展的OPTION字段主要为OPTION60 (RFC2132)和OPTION82 (RFC3046)。其中OPTION60中带有Vendor和Service Option信息,是由用户终端发起DHCP请求时携带的信息,网络设备只需要透传即可。其在应用中的作用是用来识别用户终端类型,从而识别用户业务类型,DHCP服务器可以依赖于此分配不同的业务IP地址。而OPTION82信息是由网络设备插入在终端发出的DHCP报文中,主要用来标识用户终端的接入位置,DHCP OPTION82信息可以由DHCP SNOOPING或DHCP RELAY设备进行插入。
其主要特点如下:
- 基于上网用户的物理位置(通过唯一的VLAN ID/PVC ID标示)对用户进行认证和计费,无需用户输入用户名和密码
- 对DHCP 协议进行了扩展,增加了安全,监控,用户识别等新的特性
- 网络接入设备, 业务控制网关, DHCP server, Radius server 配合增强网络安全性
- DHCP+ Radius 结合提供计费功能,使得DHCP 适合做运营
- DHCP 是基于IP的在冗余保护方面比较有优势,能够实现真正的5个9的保护特性
- 组播业务支持灵活