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 DISCOVER | DHCP客户端首次登录网络时进行DHCP交互过程发送的第一个报文,用来寻找DHCP服务器 |
DHCP OFFER | DHCP服务器用来响应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 INFORM | DHCP客户端获取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并无明显差异。