實戰(zhàn)案例:有意思,用戶網(wǎng)絡(luò)下全部蘋果設(shè)備接入都拿不到IP!而筆記本、安卓沒事
本期分享的案例是網(wǎng)絡(luò)的相關(guān)問題。
1. 問題背景
用戶公司某研發(fā)中心網(wǎng)絡(luò)突然有一天反饋一個奇妙的問題:采購的全套某J網(wǎng)絡(luò)設(shè)備,網(wǎng)絡(luò)下全部蘋果設(shè)備通過無線接入網(wǎng)絡(luò)后都拿不到IP,蘋果手機(jī)、Macbook等通通不行!而筆記本、安卓卻沒事。

拓?fù)浣Y(jié)構(gòu):

看起來是個很有意思的問題,我們一起來看看原因吧。
2. 基礎(chǔ)排查
(1) 首先要檢查的自然是AP在線情況了,這點用戶明確現(xiàn)場AP均在線;

(2) 確認(rèn)AP、AC工作正常,便懷疑和SSID、信道有關(guān)?但是修改后依舊沒用;
(3) 然后懷疑可能是無線問題,于是將蘋果電腦有線插到交換機(jī)上,發(fā)現(xiàn)問題依舊,所以基本排除了無線網(wǎng)絡(luò)故障;
(4) 檢查DHCP服務(wù)器,發(fā)現(xiàn)在系統(tǒng)日志中發(fā)現(xiàn)DHCP服務(wù)器不斷的再給蘋果終端分配IP地址:

目前來看,是DHCP服務(wù)器分出去了,但是蘋果終端一直沒有拿到?沒轍,接下來抓個包看看DHCP交互,確認(rèn)到底是DHCP服務(wù)器有問題還是蘋果設(shè)備有問題。
3. 排查分析
第一步:找一臺蘋果電腦安裝Wireshark抓包
復(fù)現(xiàn)問題后,過濾DHCP報文,查看交互情況如下:

可以看到,DHCP四次交互完后,過了幾秒后,蘋果設(shè)備就發(fā)了DHCP Decline,取消以獲得的IP地址,然后再重新獲取。乍一看怎么是蘋果設(shè)備的問題?但請等等,終端為什么會發(fā)這個報文?如下:
- DHCP Decline:是終端向 DHCP 服務(wù)器發(fā)送的一種報文,用于拒絕接受已分配的IP地址,并告知服務(wù)器該地址不可用。它屬于 DHCP 協(xié)議中的異常處理機(jī)制,確保網(wǎng)絡(luò)中 IP 地址的唯一性。
- 也就是說,蘋果設(shè)備拿到IP后做檢測,發(fā)現(xiàn)IP沖突了!那么是怎么檢測IP沖突的呢?當(dāng)然是通過ARP了,所以我們結(jié)合DHCP Decline前后一起看下ARP報文
第二步:確認(rèn)AC能投ping通AP,并且是否開了認(rèn)證
分析蘋果設(shè)備DHCP交互前后的ARP報文:

從上述報文可用看到如下情況:
- 蘋果設(shè)備成功DHCP四次交互從服務(wù)器那里拿到IP地址192.168.10.146
- 然后全網(wǎng)廣播通告免費(fèi)ARP:我是192.168.10.146
- 但突然收到一個設(shè)備發(fā)來的ARP:我才是192.168.10.146!
- 蘋果設(shè)備發(fā)現(xiàn)IP被占用,故發(fā)DHCP Decline釋放當(dāng)前IP重新IP
那么這個后四位為84:86的設(shè)備真的占用該IP了么?進(jìn)一步看。
第三步:分析異常終端的ARP行為
直接過濾ARP,發(fā)現(xiàn)這個84:86的設(shè)備只要收到別人發(fā)的免費(fèi)ARP,它都要告訴該設(shè)備你的IP我已經(jīng)用了:

所以造成蘋果設(shè)備無法拿到IP的罪魁禍?zhǔn)妆闶沁@臺84:86的設(shè)備!查了下Mac地址,不知道是什么,但后來用戶發(fā)現(xiàn),是一臺虛擬機(jī):

4. 問題總結(jié)和解決方案
(1) 問題總結(jié):
蘋果電腦DHCP拿到IP后會向網(wǎng)絡(luò)中發(fā)免費(fèi)ARP告知自己的IP,恰巧被84:86這臺異常虛擬機(jī)聽到了,并單播告知它該IP已被占用,因此蘋果釋放當(dāng)前IP后重新DHCP,如此循環(huán)反復(fù)。
而安卓、筆記本沒有問題的原因是:他們DHCP后不會發(fā)免費(fèi)DHCP,所以不會被偵聽到告知IP被占用。
(2) 解決方案:
將該虛擬機(jī)設(shè)備進(jìn)行了調(diào)整后正常,蘋果設(shè)備接入網(wǎng)絡(luò)后均能成功拿到地址:




























