DHCP产生背景

在TCP/IP网络中,每个终端设备需要分配独有的IP地址和掩码等信息才能接入网络,而随着网络规模越来越大,通过手动配置终端IP地址以及掩码过于繁琐,在终端数量众多的场景下,工作量巨大,于是引进了DHCP

DHCP简介

DHCP(Dynamic Host Configuration Protocol)动态主机配置协议。
采用C/S架构,通过向主机和终端动态分配IP地址以及其他信息,报文采用UDP封装,服务端口号67,客户端端口号68

DHCP的特点

  • 即插即用

客户端不需要配置IP就能获得IP地址等参数,降低维护成本和配置难度

  • 统一管理

所有IP地址以及相关参数信息,都由DHCP服务器统一管理和分配

  • 使用效率高

通过对IP地址设置租期,来降低IP地址使用成本,提升使用效率

  • 可跨网段

通过配置DHCP中继可以实现不同网段中的客户端和DHCP服务器实现协议报文交互

DHCP系统架构组成

系统架构
一般简单的网络不需要在有个中继处理,路由器本身就可以作为一台DHCP服务器,例如家庭网络

DHCP地址分配的方式

三种分配方式
手工分配自动分配动态分配

手工分配

由管理员手动在DHCP客户端上静态绑定IP地址,通过DHCP服务器绑定所设置的固定IP,此地址永久被该设置的客户端使用,其他主机无法使用

自动分配

由DHCP服务器为客户端动态分配租期无限长的IP地址,只有该客户端手动释放地址,这地址才能回收分配给其他客户端使用

动态分配

由DHCP服务器为客户端分配带有租期时间的IP地址,如果客户端没有续约,到达使用期限后会回收该地址。基本上DHCP都是用的这种功能,前两者很少用到

IP地址获取流程

流程图

主机源地址目的地址模式
PC>ServerDiscover0.0.0.0255.255.255.255广播
Server>PCOfferipaddress255.255.255.255广播
PC>ServerRequestipaddress255.255.255.255广播
Server>PCACKipaddress255.255.255.2555广播
  1. 客户端以全网广播形式发起IP地址寻找 Discover
  2. 服务器以全网广播形式向客户端发送IP地址提供 Offer
  3. 客户端选择好IP地址后,以全网广播形式向服务器请求选择结果 Request
  4. 服务器向客户端以全网广播形式发送IP地址确认ACK

当提供的IP地址被使用时,客户端会使用DHCPDecline报文告知DHCP服务器拒绝使用该地址,并重新开始DHCP获取IP流程

DHCP续租过程

续租流程
使用DHCP Request报文,在当租期还剩50%的时候,如果客户端在线,那么会单播请求IP续租,服务器回应ACK,如果续租失败,在还是87.5%的时候,还会请求一次,但这次请求就不是单播,而是广播,服务器回应还是同上。

DHCP中继原理

DHCP中继
具有DHCP中继功能的网络设备收到DHCP客户端以广播方式发送的DHCP-DISCOVER 或 DHCP-REQUEST 报文后,根据配置将报文单播转发给指定的DHCP 服务器。
DHCP 服务器进行 IP 地址的分配,并通过 DHCP 中继将配置信息广播发送给客户端,完成对客户端的动态配置。
该模式适用于多内网的情况,只需要一台独立的DHCP服务器,就可以完成多个子网的IP地址分配

DHCP服务器配置

在华三路由、三层交换设备上配置

/*开启DHCP服务*/
[Router] dhcp enable
/*创建用于分配地址的地址池*/
[Router] dhcp server ip-pool [name]
/*宣告要分配的IP地址范围*/
[Router-dhcp-pool-0] network [network-address] [ mask-length | mask mask ]
/*设置客户端所分配的网关地址*/
[Router-dhcp-pool-0] gateway-list [ip-address ]
/*设置客户端所分配的DNS服务器地址*/
[Router-dhcp-pool-0] dns-list [ip-address ]
/*设置不参与分配的地址的范围*/
[Router] dhcp server forbidden-ip [start-ip-address ~ end-ip-address ]
/*设置动态分配的IP的租期*/
[Router-dhcp-pool-0] expired { day day [ hour hour [ minute minute [ second second ] ] ] | unlimited }
/*租期日期填写
day day:天数,取值范围为 0~365。
hour hour:小时数,取值范围为 0~23。
minute minute:分钟数,取值范围为 0~59。
second second:指定租约过期的秒数,second 取值范围为 0~59。
unlimited:有效期限为无限长。
*/

配置实例

日常维护命令
/*显示地址池信息*/
[Router] display dhcp server pool [ pool-name ]
/*显示空闲地址信息*/
[Router] display dhcp server free-ip [ pool poolname ]
/*显示DHCP服务器统计信息*/
[Router] display dhcp server statistics [ pool poolname ]
DHCP中继配置
/*在接口上指定DHCP服务器的地址*/
[Router-Ethernet1/1] dhcp relay server-address ipaddress
/*接口上配置DHCP中继模式*/
[Router-Ethernet1/1] dhcp select relay
日常维护命令
/*显示DHCP服务器地址信息*/
[Router] display dhcp relay server-address
/*显示DHCP中继用户地址表信息*/
[Router] display dhcp relay client-information
[ interface interface-type interface-number | ip ipaddress [ vpn-instance vpn-instance-name ] ]
/* 显示DHCP中继的相关报文统计信息*/
[Router] display dhcp relay statistics [ interface
interface-type interface-number ]

实例