4、DHCP

一、DHCP简介

在小型网络中,管理员可以手工为每台主机设定IP地址、掩码、网关等。当网络规模增大时,管理员所需配置工作量也相应增大,且手工配置容易造成IP地址配置错误。DHCP动态主机配置协议的作用是为局域网中的每台计算机自动分配TCP/IP信息,包括IP地址、子网掩码、网关,以及DNS服务器等。其优点是终端主机无须配置、网络维护方便,特点如下。

  • DHCP的前身是BOOTP。早期网络中大量使用无盘工作站,这种工作站没有硬盘,启动时从BOOTROM初始化系统并连接到网络上,BOOTP协议可以自动地为这些主机设定TCP/IP环境。但BOOTP协议有一个缺点:在设定前必须事先获得客户端的硬件地址,而且硬件地址与IP地址的对应是静态绑定的。换而言之,BOOTP没有“动态性”,在有限的IP资源环境中,使用BOOTP会造成IP地址极大的浪费。
  • DHCP可以说是BOOTP的增强版本,能够动态地为主机分配IP地址,并设定主机的其他信息,例如缺省网关、DNS服务器地址等。而且DHCP完全向下兼容BOOTP,BOOTP客户端也能够在DHCP的环境中良好运行。
  • DHCP运行在客户端/服务器模式,服务器负责集中管理IP配置信息(包括IP地址、子网掩码、缺省网关、DNS服务器地址等)。
  • DHCP协议报文采用UDP方式封装。DHCP服务器所侦听的端口号是67,客户端的端口号是68。

二、DHCP报文类型

报文名称说明
DHCP DISCOVERDHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器
DHCP OFFERDHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息
DHCP REQUEST此报文用于以下三种用途: 1)客户端初始化后,发送广播的DHCP REQUEST报文来回应服务器的DHCP OFFER报文 2)客户端重启后,发送广播的DHCP REQUEST报文来确认先前被分配的IP地址等配置信息 3)当客户端已经和某个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 INFORMDHCP客户端获取IP地址后,如果需要向DHCP服务器获取更为详细的配置信息(网关地址、DNS服务器地址),则向DHCP服务器发送DHCP INFORM请求报文

三、DHCP工作原理

1、IP地址动态获取过程

DHCP客户端从DHCP服务器动态获取IP地址,主要通过四个阶段进行。

  • 发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCP-DISCOVER报文。
  • 提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCP-DISCOVER报文后,根据IP地址分配的优先次序选出一个IP地址,与其他参数一起通过DHCP-OFFER报文广播发送给客户端。
  • 选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发来DHCP-OFFER报文,客户端只接受第一个收到的DHCP-OFFER报文,然后以广播方式发送DHCP-REQUEST报文,该报文中包含DHCP服务器在DHCP-OFFER报文中分配的IP地址。
  • 确认阶段,即DHCP服务器确认IP地址的阶段。DHCP服务器收到DHCP客户端发来的DHCP-REQUEST报文后,只有DHCP客户端选择的服务器会进行如下操作:如果确认将地址分配给该客户端,则返回DHCP-ACK报文,否则返回DHCP-NAK报文,表明地址不能分配给该客户端。

2、IP地址拒绝及释放

当DHCP客户端收到DHCP服务器包含配置参数的DHCP-ACK报文后,会发送免费ARP报文进行探测,目的地址为DHCP服务器指定分配的IP地址,如果探测到此地址没有被使用,那么DHCP客户端就会使用此地址并且配置完毕。如果DHCP客户端探测到地址已经被分配使用,DHCP客户端会发送给DHCP服务器DHCP-DECLINE报文,表明拒绝使用该地址,并且重新开始DHCP进程。当DHCP客户端选择放弃它的IP地址或租期时,它将向DHCP服务器发送DHCP-RELEASE报文。

3、DHCP租约更新

如果采用动态地址分配方式,则DHCP服务器分配给客户端的IP地址有一定的租借期限,当租借期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP地址租约。在DHCP客户端的IP地址租约期限达到一半时间时,DHCP客户端会向为它分配IP地址的DHCP服务器单播发送DHCP-REQUEST报文,以进行IP租约的更新。如果客户端可以继续使用此IP地址,则DHCP服务器回应DHCP-ACK报文,通知DHCP客户端已经获得新IP租约;如果此IP地址不可以再分配给该客户端,则DHCP服务器回应DHCP-NAK报文,通知DHCP客户端不能获得新的租约。如果在租约的一半时间进行的续约操作失败,DHCP客户端会在租约期限达到7/8时,广播发送DHCP-REQUEST报文进行续约。DHCP服务器的处理方式同上,不再赘述。

四、DHCP中继工作原理

具有DHCP中继功能的网络设备收到DHCP客户端以广播方式发送的DHCP-DISCOVER或DHCP-REQUEST报文后,根据配置将报文单播转发给指定的DHCP服务器。DHCP服务器进行IP地址的分配,并通过DHCP中继将配置信息广播发送给客户端,完成对客户端的动态配置。

由于在IP地址动态获取过程中采用广播方式发送报文,因此DHCP只适用于DHCP客户端和服务器处于同一个子网内的情况。为进行动态主机配置,需要在所有网段上都设置一个DHCP服务器,这显然是很不经济的。DHCP中继功能的引入解决了这一难题。客户端可以通过DHCP中继与其他子网中DHCP服务器通信,最终获取到IP地址。这样,多个网络上的DHCP客户端可以使用同一个DHCP服务器,既节省了成本,又便于进行集中管理。

五、DHCP服务器基本配置示例

AR1:

dhcp enable

dhcp server ip-pool wolf

gateway-list 192.168.1.254

network 192.168.1.0 mask 255.255.255.0

dns-list 8.8.8.8

expired day 1

dhcp server forbidden-ip 192.168.1.101 192.168.1.254



expired day 1配置租期,默认一天
dhcp server forbidden-ip 192.168.1.101 192.168.1.254将地址保留不做分配

如图,当PC1通过DHCP获取地址,流程如下。

  • 初始状态PC1发送DHCP-DISCOVER报文,源地址为未指定地址,目的地址为广播,所有DHCP服务器都可以收到,报文携带了PC1的MAC地址。
  • DHCP服务器在分配地址192.168.1.1之前先通过ping测试,确保该地址没有被占用。
  • DHCP服务器将给主机分配的地址、DNS等相关信息放在DHCP-OFFER报文中,该报文还会携带DHCP服务器的IP地址。
  • PC1回复DHCP-REQUEST报文,报文中携带DHCP服务器的IP地址,表明自己选择了哪台DHCP服务器。
  • DHCP服务器通过DHCP-ACK报文进行确认,告诉PC1这个地址你可以用了。
  • PC1在使用地址之前,会发送免费ARP进行重复地址检测。
  • 如果PC1不在通过DHCP的方式获取地址,会发送DHCP-Release报文将地址释放掉。

六、DHCP中继配置示例

AR1:

dhcp enable

interface GigabitEthernet0/1

dhcp select relay

dhcp relay server-address 1.1.12.2

interface GigabitEthernet0/2

dhcp select relay

dhcp relay server-address 1.1.12.2

AR2:

dhcp enable

dhcp server ip-pool1

gateway-list 192.168.1.254

network 192.168.1.0 mask 255.255.255.0

dns-list 8.8.8.8

dhcp server ip-pool2

gateway-list 192.168.2.254

network 192.168.2.0 mask 255.255.255.0

dns-list 8.8.8.8

ip route-static 192.168.1.0 24 1.1.12.1

ip route-static 192.168.2.0 24 1.1.12.1

AR1将DHCP-DISCOVER报文的源、目的地址修改成单播地址发给AR2,该报文中携带中继地址192.168.2.254。AR2收到DHCP-DISCOVER报文,根据中继地址分配一个192.168.2.0网段的地址给PC2。后续的流程跟常规DHCP并无明显差异。