代理ARP是ARP協議的一個變種。 對於沒有配置缺省網關的計算機要和其他網絡中的計算機實現通信,網關收到源計算機的 ARP 請求會使用自己的 MAC 地址與目標計算機的 IP地址對源計算機進行應答。代理ARP就是將一個主機作為對另一個主機ARP進行應答。它能使得在不影響路由表的情況下添加一個新的Router,使得子網對該主機來說變得更透明化。同時也會帶來巨大的風險,除了ARP欺騙,和某個網段內的ARP增加,最重要的就是無法對網絡拓撲進行網絡概括。代理ARP的使用一般是使用在沒有配置默認網關和路由策略的網絡上的。
proxy ARP
什么是proxy ARP
proxy ARP就是通過使用一個主機(通常為router),來作為指定的設備對另一設備的ARP請求作出應答。
proxy ARP是如何工作的
代理ARP的工作過程如下:
PC1和PC2雖然屬於不同的廣播域,但它們處於同一網段中,因此PC1會向PC2發出ARP請求廣播包,請求獲得PC2的MAC地址。由於路由器不會轉發廣播包,因此ARP請求只能到達路由器,不能到達PC2。
當在路由器上啟用ARP代理后,路由器會查看ARP請求,發現IP地址172.16.20.100屬於它連接的另一個網絡,因此路由器用自己的接口MAC地址代替PC2的MAC地址,向PC1發送了一個ARP應答。
PC1收到ARP應答后,會認為PC2的MAC地址就是00-00-0c-94-36-ab,不會感知到ARP代理的存在。
在PC1的ARP表中可以能看到如下ARP條目:
C:\>arp -a
Interface: 172.16.10.100 --- 0x2
Internet Address Physical Address Type
172.16.20.100 00-00-0c-94-36-ab dynamic
在接下來的數據通信中,PC1先將數據發送給路由器,由路由器轉發給PC2。
proxy ARP有哪些優點
最主要的一個優點就是能夠在不影響其他router的路由表的情況下在網絡上添加一個新的router,這樣使得子網的變化對主機是透明的
proxy ARP應該使用在主機沒有配置默認網關或沒有任何路由策略的網絡上
proxy ARP帶來的哪些負面影響
⒈增加了某一網段上ARP流量
⒉主機需要更大的ARP table來處理IP地址到MAC地址的映射
⒊安全問題,比如ARP欺騙(spoofing)
⒋不會為不使用ARP來解析地址的網絡工作
⒌不能夠概括和推廣網絡拓撲
ARP與代理ARP
ARP報文是主機發送出來的,在該主機只知道對方的IP地址且想知道對方的MAC地址時,它以廣播的方式將ARP請求發送到自己所在網段的各個節點。當有主機響應時,回發的報文是單播發送。
代理ARP是當主機知道一個IP地址且它想知道該IP地址對應的MAC地址時,主機廣播發送ARP請求,但是如果有同一網段的部分主機在另一個物理網絡時(比如兩個192.168.1.0的網段,中間夾着一個192.168.2.0的網段),就需要中間設備(路由器)進行代理ARP。因為路由器默認是不轉發廣播報文的,所以當路由器收到ARP請求時,它將啟動代理ARP服務,將發送廣播ARP報文。[1]
注意:
代理ARP只響應那些在自己的路由表里能找到的網段,而不是象我以前想的那樣會用自己的mac響應主機所有的arp請求
本網段內的訪問僅僅是簡單的廣播尋址,不涉及代理ARP,當主機配置默認路由時,該ARP請求直接請求的就是網關的ARP,也不涉及代理ARP,所以所謂的代理ARP相當於網關是有道理的。在配置了網關的設備上是不會出現代理ARP的問題
端口下來啟動arp proxy
實例配置:
將A加入vlan1 ,vlanif配IP:172.16.1.1/24
將B加入vlan2 ,vlanif配IP:172.16.2.1/24
此時A ping B是ping不通的。
原因猜想:沒有配置網關也沒有配置代理ARP,所以ping不通
當我
配置上兩個端口的代理ARP,此時發現還是Ping不同。
此時
查看了A的ARP表,
發現表中記錄172.16.2.2的MAC地址是B的地址。
此時A發出去的包中封裝的MAC地址是B的,當vlanif收到該幀時,會丟棄該報文
將A的ARP表清空(arp –d),此時再pingB,發現可以Ping通了,
A中記錄的關於172.16.2.2的MAC地址已經是vlanif1 的MAC了。
