资源描述
DHCP几个概念:
DHCP Client:DHCP客户端,通过DHCP协议请求IP地址的客户端。DHCP客户端是接口级的概念,如果一个主机有多个以太接口,则该主机上的每个接口都可以配置成一个DHCP 客户端。交换机上每个Vlan接口也可以配置成一个DHCP客户端。
DHCP Server:DHCP 服务端,负责为DHCP客户端提供IP地址,并且负责管理分配的IP地址。
DHCP Relay:DHCP中继器,DHCP客户端跨网段申请IP地址的时候,实现DHCP报文的转发功能。
DHCP Security:DHCP安全特性,实现合法用户IP地址表的管理功能
DHCP Snooping:DHCP监听,记录通过二层设备申请到IP地址的用户信息
发现阶段:
即DHCP客户端寻找DHCP服务端的过程,对应于客户端发送DHCP Discovery,因为DHCP Server对应于DHCP客户端是未知的,所以DHCP 客户端发出的DHCP Discovery报文是广播包,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。
如果网络中存在多个DHCP Server,则多个DHCP Server均会回复该DHCP Discovery报文。
如果同一个vlan内没有DHCP Server,而该VlanIf配置了DHCP Relay功能,则该Vlanif即为DHCP中继,DHCP中继会将该DHCP报文的源IP地址修改为该Vlanif的IP地址,而目的地址则为DHCP Relay配置的DHCP Server的IP地址。同时修改DHCP报文中,giaddress为VlanIf的IP地址。并以单播将DHCP Discovery发送到DHCP Server端。
DHCP Server 提供阶段:
DHCP Server提供阶段,即为DHCP Server响应DHCP Discovery所发的DHCP Offer阶段
DHCP Server收到DHCP Discovery报文后,解析该报文请求IP地址所属的Subnet。并从dhcpd.conf文件中与之匹配的subnet中取出一个可用的IP地址(从可用地址段选择一个IP地址后,首先发送ICMP报文来ping该IP地址,如果收到该IP地址的ICMP报文,则抛弃该IP地址,重新选择IP地址继续进行ICMP报文测试,直到找到一个网络中没有人使用的IP地址,用以达到防治动态分配的IP地址与网络中其他设备IP地址冲突,这个IP地址冲突检测机制,可配置),设置在DHCP Discovery报文中yiaddress字段中,表示为该客户端分配的IP地址,并且为该Lease设置该Subnet配置的Option,例如默认leases租期,最大租期,router等信息。
DHCP从地址池中选择IP地址,以如下优先级进行选择:
1、当前已经存在的Ip Mac的对应关系
2、Client以前的IP地址
3、读取Discovery报文中的Requested Ip Address Option的值,如果存在并且IP地址可用
4、从配置的Subnet中选择IP地址:
DHCP Server解析DHCP Discovery请求的IP所属的Subnet,首先看该DHCP Discovery报文中giaddress是否有DHCP Relay,如果有,则从giaddress所述的subnet中可用IP地址段中获取,并分配IP。如果giaddress没有IP地址,则从该DHCP Server绑定的接口的IP地址所属的网段分配IP地址。
DHCP Client 选择阶段:
DHCP Client收到若干个DHCP Server响应的DHCP Offer报文后,选择其中一个DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。
然后以广播方式回答一个DHCP Request报文,该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广播方式发出的,是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。
DHCP Server确认阶段:
当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址后,便想该DHCP Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可以使用该IP地址了。然后DHCP Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址。
DHCP Client重新登录网络:
当DHCP Client重新登录后,发送一个以包含之前DHCP Server分配的IP地址信息的DHCP Request报文,当DHCP Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答一个ACK报文。
但是如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报文后,会重新发送DHCP Discovery报文来重新获取IP地址。
DHCP Client更新租约:
DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。
一、DHCP Server的地址分配与释放遵循着四个原则。通过这几个原则,对于分析DHCP Server地址分配问题大有裨益。如下:
1、对于动态分配地址的情况,当一个MAC地址获取到DHCP Server分配的地址时,此分配的IP地址就会放到ip-in-use的表项中,默认情况下1天时间内,若此MAC下线或者没有及时续约,则此地址在MAC下线后就被放入过期池中,成为过期表项。当此MAC再次上线申请时,若expired表中还有此MAC的记录,就会将这个地址再分给这个MAC;
2、 对于一个新上线申请的MAC,设备会检查是地址池中是否还有可分配的地址,若有,则将IP地址最小的地址分配给此MAC,若没有则将过期池中的过期地址释放给此MAC,原则是将过期地址时间最长的那个地址分给此MAC;
3、对于一个新上线申请的MAC,若地址池中ip-in-used、expired、conflict、forbidden的总数已经达到DHCP Server的最大规格时,会将过期池中的过期地址释放给此MAC;
4、在地址池中仍有地址可分的情况下,过期池里的过期地址永远不会老化,只有一种情况会老化,即在当过期地址达到最大规格的4/5时,这时才会将过期池中时间最长的地址释放,即过期池中的过期表项数量不会超过最大规格的4/5。
二、在交换机上使用“display dhcp server free-ip”命令显示为空的说明:
该命令只显示从未被分配过的ip地址,如果ip地址被分配过给pc并且由于pc超期没有续约,那么该IP是不会被放回到free-ip地址池中的,它将被作为expired的ip地址被重新分配。
-----------------------------------------------------------------------------------------------------------------三、交换机记录DHCP Server分配IP地址冲突的情况如下:
情况1,server每次分配IP地址都会发送一个ICMP报文,去探测网络中有没有PC使用这个IP地址,如果有,就记录一个冲突。
情况2,有时候,server的ICMP没有人应答,比如server和client不再同一个网络中。此时PC刚拿到这个IP地址,还会发送一个ARP去查看本网络内有没有人使用这个IP地址,如果有,就给server发送一个decline报文报文,server也将这个地址记录成冲突地址。
需要说明的是,软件内部有一个计时器,只有该计时器超时才会将曾经冲突的地址继续分配给客户端,该计时器无法手工定义或修改。除非使用reset dhcp server conflict命令手工清除记录才可以将这些曾经冲突的地址继续分配下去
DHCP有三种机制分配IP地址:
1) 自动分配方式(Automatic Allocation),DHCP服务器为主机指定一个永久性的IP地址,一旦DHCP客户端第一次成功从DHCP服务器端租用到IP地址后,就可以永久性的使用该地址。
2) 动态分配方式(Dynamic Allocation),DHCP服务器给主机指定一个具有时间限制的IP地址,时间到期或主机明确表示放弃该地址时,该地址可以被其他主机使用。
3) 手工分配方式(Manual Allocation),客户端的IP地址是由网络管理员指定的,DHCP服务器只是将指定的IP地址告诉客户端主机。
三种地址分配方式中,只有动态分配可以重复使用客户端不再需要的地址。
-----------------------------------------------------------------------------------------------
对于DHCP故障,相处理DHCP故障的技巧和步骤。
第一:检查物理连接是否畅通。
在客户端与服务器连接的网卡上配置IP地址,确保该IP地址与服务器端接口GigabitEthernet1/0/0的IP地址在同一网段。从客户端ping GigabitEthernet1/0/0接口的IP地址,如果可以ping通,则说明连接畅通,那么物理线路故障便可被排除。也可以在服务器端打开DHCP的调试开关,查看是否可以收到客户端的DHCPDISCOVER报文。
第二:DHCP服务器的配置是否正确。
1.执行命令dhcp enable。
2.执行命令display dhcp server tree all,查看全局地址池是否存在,且地址池中的IP地址与接口GigabitEthernet1/0/0的IP地址是否在同一个网段中。如果不存在,执行命令dhcp server ip-pool pool-name和命令network ip-address [ mask { mask mask-length } ]创建地址池和配置地址池中可动态分配的IP地址范围。如果地址池存在,但地址池中的IP地址与接口GigabitEthernet1/0/0的IP地址不在同一个网段,则修改地址池中的IP地址或修改接口GigabitEthernet1/0/0的IP地址,使二者在一个网段中。
3.系统视图下执行命令dhcp select global { all interface interface-type interface-number }或在GigabitEthernet1/0/0接口视图下执行命令dhcp select global,确保GigabitEthernet1/0/0下的客户从全局地址池获取地址。
第三:地址池内是否有可用IP地址、过期IP地址或冲突IP地址。
1.执行命令display dhcp server free-ip,检查全局地址池内是否还有可用IP地址。
2.如果没有可用地址,执行命令display dhcp server expired pool pool-name,查看是否有过期的IP地址。
3.如果不存在过期IP地址,执行命令display dhcp server conflict all,查看是否有冲突的IP地址。如果有的话,查看其探测时间(Discover Time)是否已经超过1小时。NE80E/40E的实现中,如果发现冲突的IP地址,那么在1小时以后我们可以对于此IP地址进行重新分配使用。当存在冲突IP地址时,且探测时间没有超过1小时,则执行命令reset dhcp server conflict all释放冲突IP地址。如果没有冲突IP地址,则地址池中的可用IP地址、过期IP地址和冲突的IP都不存在,就说明地址池中IP地址已经用尽,可以重新创建一个全局地址池,该地址池的Network和前一个地址池的Network重叠,且网段大于前地址池的网段。
展开阅读全文