一直对代理ARP有了解误区,希望帖出来能帮助到和我一样对此协议了解模糊的朋友。
 
先来说说概念,这是在思科的网站上看到关于代理ARP的介绍
Proxy ARP is the technique in which one host, usually a router, answers ARP requests intended for another machine. By "faking" its identity, the router accepts responsibility for routing packets to the "real" destination. Proxy ARP can help machines on a subnet reach remote subnets without the need to configure routing or a default gateway. Proxy ARP is defined in RFC 1027
 
大致的意思是一台发往其他计算机的ARP请求,被路由器回应,通过伪造身份,路由器承担了将数据包发送到真实目的地的责任。代理ARP能够帮助在一个子网内的计算机到达远程子网而不需要配置路由或者默认网关。代理ARP的定义在RFC 1027 。(翻译的不是很准确,英文好的朋友可以直接看英文哈 -^)
 
废话不多说了,上实验,先上一下以前理解的代理ARP,并做的实验。
 
通过实验来理解代理ARP(一)_arp
 
实验环境如上图所示,PC没有设置默认网关,在Router1添加一条到192.168.1.0的静态路由,路由器Router0默认开启代理ARP ,在PCping 192.168.2.2 ,大家可以猜猜实验结果。
呵呵,在不同的模拟器上可是有不同的结果的哦!
 
首先在PT上做,可以看到代理ARP是开启的
 
通过实验来理解代理ARP(一)_职场_02
 
PC ping 192.168.2.2 ,同时在Router0上开启debug 信息,出现了请求超时的现象。
查看PCARP缓存,没有记录,再在Router0上查看debug信息,也没有
 
通过实验来理解代理ARP(一)_休闲_03
 
通过实验来理解代理ARP(一)_职场_04
 
到这里,我们可以得出一个结论,PC没有发送ARP请求,也就是说没有得到192.168.2.2MAC地址,请求超时的信息,我把它理解为是数据封装失败所致(但是在真实的PC下会出现这种结果吗?)。
 
下面我在PC上设置默认网关为192.168.1.1 ,结果肯定是能ping通的,但是在PCARP缓存中,不是192.168.2.2Router0fa0/0接口MAC地址的对应,而是Router0fa0/0接口IP 192.168.1.1和其MAC地址,原因我就不多说了,大家看帖图吧
 
通过实验来理解代理ARP(一)_arp_05
 
通过实验来理解代理ARP(一)_arp_06
 
现在在DY下做同样的实验,使用关闭了路由功能的路由器模拟PC,拓扑环境如下
 
通过实验来理解代理ARP(一)_休闲_07
 
先来看看没有默认网关的情况,初始环境如下
 
通过实验来理解代理ARP(一)_休闲_08
 
通过实验来理解代理ARP(一)_arp_09
 
R1上开启debug,现在在模拟PCping 192.168.2.2 ,实验结果如下
 
通过实验来理解代理ARP(一)_休闲_10
 
通过实验来理解代理ARP(一)_arp_11
 
通过实验来理解代理ARP(一)_休闲_12
 
从上图可以看出,R1回应了模拟PCARP请求,并以自己E1/0接口的MAC地址回应,从模拟PCARP表里面也可以看到这一点,由此我认为代理ARP生效了。
 
通过实验来理解代理ARP(一)_arp_13
 
现在我在模拟PC上添加默认网关,然后再ping 192.168.2.2 ,大家可以看看模拟PCARP表的变化,当然首先要清空模拟PC上的ARP缓存,结果如下
 
通过实验来理解代理ARP(一)_proxy_14
 
看到了吧,模拟PCARP表里面的IP地址变化情况,设置了网关后模拟PC请求的就不是192.168.2.2MAC地址,而是直接请求的192.168.1.1MAC地址了。