代理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
实例配置:
如图,交换机连接两台PC(A和B),最初的时候他们都在一个vlan1内,分别配置IP地址 172.16.1.2/16和172.16.2.2/16 ,均未配置网关,此时可以Ping同对方。
将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了。