用户公司某研发中心网络突然有一天反馈一个奇妙的问题:采购的全套某J网络设备,网络下全部苹果设备通过无线接入网络后都拿不到IP,苹果手机、Macbook等通通不行!而笔记本、安卓却没事。

拓扑结构:

-
首先要检查的自然是AP在线情况了,这点用户明确现场AP均在线;
-
确认AP、AC工作正常,便怀疑和SSID、信道有关?但是修改后依旧没用;
-
然后怀疑可能是无线问题,于是将苹果电脑有线插到交换机上,发现问题依旧,所以基本排除了无线网络故障;
-
检查DHCP服务器,发现在系统日志中发现DHCP服务器不断的再给苹果终端分配IP地址:
目前来看,是DHCP服务器分出去了,但是苹果终端一直没有拿到?没辙,接下来抓个包看看DHCP交互,确认到底是DHCP服务器有问题还是苹果设备有问题。
复现问题后,过滤DHCP报文,查看交互情况如下:

可以看到,DHCP四次交互完后,过了几秒后,苹果设备就发了DHCP Decline,取消以获得的IP地址,然后再重新获取。乍一看怎么是苹果设备的问题?但请等等,终端为什么会发这个报文?如下:
-
DHCP Decline:是终端向 DHCP 服务器发送的一种报文,用于拒绝接受已分配的IP地址,并告知服务器该地址不可用。它属于 DHCP 协议中的异常处理机制,确保网络中 IP 地址的唯一性。
-
也就是说,苹果设备拿到IP后做检测,发现IP冲突了!那么是怎么检测IP冲突的呢?当然是通过ARP了,所以我们结合DHCP Decline前后一起看下ARP报文

-
苹果设备成功DHCP四次交互从服务器那里拿到IP地址192.168.10.146 -
然后全网广播通告免费ARP:我是192.168.10.146 -
但突然收到一个设备发来的ARP:我才是192.168.10.146! -
苹果设备发现IP被占用,故发DHCP Decline释放当前IP重新IP


【问题总结和解决方案】
问题总结:
苹果电脑DHCP拿到IP后会向网络中发免费ARP告知自己的IP,恰巧被84:86这台异常虚拟机听到了,并单播告知它该IP已被占用,因此苹果释放当前IP后重新DHCP,如此循环反复。
而安卓、笔记本没有问题的原因是:他们DHCP后不会发免费ARP,所以不会被侦听到告知IP被占用。
解决方案:
将该虚拟机设备进行了调整后正常,苹果设备接入网络后均能成功拿到地址:

发表回复