ARP的那些事

本文內容包括arp請求、arp代理、免費arp、arp攻擊的原理及詳細流程.

一,arp請求。

 IP數據包,包含源IP地址、源MAC地址,目的IP地址、目的MAC地址。主機發送IP數據包時,首先查看目的IP的網絡地址,如果目的網絡地址就是主機所在的網絡(第一種情況),那麼該數據包不會默認發給網關,除非目的IP就是網關的IP。如果目的網絡地址不在主機所在的網絡(第二種情況),那麼該數據包會默認發向網關。其次是查ARP表,填充IP數據包;上述任一情況,源IP/MAC,目的IP都是已經知道的,缺的就是目的MAC地址。如果查ARP表沒有發現目的IP對應的MAC地址,那麼主機則會向主機所在網絡發送ARP廣播,請求目的IP的MAC地址。最後,如果有主機回覆該ARP請求,那麼主機會從ARP回覆包中提取目的IP的目的MAC地址,填充完整將要發送的IP數據包,將其發向目的MAC地址。如果主機網絡內沒有主機回覆該ARP請求,那麼該IP包將丟棄。

一般主機的ARP請求流程圖:

 

ARP請求數據包結構:

 

二,免費ARP

免費ARP是ARP請求的一種邊界情況,試考慮如果H主機的ARP請求包中,目的IP是本機的IP,會發生什麼情況? 一般主機所在網絡的其它主機都不會理會該ARP廣播;除非該網絡上,還有和H主機一樣的IP地址的主機存在。如果H主機竟然收到了ARP回覆,那麼可以判定該網絡上有IP地址衝突。免費ARP的作用之一,就是檢測IP地址衝突

免費ARP的作用之二是通告IP對應的MAC地址。如果主機H的IP沒變,但是MAC地址改變,那麼需要通告網絡中其它的主機更新H主機IP地址的MAC地址(比如在HA雙機熱備份的切換場景中會用到)。更新的細節:如果一臺C主機收到一個ARP廣播包,先看下包中源IP地址,如果C主機ARP表中沒有該 源IP-MAC 對,那麼添加該  源IP-MAC 對  進ARP表。如果C主機ARP表中已經該源IP-MAC 對,並且MAC地址與表中的不一樣,那麼更新該MAC.   後續將會看到,這種ARP協議的無腦更新方式,爲ARP攻擊(中間人攻擊)打開了後門。

三,ARP代理

ARP代理能夠在不影響其他router的路由表的情況下在網絡上添加一個新的router,這樣使得子網的變化對主機是透明的。注意,在下圖的R1鏈接的左右兩個子網(172.16.1.0和172.16.2.0),對於PC5和PC6來說,都是處於同一個網絡172.16.0.0,只不過是R1將其物理分隔開了。

R1沒有開啓ARP代理前,PC5 ping 172.16.2.254 是ping不通的,即使PC5配置了172.16.1.254 的默認網關也是如此。爲什麼? 對於R1而言,R1收到目的地址是172.16.2.254的ARP廣播包後,查看172.16.2.254並不是自己的ip地址,因此對該ARP請求不做應答對於PC5而言, 在(一,ARP請求)流程圖裏面,PC5判斷172.16.2.254本來就和PC5處在同一網段172.16.0.0中,因此不會走網關這條通道,而是發ARP請求172.16.2.254的MAC地址,172.16.0.0網段內沒有172.16.2.254主機,也就沒有ARP應答,繼而ping程序回覆“主機不可達”

在R1的E0/0/1接口配置 arp-proxy enable 後,R1左邊的網絡172.16.2.0會被代理。因此凡是PC5發送的172.16.2.0網段的ARP請求,R1都會應答,並且將其E0/0/1的接口MAC地址作爲PC5的ARP請求的應答結果。因此PC5的目的是172.16.2.0網段的數據包,都會發往R1的E0/0/1接口。由R1轉發給與它直連的172.16.2.0網絡。

我們再次在PC5上ping下172.16.2.254,可以看到此時R1不再保持沉默,而是將E0/0/1的MAC地址作爲結果應答給PC5.

下圖是(PC5)典型的被代理後的ARP表,172.16.2.0網段的ip,均指向54-89-989-59-58-9C的mac

由上面的ARP表可以看出,ARP代理實際上是ARP欺騙的一種情況。R1通過應答PC5的ARP請求,讓PC5誤以爲,爲發送的172.16.2.0網段的數據包找到了歸宿。實際上172.16.2.0網段的包,對應的實際MAC地址,只有R1知道。如果R1接受到172.16.2.0網段的包後,沒有學到該包對應的MAC地址,那麼該包同樣被丟棄,如果在PC5上ping 172.16.2.99,將會返回“請求超時”的錯誤。

 

附加:arp競爭

如果在arp代理的拓撲中,在PC5側在添加一個PC12,並且配置的 ip 和PC11的 ip 相同;然後在PC5中 ping 衝突的 ip ,會發生什麼情況? 如下拓撲圖:

PC5目的ip的172.16.2.2數據包,到底是發向PC12還是PC11,由最後一個應答的arp決定。

通過抓包,可以看到PC12和PC11都對PC5的arp請求做了應答。通過PC5的arp緩存表,發現172.16.2.2數據包對應的是以9C結尾的MAC地址。

 

四,ARP攻擊

 待續...


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章