OSI七層模型
根據(jù)OSI七層網(wǎng)絡模型,任何設備要和另外一臺設備通信時,都必須要知道對方的mac地址。不然就沒有辦法在鏈路層封裝數(shù)據(jù),ARP就是用來自動獲取MAC地址的一種技術。基本的ARP工作原理比較簡單,我想大家之前肯定已經(jīng)有所了解,在這里我們就不在累述了,今天要介紹的是ARP的一個變種:Proxy ARP,即代理ARP。
我們先來看看代理ARP的定義和適用場景:
定義:一個設備,通常是一臺路由器,如果發(fā)現(xiàn)收到的ARP請求地址在不同的子網(wǎng),就會以自己的MAC地址來回復ARP請求,這個ARP回復報文就被稱作Proxy ARP。
適用場景:沒有配置網(wǎng)關的終端(PC)想要訪問不在同一個subnet的其它的設備時,就需要啟用路由器的代理ARP功能。
下面咋們以一個完整的例子來解釋代理ARP工作原理。
拓撲和說明
拓撲
- PC1和PC2在網(wǎng)段A中,它們的網(wǎng)絡地址分別是10.1.0.0/16,10.1.1.0/24.
- PC3和PC4在網(wǎng)段B中,它們的網(wǎng)絡地址是10.1.2.0/24
- 4臺PC都只配置了IP地址,沒有配置網(wǎng)關
- PC1想要訪問PC3
?驗證過程
步驟1:PC1的地址為10.1.1.1/16,則它會認為與之相連的subnet上所有的PC的網(wǎng)段都是10.1.0.0,即當PC1想和PC3通信時,它認為PC3的subnet也是10.1.0.0/16,所以它會向路由器發(fā)送ARP請求,以便獲得PC3的MAC地址。
PC1發(fā)送的ARP請求內(nèi)容如下:
ARP請求
步驟2:路由器收到PC1發(fā)送的ARP請求報文,卻不會直接轉(zhuǎn)發(fā)給PC3:因為路由器在默認情況下不會轉(zhuǎn)發(fā)廣播報文,更不會回復了,而ARP也是廣播報文的一種。
步驟3:如果路由器啟用Proxy ARP,此時才會回復ARP報文。
- 路由器把自己的接口E0的MAC地址回復給PC1,告訴PC1,自己就是PC3,這是一種偽裝技術(欺詐)。
- 路由器為什么可以進行偽裝呢?因為路由器知道PC3的地址是10.1.2.3,并且知道它的網(wǎng)段是10.1.2.0/24。既然能找到PC3,就可以做流量的中轉(zhuǎn)。
- 路由器發(fā)送的ARP答復報文就稱為proxy ARP,其主要表項如下:
ARP應答
步驟4:PC1收到ARP以后,就會更新自己的ARP表, 此時PC1并不知道自己被欺詐了,它認為是一個正常的ARP答復報文。
PC1的ARP表項:
ARP表項
步驟5:PC1有了這個ARP表項以后,以后所有發(fā)送給PC3的報文,目的MAC都會使用路由器E0接口的MAC地址來封裝, 然后由路由器將這個報文轉(zhuǎn)發(fā)給PC3,這樣它們就能夠正常通信了。
步驟6:如果PC1還想和PC4通信,也會觸發(fā)Proxy ARP,最后形成如下的ARP表項
ARP表項
可以看到,PC3和PC4對應的MAC地址都是路由器E0接口的MAC.
小經(jīng)驗:如果我們在工作中看到這種多個IP地址映射到同一個MAC地址的情況,基本上就可以斷定這個網(wǎng)絡中啟用了代理ARP。
代理ARP缺點
現(xiàn)在大家在工作中,基本上不會用到Proxy ARP了,因為它的適用場景太單一了。尤其是不需要配置網(wǎng)關這一條,咋們基本上遇不到,因為正常我們的PC獲取地址都是有網(wǎng)關的,和外界通信都是通過網(wǎng)關進行的。
除了場景單一以外,Proxy ARP還有如下的缺點:
- 它會增加網(wǎng)絡上的ARP報文流量,因為PC每訪問一個設備,都需要發(fā)送ARP請求;
- PC需要會維護一張很大的ARP表:需要保存所有要訪問設備的MAC;
- ARP地址欺詐:涉及到安全問題,在網(wǎng)絡中的任何一臺設備能夠宣稱自己是路由器的接口,回復PC的ARP請求。這樣就可以發(fā)起中間人攻擊,獲取用戶數(shù)據(jù)等。
中間人攻擊
配置代理ARP
在思科的路由器上,默認就是開啟代理ARP的,所以不需要配置。如果不想使用,可以在接口上disable代理ARP,配置的命令如下:
Router# configure terminal
Router(config)# interface ethernet 0
Router(config-if)# no ip proxy-arp
總結(jié)
各位看完這篇文檔大家應該對代理ARP的試用場景和工作原理有所了解了吧?雖然不常用,但是“代理ARP“這個名詞會經(jīng)常聽說,如果掌握了其工作原理,就可以裝12,忽悠一下小白了:)
最后還是歡迎各位關注我的頭條號,一起討論網(wǎng)絡知識,謝謝!