實戰案例:有意思,用戶網絡下全部蘋果設備接入都拿不到IP!而筆記本、安卓沒事
本期分享的案例是網絡的相關問題。
1. 問題背景
用戶公司某研發中心網絡突然有一天反饋一個奇妙的問題:采購的全套某J網絡設備,網絡下全部蘋果設備通過無線接入網絡后都拿不到IP,蘋果手機、Macbook等通通不行!而筆記本、安卓卻沒事。
拓撲結構:
看起來是個很有意思的問題,我們一起來看看原因吧。
2. 基礎排查
(1) 首先要檢查的自然是AP在線情況了,這點用戶明確現場AP均在線;
(2) 確認AP、AC工作正常,便懷疑和SSID、信道有關?但是修改后依舊沒用;
(3) 然后懷疑可能是無線問題,于是將蘋果電腦有線插到交換機上,發現問題依舊,所以基本排除了無線網絡故障;
(4) 檢查DHCP服務器,發現在系統日志中發現DHCP服務器不斷的再給蘋果終端分配IP地址:
目前來看,是DHCP服務器分出去了,但是蘋果終端一直沒有拿到?沒轍,接下來抓個包看看DHCP交互,確認到底是DHCP服務器有問題還是蘋果設備有問題。
3. 排查分析
第一步:找一臺蘋果電腦安裝Wireshark抓包
復現問題后,過濾DHCP報文,查看交互情況如下:
可以看到,DHCP四次交互完后,過了幾秒后,蘋果設備就發了DHCP Decline,取消以獲得的IP地址,然后再重新獲取。乍一看怎么是蘋果設備的問題?但請等等,終端為什么會發這個報文?如下:
- DHCP Decline:是終端向 DHCP 服務器發送的一種報文,用于拒絕接受已分配的IP地址,并告知服務器該地址不可用。它屬于 DHCP 協議中的異常處理機制,確保網絡中 IP 地址的唯一性。
- 也就是說,蘋果設備拿到IP后做檢測,發現IP沖突了!那么是怎么檢測IP沖突的呢?當然是通過ARP了,所以我們結合DHCP Decline前后一起看下ARP報文
第二步:確認AC能投ping通AP,并且是否開了認證
分析蘋果設備DHCP交互前后的ARP報文:
從上述報文可用看到如下情況:
- 蘋果設備成功DHCP四次交互從服務器那里拿到IP地址192.168.10.146
- 然后全網廣播通告免費ARP:我是192.168.10.146
- 但突然收到一個設備發來的ARP:我才是192.168.10.146!
- 蘋果設備發現IP被占用,故發DHCP Decline釋放當前IP重新IP
那么這個后四位為84:86的設備真的占用該IP了么?進一步看。
第三步:分析異常終端的ARP行為
直接過濾ARP,發現這個84:86的設備只要收到別人發的免費ARP,它都要告訴該設備你的IP我已經用了:
所以造成蘋果設備無法拿到IP的罪魁禍首便是這臺84:86的設備!查了下Mac地址,不知道是什么,但后來用戶發現,是一臺虛擬機:
4. 問題總結和解決方案
(1) 問題總結:
蘋果電腦DHCP拿到IP后會向網絡中發免費ARP告知自己的IP,恰巧被84:86這臺異常虛擬機聽到了,并單播告知它該IP已被占用,因此蘋果釋放當前IP后重新DHCP,如此循環反復。
而安卓、筆記本沒有問題的原因是:他們DHCP后不會發免費DHCP,所以不會被偵聽到告知IP被占用。
(2) 解決方案:
將該虛擬機設備進行了調整后正常,蘋果設備接入網絡后均能成功拿到地址: