25 DHCP(Dynamic Host Configuration Protocol/动态地址配置协议)

发布时间 2023-12-04 15:06:15作者: 搞笑一下

随着网络规模的不断扩大,网络复杂度不断提升,网络中的终端设备例如主机、手机、
平板等,位置经常变化。终端设备访问网络时需要配置IP地址、网关地址、DNS服务器地
址等。采用手工方式为终端配置这些参数非常低效且不够灵活。

DHCP简介

DHCP是一种用于集中对用户IP地址进行动态管理和配置的协议DHCP采用C/S(Client/Server,客户端/服务器)通信模式,协议报文基于UDP的方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号:
正常工作时由客户端向服务器提出配置申请
服务器返回为客户端分配的IP地址等相应的配置信息

DHCP工作原理与配置

DHCP客户端首次接入网络的工作原理

  1. 发现阶段,即DHCP客户端发现DHCP服务器的阶段

DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。DHCP DISCOVER报文中携
带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息

  1. 提供阶段,即DHCP服务器提供网络配置信息的阶段。

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

  1. 选择阶段,即DHCP客户端选择IP地址的阶段。

如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只
接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该
报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。

4.确认阶段,即DHCP服务器确认所分配IP地址的阶段。

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他
终端使用服务器分配的IP地址

image

DHCP 报文格式

Op(op code):表示报文的类型,取值为1或2,含义如下:
	 1:客户端请求报。
	 2:服务器响应报文。
Secs(seconds):由客户端填充,表示从客户端开始获得IP地址或IP地址续借
后所使用了的秒数,缺省值为3600s
Flags:客户端请求服务器发送响应报文的形式,只有最高位有意义,其余15位
置0。最高位为0时请求发送单播响应,最高位为1时请求发送广播响应
Yiaddr(your client ip address):表示服务器分配给客户端的IP地址。当服务器
进行DHCP响应时,将分配给客户端的IP地址填入此字段
Siaddr(server ip address):DHCP服务器的IP地址
Chaddr(client hardware address):客户端的MAC地址
Options:DHCP通过此字段包含了服务器分配给终端的配置信息。

Options预定义选项字段介绍

Options字段由Type、Length和Value三部分组成。其中Type字段取值范围1~255。常见的Options如下表所示

image

DHCP的消息类型

DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。如下图所示,当Type=53,Length=1,Value取值从01到08分别表示不同的DHCP报文类型。

image

DHCP DECLIENT(IP地址冲突报文)

当DHCP客户端请求成功地址后会发送免费ARP检测该IP地址是否有人使用,如果有人使用将会发送DHCP DECLIENT报文告知服务器此IP地址冲突,DHCP服务器会为该IP设置为冲突地址,DHCP 客户端需要重新通过DORA(Discovery/Offer/Request/Ack)报文重新获取地址

DHCP NAK报文(服务器否定分配IP地址)

当DHCP客户端想要续租之前使用的IP地址时,服务器发生了迁移,之前的租借记录没有成功迁移,所以服务器无法将DHCP想要的IP地址分配给客户端,会发送DHCP NAK报文

image

DHCP INFORM(请求网络参数)

当DHCP客户端已经有IP地址,需要请求其他网络参数时发送该报文(不常见)

DHCP续租

当租期达到50%(T1)时

DHCP客户端会自动以单播的方
式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址
租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期
更新成功。

当租期达到87.5%(T2)时

如果仍未收到DHCP服务器的
应答,DHCP客户端会自动以广播的方式向DHCP服务器发
送DHCP REQUEST报文,请求更新IP地址租期。如果收到
DHCP服务器回应的DHCP ACK报文,则租期更新成功。

如果租期时间到时都没有收到服务器的回应

客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地
址。

image

DHCP客户端重用曾经使用过的地址

DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。例如,网络中的主机作为DHCP客户端,在关机再开机的过程中,需要重新获取相关网络参数,则可以请求分配曾经使用过的IP地址

  1. 选择阶段

客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option 50(请求的IP地址选项)字段填入曾经使用过的IP地址。

  1. 确认阶段

DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址,如果没有租约记录,则不响应。

image

DHCP地址分配顺序

DHCP服务器按照如下次序为客户端选择IP地址:

DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。
客户端以前曾经使用过的IP地址,即客户端发送的请求报文中请求IP地址选项的地址。
在DHCP地址池中,顺序查找可供分配的空闲IP地址,最先找到的IP地址
如果在DHCP地址池中未找到可供分配的空闲IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误

image

DHCP配置命令介绍

[Huawei]ip pool ip-pool-name  //创建全局地址池
[Huawei-ip-pool-HW]gateway-list ip-address //配置DHCP客户端的网关地址
[Huawei-ip-pool-HW]network ip-address [ mask { mask | mask-length } ] // 配置全局地址池可动态分配的IP地址范围
[Huawei-ip-pool-HW]excluded-ip-address start-ip-address [ end-ip-address ] //配置地址池中不参与自动分配的IP地址
[Huawei-ip-pool-HW] lease { day day [ hour hour [ minute minute ] ] | unlimited } \\配置地址池的地址租期
[Huawei-ip-pool-HW] static-bind ip-address ip-address mac-address mac-address [ option-template template-name | description description ]\\配置为指定DHCP Client分配固定IP地址
[Huawei-GigabitEthernet0/0/1]dhcp select interface //基于接口创建地址池
[Huawei-GigabitEthernet0/0/1]DHCP server gateway-list ip-address //配置接口地址池的网关
[Huawei-GigabitEthernet0/0/1]DHCP server static-bind ip-address ip-address mac-address mac-address [ description description ] //配置为指定DHCP Client分配固定IP地址
[Huawei-GigabitEthernet0/0/1]DHCP server excluded-ip-address start-ip-address [ end-ip-address ] //配置地址池中不参与自动分配的IP地址
[Huawei-GigabitEthernet0/0/1]DHCP server lease { day day [ hour hour [ minute minute ] ] | unlimited } //配置地址池的地址租期

DHCP Relay

随着网络规模的不断扩大,网络设备不断增多,企业内不同的用户可能分布在不同的网段,一台DHCP服务器在正常情况下无法满足多个网段的地址分配需求。如果还需要通过DHCP服务器分配IP地址,则需要跨网段发送DHCP报文。DHCP Relay即DHCP中继,它是为解决DHCP服务器和DHCP客户端不在同一个广播域而提出的,提供了对DHCP广播报文的中继转发功能,能够把DHCP客户端的广播报文“透明地”传送到其它广播域的DHCP服务器上,同样也能够把DHCP服务器端的应答报文“透明地”传送到其它广播域的DHCP客户端。

image

DHCP Relay报文格式

Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段
由客户端或服务器设置为0,每经过一个DHCP中继时,该字段
加1。
Giaddr(gateway ip address):表示第一个DHCP中继的IP地址。
当客户端发出DHCP请求时,第一个DHCP中继在将DHCP请求报
文转发给DHCP服务器时,会把自己的IP地址填入此字段

image

DHCP Relay工作原理

发现阶段

DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

提供阶段

DHCP服务器根据DHCP DISCOVER报文中的Giaddr字段选择地址池为客户端分配相关网络参数,DHCP中继收到DHCP OFFER报文后,以单播或广播方式发送给DHCP Client。

选择阶段

中继接收到来自客户端的DHCP REQUEST报文的处理过程同“发现阶段”

确认阶段

中继接收到来自服务器的DHCP ACK报文的处理过程同“提供阶段”。

image

DHCP Relay配置命令介绍

使能接口的DHCP中继功能

[Huawei-GigabitEthernet0/0/0]DHCP select relay

在接口视图下配置DHCP服务器的IP地址

[Huawei-GigabitEthernet0/0/0]DHCP relay server-ip ip-address

创建DHCP服务器组

[Huawei]DHCP server group group-name

在DHCP服务器组中配置DHCP服务器成员

[Huawei-DHCP-server-group-HW]DHCP-server ip-address [ ip-address-index ]

配置接口应用的DHCP服务器组

[Huawei-GigabitEthernet0/0/0]DHCP relay server-select group-name

开启接口下的DHCP Client功能

[Huawei-GigabitEthernet0/0/0]ip address DHCP-alloc