您好,登錄后才能下訂單哦!
在看一些技術文檔的時候,突然想到了代理arp這個東西,之前一直也沒注意,所以就趁著今天去學習了下。
首先就是拓撲圖:這里我用模擬器畫圖~~用真機(CISCO 1921)做的實驗
網上大多數人以及網站對于代理ARP的解釋:當PC沒有設置默認網關時,如果PC要和不同網段的客戶端進行通信,那么需要知道目的的mac地址,如何獲取,當然是通過ARP了,但是如果目的地址和本地地址不屬于同一個網段呢?問題就出現在這里了,很多人認為PC此時會發送ARP廣播,然后路由器的接口如果開啟了代理arp(使用 no ip arp proxy開啟,全局使用Ip arp proxy disable關閉)功能 就會以自己的接口mac回應,但是事實并非如此。實際的情況是,PC不會發送任何ARP的報文。見下圖
大家可以看到,PCA 沒有發送任何ARP和ICMP報文,因為如果目的網段和自己的網段不同,并且PC沒有設置默認網關,PC會直接丟棄,這個和是否開啟ARP代理沒有半毛錢的關系。。。
ARP代理此時是開啟的
這里請教下大神,這個Local Proxy ARP是干嘛的,始終不能顯示為enable。。求看到的大神指導
可以看到,就算PCA使用ping命令,路由器沒有獲得任何有關PCA和PCB的arp表項。
說到這里,大家應該清楚了,ARP代理并不是網上說的那樣充當什么默認網關啥的,那么到底這玩意怎么用呢?
接下來我們使用另外一個拓撲,如圖:
是的 就是這么奇怪的拓撲,路由器左邊PC掩碼和路由器的G0/0不同,右邊則是一致的。
先關閉ARP代理
全局使用ip arp proxy disable關閉即可。
然后抓包。記住此時A B的網關都沒有設置
先查看PCA的arp表項
和之前說的一樣,PCA不會產生任何報文,所以當然也不會有任何其他的ARP表項了。
此時的路由器任然也是只有自己兩個接口的ARP表項。
那么接下來我們使用PCA ping PCB,會出現什么現象呢?
為什么這里PCA也沒有網關,但是卻發送了ARP請求呢?
因為!!!
PCA的網絡號為172.16.0.0.(ip地址和掩碼進行與運算),PCB的地址為172.16.2.2。PCA會將自己的掩碼和PC地址進行與運算,發現自己和目的地址屬于同一個網段(即使PCB的網段是172.16.2.0/24)。所以才會產生ARP請求,但是由于路由器關閉了ARP代理,所以不會對PCA的ARP請求進行響應。所以上圖只有arp request但是沒有arp reply。所以此時PCA的ARP表項以及路由器的ARP表項都不會產生變化。當然,PCA多了幾個奇怪的ARP表項我也沒有去查是干嘛的。
如果此時讓路由器獲取到PCB的mac地址,在關閉ARP代理的前提下,路由器是否會將PCB的mac告知給PCA呢。
很簡單,我們使用PCB ping路由器的G0/1接口地址,雖然PCB沒有默認網關,但是由于兩者屬于同一個網段,所以能夠ping通,而且路由器能夠獲取PCB的mac地址。
再次使用PCA ping PCB,然后觀察PCA的ARP表項。還是沒有任何變化,因為A的ARP請求到達路由器之后, 路由器會 從OSI模型的第一層依次解封裝,解封裝到第二層的時候,由于目的mac為廣播,沒有開啟ARP Proxy,路由器會直接丟棄廣播 包,所以即使路由器有B的MAC地址,也不會給A ARP Reply。
即使此時所有設備都有了其他的MAC地址表項(使用靜態綁定), 也是無法 聯通的, 因為單播報文拆包時 ,到第二層,如果目的MAC不是路由器自身的接口地址,路由器也是會直接丟棄。
接下來就是開啟ARP代理。使用no ip arp proxy(看起來很奇怪)。
開啟ARP代理之后,PCA能夠獲取到PCB的MAC地址,并且是路由器G0/0的mac地址。
使用ping命令,Icmp echo request報文能夠成功到達PCB。這點是由PCB上面使用Wireshark抓包得到的結論。我就不截圖了 太麻煩了。
但是PCB受到該報文之后 ,創建ICMP echo reply報文的時候,由于目的地址和自己不屬于同一個網段,并且 又不是廣播地址,而且自身又沒有設置 默認網關,所以直接 丟棄 ping的回包,所以對于PCA來說是無法獲取reply的,如圖:
說到這里 我就有一個疑問了,在這誠心請教大牛。
我在PCB靜態綁定ARP PCA'S ip-》G0/1's mac。按照我的想法,當創建reply報文的時候,從上到下依次封裝,封裝到數據鏈路層的時候,目的mac地址為G0/1的mac地址。應該會回復,為什么PCB直接丟棄了而不是進行回復!!!
如果想要PCA能夠ping通PCB,在PCB上指定默認網關即可。
指定默認網關后,A<->B可以雙向正常通信,原理見上面的那段
到現在應該基本解釋清楚了代理ARP的功能和作用,其實非常雞肋。
對了還有一點。指定默認默認網關和使用ARP代理PC的arp表項完全不同。
使用ARP代理:會存在不同網段的ip和mac的對應 如圖
但是使用默認網關的時候只會存在一個對應關系。那就是網關以及網關mac的對應關系 如圖
最后就是,寫這個的時候我百度了一些東西,有一部分和狼哥的差不多,只不過有些細節方面我測試了下。@狼哥 他的博客的地址是bbs.51cto.com/thread-651652-1.html.
希望高手能夠消除我之前的疑問,謝謝了~~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。