Bootstrap

【网络协议详解】——DHCP技术(学习笔记)

目录

DHCP简介

定义

受益

DHCP组网

DHCP租期和地址池

DHCP报文类型

DHCP报文中的Options字段

DHCP原理描述

DHCP服务器给首次接入网络的客户端分配网络参数的工作原理

无中继场景时DHCP客户端首次接入网络的工作原理

有中继场景时DHCP客户端首次接入网络的工作原理

DHCP客户端更新租期的工作原理

实验步骤:

组网需求

配置思路

验证配置结果


DHCP简介

定义

动态主机配置协议DHCP(Dynamic Host Configuration Protocol)是一种用于集中对用户IP地址进行动态管理和配置的技术。即使规模较小的网络,通过DHCP也可以使后续增加网络设备变得简单快捷。

  • DHCP允许计算机动态地获取IP地址,而不是静态为每台主机指定地址。
  • DHCP能够分配其他配置参数,例如客户端的启动配置文件,使客户端仅用一个消息就获取它所需要的所有配置信息。

DHCP协议由RFC 2131定义,采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出配置申请,服务器返回为客户端分配的配置信息。

DHCP可以提供两种地址分配机制,网络管理员可以根据网络需求为不同的主机选择不同的分配策略。

  • 动态分配机制:通过DHCP为主机分配一个有使用期限(这个使用期限通常叫做租期)的IP地址。

  • 静态分配机制:网络管理员通过DHCP为指定的主机分配固定的IP地址。

受益

DHCP受益主要有以下两点:

  • 降低客户端的配置和维护成本

  • 集中管理

DHCP组网

包括以下三种角色:

  • DHCP服务器

    DHCP服务器负责从地址池中选择IP地址分配至DHCP客户端,还可以为DHCP客户端提供其他网络参数,如默认网关地址、DNS服务器地址和WINS服务器地址。DHCP服务器可以接收处理来自本网段或跨网段由DHCP中继转发的DHCP请求报文。

  • DHCP客户端

    DHCP客户端发送DHCP请求报文、通过BOOTP或DHCP协议请求获取IP地址等网络参数的设备。例如,IP电话、PC、手机、无盘工作站等。

  • DHCP中继

    DHCP中继负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备。

    DHCP客户端广播发送请求报文(即目的IP地址为255.255.255.255),位于同一网段内的DHCP服务器能够接收请求报文。如果DHCP客户端和DHCP服务器不在同一个网段,DHCP服务器无法接收来自客户端的请求报文,此时,需要通过DHCP中继来转发DHCP报文。不同于传统的IP报文转发,DHCP中继接收到DHCP请求或应答报文后,会重新修改报文格式并生成一个新的DHCP报文再进行转发。

DHCP租期和地址池

租期

DHCP服务器给每个分配给客户端的IP地址定义一个使用期限,该使用期限被称为租期。在租期到期前,DHCP客户端如果仍需要使用该IP地址,可以请求延长租期;如果不需要,可以主动释放该IP地址。在没有其他空闲地址可用的情况下,DHCP服务器会把客户端主动释放的IP地址分配给其他客户端。

地址池

地址池指的是DHCP服务器可以为客户端分配的所有IP地址的集合。

根据创建方式的不同,地址池可以分为基于接口方式的地址池基于全局方式的地址池

  • 基于接口方式的地址池:在DHCP服务器与客户端相连的接口上配置IP地址,地址池是跟此接口地址所属同一网段的IP地址,且地址池中地址只能分配给此接口下的客户端。
  • 基于全局方式的地址池:在系统视图下创建指定网段的地址池,且地址池中地址可以分配给设备所有接口下的客户端。当DHCP服务器与客户端不在同一个网段时,需要部署DHCP中继。

DHCP报文类型

DHCP服务器与DHCP客户端之间通过DHCP报文进行通信。DHCP报文是基于UDP协议传输的。DHCP客户端使用的源端口号为68,DHCP服务器使用的源端口号为67。目前DHCP定义了如下八种类型报文。

表1 DHCP报文类型说明

报文名称

说明

DHCP DISCOVER

DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器。

DHCP OFFER

DHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。

DHCP REQUEST

此报文用于以下三种用途。

  • 客户端初始化后,发送广播的DHCP REQUEST报文来回应服务器的DHCP OFFER报文。
  • 客户端重启后,发送广播的DHCP REQUEST报文来确认先前被分配的IP地址等配置信息。
  • 当客户端已经和某个IP地址绑定后,发送DHCP REQUEST单播或广播报文来更新IP地址的租约。

DHCP ACK

服务器对客户端的DHCP REQUEST报文的确认响应报文,客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

DHCP NAK

服务器对客户端的DHCP REQUEST报文的拒绝响应报文,例如DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,则发送DHCP NAK报文作为应答,告知DHCP客户端无法分配合适IP地址。

DHCP DECLINE

当客户端发现服务器分配给它的IP地址发生冲突时会通过发送此报文来通知服务器,并且会重新向服务器申请地址。

DHCP RELEASE

客户端可通过发送此报文主动释放服务器分配给它的IP地址,当服务器收到此报文后,可将这个IP地址分配给其它的客户端。

DHCP INFORM

DHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求报文。

DHCP报文中的Options字段

DHCP报文中的Options字段用来存放分配给DHCP客户端的控制信息和参数,位于DHCP报文末尾的options字段。Options字段由Type、Length和Value三部分组成。

Options各字段的含义

字段

长度

含义

Type

1字节

该字段表示信息类型。

Length

1字节

该字段表示后面信息内容的长度。

Value

其长度为Length字段所指定

该字段表示信息内容。

DHCP Options选项的取值范围为1~255。DHCP Options选项包括预定义选项和用户自定义选项

表4 DHCP报文的Options字段说明

Options号

Options作用

1

设置子网掩码选项。

43

设置厂商自定义选项。

148

设置Commander的地址或者iMaster NCE-Campus的地址。

厂商特定信息选项(Option43)

Option43称为厂商特定信息选项。

中继代理信息选项(Option82)

Option82称为中继代理信息选项,该选项记录了DHCP客户端的位置信息。DHCP中继或DHCP Snooping设备接收到DHCP客户端发送给DHCP服务器的请求报文后,在该报文中添加Option82,并转发给DHCP服务器。

DHCP原理描述

DHCP服务器给首次接入网络的客户端分配网络参数的工作原理

只有跟DHCP客户端在同一个网段的DHCP服务器才能收到DHCP客户端广播的DHCP DISCOVER报文。当DHCP客户端与DHCP服务器不在同一个网段时,必须部署DHCP中继来转发DHCP客户端和DHCP服务器之间的DHCP报文。

下面分别从无中继和有中继两个场景介绍DHCP客户端首次接入网络的工作原理。

无中继场景时DHCP客户端首次接入网络的工作原理

图1所示,在没有部署DHCP中继的场景下,首次接入网络DHCP客户端与DHCP服务器的报文交互过程,该过程称为DHCP报文四步交互。

图1 无中继场景时DHCP客户端首次接入网络的报文交互示意图

第一步:发现阶段

首次接入网络的DHCP客户端不知道DHCP服务器的IP地址,为了学习到DHCP服务器的IP地址,DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255)给同一网段内的所有设备(包括DHCP服务器或中继)。DHCP DISCOVER报文中携带了客户端的MAC地址(chaddr字段)、需要请求的参数列表选项(Option55)、广播标志位(flags字段)等信息。

第二步:提供阶段

与DHCP客户端位于同一网段的DHCP服务器都会接收到DHCP DISCOVER报文,DHCP服务器选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。

通常,DHCP服务器的地址池中会指定IP地址的租期,如果DHCP客户端发送的DHCP DISCOVER报文中携带了期望租期,服务器会将客户端请求的期望租期与其指定的租期进行比较,选择其中时间较短的租期分配给客户端。

第三步:选择阶段

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文.如果存在多个dhcp服务器则其他DHCP服务器也会收到该报文,以确认客户端已经被分配地址,则其他DHCP服务器重新为其他客户端分配地址。

第四步:确认阶段

当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文.

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址,如果在指定时间内没有收到回应,表示客户端可以使用此地址。如果收到了回应,说明有其他终端使用了此地址,客户端会向服务器发送DHCP DECLINE报文,并重新向服务器请求IP地址,同时,服务器会将此地址列为冲突地址。

有中继场景时DHCP客户端首次接入网络的工作原理

有DHCP中继的场景中,首次接入网络的DHCP客户端和DHCP服务器的工作原理与无中继场景时DHCP客户端首次接入网络的工作原理相同。主要差异是DHCP中继在DHCP服务器和DHCP客户端之间转发DHCP报文,以保证DHCP服务器和DHCP客户端可以正常交互。下面仅针对DHCP中继的工作原理进行介绍。

图2 有中继场景时DHCP客户端首次接入网络的报文交互示意图

第一步:发现阶段

DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,进行如下处理:

  1. 检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1(表明经过一次DHCP中继),并继续下面的操作。

  2. 检查DHCP报文中的giaddr字段。如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续下面的操作。

  3. 将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

如果DHCP客户端与DHCP服务器之间存在多个DHCP中继,后面的中继接收到DHCP DISCOVER报文的处理流程同前面所述。

第二步:提供阶段

DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。

DHCP中继收到DHCP OFFER报文后,会进行如下处理:

  1. 检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。

  2. DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。

第三步:选择阶段

中继接收到来自客户端的DHCP REQUEST报文的处理过程相同。

第四步:确认阶段

中继接收到来自服务器的DHCP ACK报文的处理过程相同。

DHCP客户端更新租期的工作原理

DHCP服务器采用动态分配机制给客户端分配IP地址时,分配出去的IP地址有租期限制。DHCP客户端向服务器申请地址时可以携带期望租期,服务器在分配租期时把客户端期望租期和地址池中租期配置比较,分配其中一个较短的租期给客户端。租期到期或者客户端下线释放地址后,服务器会收回该IP地址,收回的IP地址可以继续分配给其他客户端使用。这种机制可以提高IP地址的利用率,避免客户端下线后IP地址继续被占用。如果DHCP客户端希望继续使用该地址,需要更新IP地址的租期(如延长IP地址租期)。

DHCP客户端更新租期的过程如图1所示。

图1 DHCP客户端更新租期示意图

  1. 当租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
  2. 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
  3. 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。

实验步骤:

基于全局地址池配置DHCP

图1 配置DHCP服务器实现为动态客户端和静态客户端分配不同网络参数组网图

组网需求

图1所示,IP PhonePC为某办公区办公设备。为了方便统一管理,降低手工配置成本,管理员希望网络主机通过DHCP协议动态获取IP地址。其中,PC为值班室固定终端,需要永久在线,且需要通过域名访问网络设备,因此,除了动态获取IP地址,还需要地址的租期为无限长,且需要获取DNS服务器信息;IP Phone使用固定IP地址10.1.1.4/24,MAC地址为00e0-fc12-3456,除了获取IP地址,还需要动态获取启动配置文件,且启动配置文件configuration.ini存放在FTP文件服务器上。IP Phone与FTP文件服务器路由可达。PC和IP Phone的网关地址为10.1.1.1/24。

配置思路

  1. 在SwitchA上创建DHCP Option模板,并在DHCP Option模板视图下为静态客户端IP Phone配置启动配置文件和获取启动配置文件的网络服务器的地址。
  2. 在SwitchA上创建全局地址池,并在全局地址池视图下为动态客户端PC配置租期和DNS服务器信息;为静态客户端IP Phone绑定IP地址和DHCP Option模板,从而实现为动态客户端和静态客户端分配不同的网络参数。

SwitchA的配置文件

#
sysname SwitchA
#
vlan batch 10
#
dhcp enable
#
dhcp option template template1                                                  
 gateway-list 10.1.1.1                                                          
 next-server 10.1.1.3                                                           
#
ip pool pool1
 gateway-list 10.1.1.1                                                          
 network 10.1.1.0 mask 255.255.255.0                                            
 excluded-ip-address 10.1.1.2 10.1.1.3                                          
 static-bind ip-address 10.1.1.4 mac-address 00e0-fc12-3456 option-template template1                                                                          
 lease unlimited                                                                
 dns-list 10.1.1.2        
#
interface Vlanif10
 ip address 10.1.1.1 255.255.255.0
 dhcp select global  
#
interface GigabitEthernet0/0/1
 port link-type hybrid
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10 
#
return

验证配置结果

 在SwitchA上使用display ip pool name pool1命令用来查看IP地址池配置情况。

;