随着网络规模的扩大和网络复杂度的提高,计算机的数量经常超过可供分配的ip地址的数量,同时随着便携机及无线网络的广泛应用,计算机的位置也经常变化,相应的ip地址也必须经常更新,从而导致网络配置越来越复杂。为应对上述一系列问题,动态主机配置协议( dynamic host configuration protocol,dhcp)应运而生,主要用来给网络客户机分配动态的ip地址。
dhcp的作用是为局域网中的每台计算机自动分配tcp/ip协议族的协议信息,包括ip地址、子网掩码、网关及dns服务器等。使用dhcp时,终端主机无须配置,网络维护方便。
dhcp的整个分配过程自动实现。在客户端上,除了将dhcp选项选中外,无须做任何ip环境设定,所有ip网络资源都由dhcp服务器统一管理 ,可以帮客户端指定netmask、dns服务器、默认网关等参数。dhcp采用广播方式交互报文,由于默认情况下路由器不会将收到的广播包从一个子网发送到另一个子网,因而当dhcp服务器与客户主机不在同一个子网时,必须使用dhcp中继( dhcp relay)。
1.组网结构
dhcp网络采用客户端/服务器体系结构,客户端靠发送广播方式的发现信息来寻找dhcp服务器,即向地址255.255.255.255发送特定的广播信息,服务器收到请求后进行响应。而路由器默认情况下是隔离广播域的,对此类报文不予处理,因此dhcp的组网方式分为同网段和不同网段两种方式。dhcp服务器和dhcp客户端在同一个子网时,同网段组网。
dhcp服务器和dhcp客户端不在同一个子网时,不同网段的组网。当dhcp服务器和客户机不在同一个子网时,充当客户主机默认网关的路由器必须将广播包发送到dhcp服务器所在的子网,这一功能即称为dhcp中继。
标准的dhcp中维的功能相对来说也比较简单,包括重新封装、 续传 dhcp报文。
2.地址分配
dhcp服务器支持以下3种类型的地址分配方式。
(1)手工分配
这种方式下,由管理员为少数特定dhcp客户端(如dns、www服务器、打印机等)静态绑定固定的ip地址,通过dhcp服务器将所绑定的固定ip地址分配给dhcp客户端,此地址永久被该客户端使用,其他主机无法使用。
(2)自动分配
这种方式下,dhcp服务器可以为dhcp客户端动态分配租期为无限长的ip地址,只有客户端释放该地址后,该地址才能被分配给其他客户端使用。
(3)动态分配
这种方式下,dhcp服务器可为dhcp客户端分配具有一定有效期的ip地址。如果客户端没有及时续约,到达使用期限后,此地址可能会被其他客户端使用。绝大多数客户端得到的都是这种动态分配的地址。在这3种方式中,只有动态分配的方式可以对已经分配给主机但现在主机已经不用的ip地址重新加以利用。在给一台临时联入网络的主机分配地址或者在一组不需要永久ip 地址的主机中共享一组有限的ip地址时,动态分配显得特别有用。另外,当一台新主机要永久接入一个网络,而网络的ip地址非常有限时,为了将来这台主机被淘汰时能回收ip地址,使用动态分配也是一个很好的选择。
在dhcp环境中,dhcp服务器为dhcp客户端分配ip地址时遵循的一个基本原则就是,尽可能地为客户端分配原来使用的ip地址。在实际使用过程中也会发现,当dhcp客户端重新启动后,它能够获得相同的ip地址。dhcp服务器为dhcp客户端分配ip地址时参照如下先后顺序。
(1)dhcp服务器数据库中与dhcp客户端的mac地址静态绑定的ip地址。
(2)dhcp客户端曾经使用过的地址。
(3)最先找到的可用的ip地址。
(4)如果未找到可用的p地址,则依次查询超过租期、发生冲突的ip地址。如果找到,则进行分配,否则报告错误。
dhcp的协议报文主要有8种,其中,dhcp discover、dhcp offer、dhcp request、 dhcp ack和dhcp release这5种报文在dhcp交互过程中比较常见,而dhcp nak、dhcp decline和dhcp inform这3种报文则较少使用。
dhcp discover 报文是dhcp客户端系统初始化完毕后第一次向dhcp server发送的请求报文,该报文通常以广播的方式发送。
dhcp offer报文是dhcp server对dhcp discover报文的回应,采用广播或单播的方式发送。该报文中会包含dhcp服务器要分配给dhcp客户端的ip地址、掩码、网关等网络参数。
dhcp request报文是dhcp客户端发送给dhcp服务器的请求报文,根据dhcp客户端当前所处的不同状态采用单播或者广播的方式发送,完成的功能包括dhcp服务器选择及租期更新等。
dhcp release报文是当dhcp客户端想要释放已经获得的ip地址资源或取消租期时向dhcp服务
器发送的报文,采用单播的方式发送。
dhcp acknak这两种报文都是dhcp服务器对所收到的dhcp客户端请求报文的一个最终确认。如果收到的请求报文中各项参数均正确,dhcp 服务器就回应一个dhcp ack报文,否则将回应个dhcp nak报文。
当dhcp客户端收到dhcp ack报文后,它将对所获得的ip地址进行进一步 确认,通常利用免费arp进行确认。如果发现该ip地址已经在网络上使用,它将通过广播方式向dhcp客户端发送dhcp decline报文,拒绝所获得的这个ip地址。
当dhcp服务器通过其他方式(例如手工指定)已经获得可用的ip地址时,如果它还需要向dhcp服务器索要其他配置参数,它将向dhcp服务器发送dhcp inform报文进行申请,dhcp服务器如果能够对所请求的参数进行分配,将会单播回应dhcp ack报文,否则不进行任何操作。
1.同网段工作过程
(1)信息交互过程
当dhcp服务器和dhcp客户端处于同网段时,dhcp客户端接入网络后第一 次进行ip地址申请时,dhcp服务器和dhcp客户端将完成图所示的信息交互过程。
( 1 ) dhcp客户端在它所在的本地物理子网中广播一个dhcp discover报文,目的是寻找能够分配ip地址的dhcp服务器。此报文可以包含ip地址和ip地址租期的建议。
(2)本地物理子网的所有dhcp服务器都将通过dhcp offer报文来回应dhcp discover报文。dhcp offer报文中包含了可用网络地址和其他dhcp配置参数。当dhcp服务器分配新的地址时,通过发送指向被分配地址的icmp echo request 来确认被分配的地址有没有被使用。如果未被使用,再发送dhcp offer报文给dhcp客户端。
(3) dhcp客户端收到一个或多个dhcp服务器发送的dhcp offer报文后,将从多个dhcp服务器中选择其中一个,并且广播dhcp request报文来表明哪个dhcp服务器被选择,同时也可以包括其他配置参数的期望值。如果dhcp客户端在一定时间后依然没有收到dhcp offer 报文,那么它就会重新发送dhcp discover报文。
(4) dhcp服务器收到dhcp客户端发送的dhcp request报文后,发送dhcp ack报文回应,其中包含dhcp客户端的配置参数。dhcp ack报文中的配置参数不能和早前响应dhcf客户端的dhcp offer报文中的配置参数有冲突。如果因请求的地址已经被分配等情况导致被选择的dhcp 服务器不能满足需求,dhcp服务器应该回应一个dhcp nak报文。
当dhcp客户端收到包含配置参数的dhcp ack报文后,会发送免费arp报文进行探测,目的地址为dhcp服务器指定分配的ip地址。如果探测到此地址没有被使用,那么dhcp客户端就会使用此地址并完成配置。如果dhcp客户端探测到地址已经被分配使用,dhcp客户端会发送dhcp decline报文给dhcp服务器,并且重新开始dhcp信息交互进程。另外,如果dhcp客户端收到dhcp nak报文,dhcp客户端也将重新启动dhcp信息交互进程。当dhcp客户端选择放弃它的ip地址或者租期时,它将向dhcp服务器发送dhcp release报文。
(2)更新租约
dhcp客户端在从dhcp server获得ip地址的同时,也获得了这个ip地址的租期。所谓租期,就是dhcp客户端可以使用ip地址的有效期。租期到期后,dhcp客户端必须放弃该ip地址的使用权并重新进行申请。为了避免上述情况,dhcp客户端必须在租期到期之前重新进行更新,延长该ip地址的使用期限,如图所示。
2.跨网段工作过程
当dhcp服务器和dhcp客户端处于不同的网段时,跨网段的工作过程如图所示。
在跨网段的情况下,具有dhcp relay功能的网络设备收到dhcp客户端以广播方式发送的dhcp discover或dhcp request报文后,根据配置将报文单播转发给指定的dhcp服务器。然后dhcp服务器进行ip地址的分配,并通过dhcp中继功能将配置消息广播发送给dhcp客户端,完成网络地址的动态配置。
1.目标
通过dhcp的配置,使某公司的所有主机都可以自动获取ip地址。
2.拓扑图
本实例的网络拓扑如图所示。
3.配置步骤
(1)按拓扑图配置端口ip地址
(2)配置dhcp服务器
[r2]dhcp enable
//使能dhcp功能
[r2]ip pool 1
//创建dhcp地址池
[r2-ip-pool-1]network 10.5.1.0 mask 255.255.255.0
/ /指明地址池地址范围
[r2-ip-pool-1]gateway-list 10.1.1.1
//指明服务器网关地址
[r2-ip-pool-1] excluded-ip-address 10.5.1.1 10.5.1.2
//使能端口的dhcp服务功能,指定从全局地址池分配地址
[r2-gigabitethernet0/0/0]dhcp select global
(3)配置dhcp中继
[r1]dhcp enable
[r1] dhcp server group 1 //创建一个dhcp 服务器组
[r1-dhcp-server-group-1] dhcp-server 10.1.1.1
//向dhcp服务器组中添加dhcp服务器
[r1]interface ethernet 1/0
[r1-ethernet1/0]dhcp select relay //使能 dhcp中继功能
[r1-ethernet1/0]dhcp relay server-select 1
//配置dhcp中继所对应的dhcp服务器组
(4)客户端配置
将各pc地址获取方式设置为自动获取。
4.测试
pc可自动获取lp地址,在cmd窗口中使用 ipconfig/all命令查看结果。