随着网络规模的不断扩大,网络复杂度不断提升,网络中的终端设备例如主机、手机、
平板等,位置经常变化。终端设备访问网络时需要配置IP地址、网关地址、DNS服务器地
址等。采用手工方式为终端配置这些参数非常低效且不够灵活。
DHCP简介
DHCP是一种用于集中对用户IP地址进行动态管理和配置的协议DHCP采用C/S(Client/Server,客户端/服务器)通信模式,协议报文基于UDP的方式进行交互,采用67(DHCP服务器)和68(DHCP客户端)两个端口号:
正常工作时由客户端向服务器提出配置申请
服务器返回为客户端分配的IP地址等相应的配置信息
DHCP工作原理与配置
DHCP客户端首次接入网络的工作原理
- 发现阶段,即DHCP客户端发现DHCP服务器的阶段
DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。DHCP DISCOVER报文中携
带了客户端的MAC地址、需要请求的参数列表选项、广播标志位等信息
- 提供阶段,即DHCP服务器提供网络配置信息的阶段。
服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址
处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报
文发送给DHCP客户端。
- 选择阶段,即DHCP客户端选择IP地址的阶段。
如果有多个DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端一般只
接收第一个收到的DHCP OFFER报文,然后以广播方式发送DHCP REQUEST报文,该
报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。
4.确认阶段,即DHCP服务器确认所分配IP地址的阶段。
DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他
终端使用服务器分配的IP地址
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如下表所示
DHCP的消息类型
DHCP报文通过Options选项中的Type=53来表示DHCP的报文类型。如下图所示,当Type=53,Length=1,Value取值从01到08分别表示不同的DHCP报文类型。
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报文
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地
址。
DHCP客户端重用曾经使用过的地址
DHCP客户端非首次接入网络时,可以重用曾经使用过的地址。例如,网络中的主机作为DHCP客户端,在关机再开机的过程中,需要重新获取相关网络参数,则可以请求分配曾经使用过的IP地址
- 选择阶段
客户端广播发送包含前一次分配的IP地址的DHCP REQUEST报文,报文中的Option 50(请求的IP地址选项)字段填入曾经使用过的IP地址。
- 确认阶段
DHCP服务器收到DHCP REQUEST报文后,根据DHCP REQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有则返回DHCP ACK报文,通知DHCP客户端可以继续使用这个IP地址,如果没有租约记录,则不响应。
DHCP地址分配顺序
DHCP服务器按照如下次序为客户端选择IP地址:
DHCP服务器的数据库中与客户端MAC地址静态绑定的IP地址。
客户端以前曾经使用过的IP地址,即客户端发送的请求报文中请求IP地址选项的地址。
在DHCP地址池中,顺序查找可供分配的空闲IP地址,最先找到的IP地址
如果在DHCP地址池中未找到可供分配的空闲IP地址,则依次查询超过租期、发生冲突的IP地址,如果找到可用的IP地址,则进行分配,否则报告错误
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客户端。
DHCP Relay报文格式
Hops:表示当前的DHCP报文经过的DHCP中继的数目。该字段
由客户端或服务器设置为0,每经过一个DHCP中继时,该字段
加1。
Giaddr(gateway ip address):表示第一个DHCP中继的IP地址。
当客户端发出DHCP请求时,第一个DHCP中继在将DHCP请求报
文转发给DHCP服务器时,会把自己的IP地址填入此字段
DHCP Relay工作原理
发现阶段
DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。
提供阶段
DHCP服务器根据DHCP DISCOVER报文中的Giaddr字段选择地址池为客户端分配相关网络参数,DHCP中继收到DHCP OFFER报文后,以单播或广播方式发送给DHCP Client。
选择阶段
中继接收到来自客户端的DHCP REQUEST报文的处理过程同“发现阶段”
确认阶段
中继接收到来自服务器的DHCP ACK报文的处理过程同“提供阶段”。
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