Print

dhcp conflict可能有哪些原因

2018-09-18发表

组网及说明

不涉及

问题描述

我们在查看DHCP地址池信息时,有时能看到冲突状态的IP地址。为什么会出现冲突状态的IP地址,会有什么影响,以及如何避免出现这种情况呢?

display dhcp server conflict

IP address          Detect time

192.168.1.100       Apr 31 11:57:20 2010

192.168.1.101       Apr 31 12:00:10 2010


过程分析

DHCP检测IP地址冲突有两种机制:

1DHCP服务器发送ICMP报文探测。在DHCP服务器收到DHCP DISCOVER报文,回应DHCP OFFER报文前,需要先对该地址进行探测,DHCP服务器发送目的地址为待分配地址的ICMP回显请求报文,如果能收到ICMP应答,则认为该IP已经被其他用户占用,DHCP服务器将该IP设置为冲突状态,等待客户端重传DHCP discover报文后分配其他IP

2DHCP客户端发送免费ARP报文探测。当DHCP客户端进行两步上线(客户机发DHCP REQUEST广播包、服务器发DHCP ACK广播包)或四步上线(客户机发DHCP DISCOVER广播包、服务器发DHCP OFFER广播包、客户机发DHCP REQUEST广播包、服务器发DHCP ACK广播包)时,在收到DHCP ACK报文后会发送免费ARP报文,如果收到ARP应答则认为IP已被其他用户占用,这时DHCP客户端会向DHCP服务器发送DHCP decline报文报文通知DHCP SERVER禁用这个IP地址以免引起IP地址冲突,并重新发起四步上线申请IP地址,DHCP服务器收到DHCP decline报文后将该IP设置为冲突状态。

解决方法

出现IP地址冲突可能有以下原因:

原因1:网络中存在用户手动静态配置了这一IP地址,并且DHCP服务器部署没有把此IP地址从地址池中排除出去,造成冲突;可以通过在DHCP服务器上ping该冲突IP地址,如果能ping通,查找该IP地址的ARP表项,查找对应的MAC地址,并找到接入交换机上对应的物理端口,确认该端口下的终端是否配置了静态IP地址。如果确实存在终端需要使用静态IP地址,可以通过dhcp server forbidden-ip命令在地址池中排除该地址。

原因2:地址池信息被清空过,比如设备掉电重启、reset地址池、删除地址池等导致地址池信息被清空的操作。可以查看设备的日志,确认是否有清除、删除地址池等操作,以及设备是否发生过重启。

原因3:网络中存在攻击,当DHCP客户端发送免费ARP报文进行冲突探测时,攻击者仿冒地址拥有者进行ARP应答,这样就可以欺骗DHCP客户端,导致DHCP客户端无法正常使用分配到的IP地址。在网络中存在这样的攻击者时,建议在客户端上关闭地址冲突检查功能,我司产品命令为undo dhcp client dad enable


DHCP服务器检测到冲突IP地址时,会分配其他空闲的IP地址,避免网络中出现IP冲突,这个机制是对网络IP冲突的提前防护,一般不必关注。如果地址池中出现少量冲突状态IP地址,说明网络中可能存在固定IP的用户,建议将该地址从地址中排除。如果地址池中出现大量冲突状态IP,说明地址池信息很可能被清除过。