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