實(shí)戰(zhàn) | ??IP地址沖突檢測(cè)方法研究與實(shí)踐
文 / 中國(guó)光大銀行信息科技部 劉軼勇 魏耀輝
IP地址沖突是指在局域網(wǎng)中某主機(jī)配置了與其他主機(jī)相同的IP地址導(dǎo)致原主機(jī)無(wú)法正常處理業(yè)務(wù),這種信息故障事件對(duì)于實(shí)時(shí)交易業(yè)務(wù)尤其是金融行業(yè)業(yè)務(wù)會(huì)帶來(lái)嚴(yán)重影響,快速檢測(cè)網(wǎng)絡(luò)中IP地址沖突并定位至關(guān)重要。下文將分析不同IP地址沖突場(chǎng)景,整理傳統(tǒng)日志監(jiān)控方式以及研究?jī)煞N報(bào)文采集定位方法,旨在實(shí)現(xiàn)快速檢測(cè)定位,提高運(yùn)維效率。
數(shù)據(jù)報(bào)文轉(zhuǎn)發(fā)與IP地址沖突過(guò)程測(cè)試
ARP地址解析是主機(jī)發(fā)現(xiàn)從網(wǎng)絡(luò)層IP地址到鏈路層MAC地址之間映射關(guān)系的過(guò)程。地址解析協(xié)議ARP運(yùn)行的關(guān)鍵是維護(hù)每個(gè)主機(jī)和路由器上記錄了IP地址與MAC地址映射關(guān)系的ARP高速緩存表。下圖中當(dāng)主機(jī)B需要給主機(jī)C發(fā)送數(shù)據(jù)包時(shí),B只知道C的IP地址,通過(guò)查詢主機(jī)B的ARP高速緩存表未找到IP對(duì)應(yīng)的MAC地址,導(dǎo)致主機(jī)B的數(shù)據(jù)連路層無(wú)法封裝MAC幀,無(wú)法給主機(jī)C發(fā)送數(shù)據(jù)包。
圖1 主機(jī)B通過(guò)ARP高速緩存表查找主機(jī)C的MAC地址
為獲取主機(jī)C的MAC地址以便于給主機(jī)C發(fā)送報(bào)文,主機(jī)B需要廣播一條ARP請(qǐng)求報(bào)文,來(lái)請(qǐng)求目的IP地址的MAC地址。主機(jī)C在接收到B的廣播幀之后,首先將B的IP與MAC映射關(guān)系記錄到其ARP高速緩存表中,隨后發(fā)送ARP響應(yīng)告知自己的MAC地址。
圖2 主機(jī)B廣播ARP請(qǐng)求報(bào)文
主機(jī)B在接收到C的ARP響應(yīng)后將MAC地址記錄在自己的ARP高速緩存表中,隨后就可以封裝MAC幀給主機(jī)C發(fā)送數(shù)據(jù)包,其他主機(jī)接收到之后不予理會(huì)。
圖3 主機(jī)C發(fā)送ARP響應(yīng)報(bào)文
地址解析協(xié)議ARP還有另外一個(gè)功能免費(fèi)ARP,此功能的主要作用是為了檢測(cè)IP地址沖突。免費(fèi)ARP是一種特殊的ARP請(qǐng)求,當(dāng)主機(jī)啟動(dòng)的時(shí)候,發(fā)送一個(gè)免費(fèi)ARP請(qǐng)求,請(qǐng)求自己的IP地址的MAC地址。
圖4 免費(fèi)ARP請(qǐng)求報(bào)文
免費(fèi)ARP請(qǐng)求通常有兩個(gè)目的,第一個(gè)目的是當(dāng)IP地址更改了對(duì)應(yīng)的MAC地址時(shí)通過(guò)該ARP請(qǐng)求告知局域網(wǎng)內(nèi)其他主機(jī)更新ARP高速緩存表。第二個(gè)目的則是確定局域網(wǎng)中是否有主機(jī)配置了與自己相同的IP地址。對(duì)于第二個(gè)目的來(lái)說(shuō),主機(jī)并不希望收到此請(qǐng)求的響應(yīng),因?yàn)橐坏┦盏巾憫?yīng)就證明有另一臺(tái)主機(jī)也配置了相同的IP地址,網(wǎng)絡(luò)中發(fā)生了IP地址沖突。
圖5 免費(fèi)ARP響應(yīng)報(bào)文
基于免費(fèi)ARP報(bào)文可以檢測(cè)是否存在IP地址沖突。為測(cè)試不同操作系統(tǒng)在IP地址沖突時(shí)ARP交互情況,我們搭建如下測(cè)試環(huán)境,通過(guò)更改主機(jī)的IP地址配置來(lái)模擬IP地址沖突。
圖6 ARP交互實(shí)驗(yàn)環(huán)境示意圖
下文以測(cè)試Linux系統(tǒng)下IP地址沖突時(shí)ARP交互情況實(shí)驗(yàn)為例,實(shí)驗(yàn)如下。
1.實(shí)驗(yàn)過(guò)程
(1)使用Linux B(192.168.198.130)長(zhǎng)ping Linux C(192.168.198.131),同時(shí)Linux C 長(zhǎng)ping Linux B來(lái)模擬B主機(jī)與C主機(jī)之間正常的網(wǎng)絡(luò)通訊。
圖7 B主機(jī)與C主機(jī)互相發(fā)送ping包模擬網(wǎng)絡(luò)通訊
(2)將Linux A(192.168.198.129)的IP地址修改為192.168.198.130,以此模擬Linux A主動(dòng)制造了與Linux B的IP地址沖突。
圖8 A主機(jī)主動(dòng)制造與B主機(jī)的IP地址沖突
(3)在局域網(wǎng)中抓包,使用wireshark分析IP地址沖突下各主機(jī)的的交互情況。
2.實(shí)驗(yàn)分析
(1) Linux A進(jìn)行地址修改后,A主機(jī)立馬以A主機(jī)MAC為源MAC,F(xiàn)F:FF:FF:FF:FF:FF為目的MAC發(fā)送免費(fèi)ARP廣播,進(jìn)行全網(wǎng)通告A主機(jī)的IP地址為192.168.198.130。
(2)B主機(jī)收到A主機(jī)的免費(fèi)ARP后,以B主機(jī)MAC為源MAC,F(xiàn)F:FF:FF:FF:FF:FF為目的MAC響應(yīng),進(jìn)行通告,告知全網(wǎng)B主機(jī)的IP才是192.168.198.130。
(3)A主機(jī)連續(xù)發(fā)送4個(gè)免費(fèi)ARP通告,但B主機(jī)只會(huì)在第一次進(jìn)行響應(yīng)。
(4)由于A主機(jī)多次發(fā)送免費(fèi)ARP,此時(shí)C主機(jī)ARP高速緩存表中記錄的192.168.198.130為A主機(jī),C主機(jī)與192.168.198.130通訊未中斷。
圖9 主機(jī)IP地址沖突后ARP交互情況
(5)B主機(jī)(此時(shí)IP地址被沖突)與C主機(jī)(192.168.198.131)通訊有中斷現(xiàn)象,通過(guò)數(shù)據(jù)包可以發(fā)現(xiàn)B主機(jī)(IP:192.168.198.130;MAC:00:0c:29:ff:12:87)訪問(wèn)C主機(jī)(IP:192.168.198.131;MAC:00:0c:29:38:83:18)時(shí),C主機(jī)回包給A主機(jī)(IP:192.168.198.130;MAC:00:0c:29:34:eb:e2)。
圖10 B主機(jī)與C主機(jī)網(wǎng)絡(luò)通訊中斷
(6)B主機(jī)與C主機(jī)通訊超時(shí)后會(huì)重新請(qǐng)求一次ARP,請(qǐng)求192.168.198.131的MAC地址。當(dāng)C主機(jī)收到此ARP后會(huì)更新ARP高速緩存表中192.168.198.130對(duì)應(yīng)的MAC地址為B主機(jī)MAC地址,隨后B主機(jī)恢復(fù)與C主機(jī)的通訊。
圖11 B主機(jī)與C恢復(fù)通訊
3.實(shí)驗(yàn)結(jié)論
主動(dòng)制造IP地址沖突的Linux主機(jī)會(huì)發(fā)送多次免費(fèi)ARP,被沖突的Linux主機(jī)會(huì)返回1個(gè)免費(fèi)ARP,通訊過(guò)程中存在通過(guò)ARP請(qǐng)求互相搶IP的現(xiàn)象。
隨后,以相同的方式模擬了SUSE系統(tǒng)IP地址被沖突、Windows系統(tǒng)IP地址被沖突、Windows系統(tǒng)主動(dòng)制造IP地址沖突三組實(shí)驗(yàn),得出實(shí)驗(yàn)結(jié)論如下。
表1 不同系統(tǒng)在IP地址沖突時(shí)的ARP交互情況
IP地址沖突反應(yīng)機(jī)制總結(jié)
經(jīng)過(guò)上述測(cè)試以及其它技術(shù)了解,我們總結(jié)了宿主機(jī)(凡是配置了ip地址并存活于網(wǎng)絡(luò)中的產(chǎn)品)對(duì)ip地址沖突的反應(yīng)機(jī)制,下表列出部分涉及到的產(chǎn)品。
表2 不同產(chǎn)品在IP地址沖突時(shí)日志記錄及ARP交互情況
注:表中“是”與“否”只針對(duì)對(duì)測(cè)試過(guò)的版本與產(chǎn)品型號(hào)有效,不確保對(duì)該產(chǎn)品不同系列或不同版本有效
IP地址沖突檢測(cè)方案
1.方案一:主機(jī)日志與網(wǎng)絡(luò)syslog監(jiān)控
針對(duì)可進(jìn)行ip地址沖突日志記錄的宿主機(jī),可對(duì)其產(chǎn)生的對(duì)應(yīng)日志進(jìn)行監(jiān)控分析并產(chǎn)生告警;針對(duì)可發(fā)出ip地址沖突syslog的網(wǎng)絡(luò)設(shè)備,可對(duì)syslog進(jìn)行解析監(jiān)控與告警。
圖12 SUSE系統(tǒng)在IP地址沖突時(shí)的日志樣例
2.方案二:報(bào)文MAC檢測(cè)
通過(guò)流量采集設(shè)備采集網(wǎng)絡(luò)中所有流量,并將ip及對(duì)應(yīng)MAC地址解析出來(lái)后,發(fā)送至大數(shù)據(jù)分析平臺(tái),將其中網(wǎng)絡(luò)設(shè)備的MAC地址進(jìn)行過(guò)濾后,如果發(fā)現(xiàn)1個(gè)ip地址對(duì)應(yīng)多個(gè)不同MAC地址,則判定可能存在ip地址沖突。
圖13 TCP/IP網(wǎng)絡(luò)模型幀封裝示意圖
在TCP/IP網(wǎng)絡(luò)模型中,不同的分層封裝了不同的信息。數(shù)據(jù)鏈路層主要封裝了源MAC及目的MAC地址等信息,網(wǎng)絡(luò)層主要封裝了源IP與目的IP等信息。因此,通過(guò)對(duì)網(wǎng)絡(luò)中報(bào)文進(jìn)行解包,可以獲取到網(wǎng)絡(luò)中正在進(jìn)行通信的所有IP與MAC映射關(guān)系,通過(guò)計(jì)算可以分析出是否存在IP地址沖突(即不同MAC地址映射為相同IP地址)。但是由于企業(yè)級(jí)網(wǎng)絡(luò)環(huán)境復(fù)雜且報(bào)文數(shù)據(jù)量較大,該方法的實(shí)現(xiàn)成本較高。
3.方案三:ARP報(bào)文檢測(cè)
通過(guò)網(wǎng)絡(luò)流量采集,對(duì)所有ARP流量進(jìn)行實(shí)時(shí)推送至大數(shù)據(jù)分析平臺(tái),發(fā)現(xiàn)同段時(shí)間內(nèi),存在宣告同個(gè)IP對(duì)應(yīng)多個(gè)不同MAC地址,則判定為IP地址沖突。具體實(shí)現(xiàn)方法:網(wǎng)絡(luò)采集設(shè)備精準(zhǔn)過(guò)濾ARP流量并推送出來(lái),推送的報(bào)文格式為:發(fā)送者M(jìn)AC(宿主機(jī))、目標(biāo)MAC全為F(廣播)、通告IP、時(shí)間戳、交換機(jī)名稱。大數(shù)據(jù)平臺(tái)接受到此數(shù)據(jù)后,判定同秒(或更短)之內(nèi)是否存在同個(gè)通告IP對(duì)應(yīng)多個(gè)不同MAC,因在數(shù)據(jù)采集與推送時(shí)帶有交換機(jī)名稱或id的標(biāo)識(shí),因此,能迅速定位沖突IP所在的網(wǎng)絡(luò)位置,便于進(jìn)行相關(guān)處置操作,隔離故障源,恢復(fù)業(yè)務(wù)。
4.三種方案優(yōu)缺點(diǎn)比較
表3 三種不同方案優(yōu)缺點(diǎn)比較