一、简单原理介绍
随着网络规模的扩大和网络复杂度的提高,网络越来越复杂,经常出现计算机位置变化(如便携机或无线网络)和计算机数量超过可分配的IP 的情况。动态主机配置协议(Dynamic Host Configuration Protocol)就是为满足这些需求而发展起来的。协议采用客户端/服务器(Client/Server)方式工作,DHCP Client向DHCP Server动态地请求配置信息,DHCP Server根据策略返回相应的配置信息(如IP等)。
DHCP客户端与服务器的交互过程:
DHCP客户端为了获取合法的动态IP地址,在不同阶段与服务器之间交互不同的信息,通常存在以下三种模式:
1、DHCP客户端首次登录网络:
DHCP客户端首次登录网络时,主要通过四个阶段与DHCP服务器建立联系。
发现阶段,即DHCP客户端寻找DHCP服务器的阶段。客户端以广播方式发送DHCP_Discover报文,只有DHCP服务器才会进行响应;
提供阶段,即DHCP服务器提供IP地址的阶段。DHCP服务器接收到客户端的DHCP_Discover报文后,从IP地址池中挑选一个尚未分配的IP地址分配给客户端,向该客户端发送包含出租IP地址和其它设置的DHCP_Offer报文;
选择阶段,即DHCP 客户端选择IP地址的阶段。如果有多台DHCP服务器向该客户端发来DHCP_Offer报文,客户端只接受第一个收到的DHCP_Offer报文,然后 以广播方式向各DHCP服务器回应DHCP_Request报文,该信息中包含向所选定的DHCP服务器请求IP地址的内容;
确认阶段,即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP_Request报文后,便向客户端发送包含它所提供的IP地址和其它设置的DHCP_ACK确认报文。然后,DHCP客户端将其TCP/IP协议组件与网卡绑定;
除DHCP客户端选中的服务器外,其它DHCP服务器本次未分配出的IP地址仍可用于其他客户端的IP地址申请。
2、DHCP客户端再次登录网络
当DHCP客户端再次登录网络时,主要通过以下几个步骤与DHCP服务器建立联系。
DHCP客户端首次正确登录网络后,以后再登录网络时,只需要广播包含上次分配IP地址的DHCP_Request报文即可,不需要再次发送DHCP_Discover报文;
DHCP服务器收到DHCP_Request报文后,如果客户端申请的地址没有被分配,则返回DHCP_ACK确认报文,通知该DHCP客户端继续使用原来的IP地址;
如果此IP地址无法再分配给该DHCP客户端使用(例如已分配给其它客户端),DHCP服务器将返回DHCP_NAK报文。客户端收到后,重新发送DHCP_Discover报文请求新的IP地址;
3、DHCP客户端延长IP地址的租用有效期
DHCP服务器分配给客户端的动态IP地址通常有一定的租借期限,期满后服务器会收回该IP地址。如果DHCP客户端希望继续使用该地址,需要更新IP租约(如延长IP地址租约)。
在实际使用中,DHCP客户端缺省在IP地址租约期限达到一半时,DHCP客户端会自动向DHCP服务器发送DHCP_Request报文,以完成IP租约的更新。如果此IP地址有效,则DHCP服务器回应DHCP_ACK报文,通知DHCP客户端已经获得新的租约。
下面介绍S8500作为DHCP SERVER的实现方法。
二、S8500典型配置实例
2.1 组网需求
DHCP Client所在的网段地址为10.110.0.0,连接到交换机的VLAN2中的端口。需要通过具有DHCP Server功能的交换机为其分配地址,图中的交换机直接具有Server功能,无需DHCP Relay来中继。
2.2 组网图
2.3 DHCP基本配置:
[Switch A]vlan 10
[Switch A-vlan10]port eth3/1/30 eth3/1/34 eth3/1/38
[Switch A]int vlan 10
[Switch A-Vlan-interface10]ip add 10.0.0.1 24
#设置全局地址池ip-pool 1,发布地址池网段10.0.0.0/24,并设置网关10.0.0.1。
[Switch A]dhcp server ip-pool 1
[Switch A-dhcp-1]network 10.0.0.0 mask 255.255.255.0
[Switch A-dhcp-1]gateway-list 10.0.0.1
另外还有一些常用配置:
三、正常状态信息查看
配置完成后,连接PC1,分配地址后,显示DHCP信息:
#查看DHCP SERVER地址池中被分配使用的地址,看显示信息可知,被分配的地址为10.0.0.2。
[Switch A-Vlan-interface10]dis dhcp server ip-in-use all
Global pool:
IP address Hardware address Lease expiration Type
10.0.0.2 0015-c50b-a8ba Jul 6 2006 15:02:00 PM Auto:COMMITTED
Interface pool:
IP address Hardware address Lease expiration Type
#查看DHCP SERVER地址池。看显示可知,地址池名称为1,地址池10.0.0.0/24
[Switch A]dis dhcp server tree all
Global pool:
Pool name: 1
network 10.0.0.0 mask 255.255.255.0
expired 1 0 0
由原理介绍可知,主机首次连接到DHCP SERVER上和后续断开再连接,这两个分配地址的过程是不同的。为了说明此不同,将PC1与网络断开再重新连接,查看整个Debugging信息。
#查看debugging 信息,可知,在首次连接后只需要DHCPREQUEST,DHCPACK交换后就给主机分配了相应地址。
[Switch A]
%Jul 5 15:19:57 2006 Switch A L2INF/5/PORT LINK STATUS CHANGE:
Ethernet3/1/30: is DOWN
*0.19362633 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: receive DHCPREQUEST from 0015-C50B-A8BA
*0.19362753 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: Send DHCPACK to MAC=> 0015-C50B-A8BA Offer IP=> 10.0.0.2
将PC2首次连接DHCP SERVER,查看S8500给主机分配地址时完整的Debugging信息。
# 查看debugging 信息,可以看出,需要DHCPDISCOVER、DHCPOFFER、DHCPREQUEST、 DHCPACK整个完整的信息交换后,DHCP SERVER才给主机分配相应地址。同时还可以看出DHCP SERVER在发出DHCPOFFER之前,先进行了两次PING检测,在地址不冲突的情况下,才发出DHCPOFFER。
[Switch A]
*0.19495260 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: receive DHCPDISCOVER from 0015-C50B-0DFF
*0.19495390 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: Sending ICMP ECHO to Target IP: 10.0.0.3
*0.19495764 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: Sending ICMP ECHO to Target IP: 10.0.0.3
*0.19496270 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: Send DHCPOFFER to MAC=> 0015-C50B-0DFF Offer IP=> 10.0.0.3
*0.19496420 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: receive DHCPREQUEST from 0015-C50B-0DFF
*0.19496541 Switch A DHCPS/8/DHCPS_DEBUG_COMMON:
DhcpServer: Send DHCPACK to MAC=> 0015-C50B-0DFF Offer IP=> 10.0.0.3
除了使用全局地址池给主机分配地址外,还可以使用VLAN 10接口地址池的方式给主机分配地址,只需在配置中选择接口就可以。
[Switch A]dhcp select interface interface vlan 10
也可以在接口视图下:
[Switch A-Vlan-interface10]dhcp select interface
#上述配置实例使用的版本为S8500-VRP310-r1271。