代理ARP(Proxy-arp)的原理就是当出现跨网段的ARP请求时,路由器将自己的MAC返回给发送ARP广播请求发送者,实现MAC地址代理(善意的欺骗),最终使得主机能够通信。
图中R1和R3处于不同的局域网,R1和R3在相互通信时,R1先发送了一个ARP广播数据包,请求R3的mac地址,但是由于R1是12.1.1.0网段,而R3是13.1.1.0网段,R1和R3之间是跨网段访问的,也就是说R1的ARP请求会被R2拦截到,然后R2会封装自己的mac地址为目的地址发送一个ARP回应数据报给R1(善意的欺骗),然后R2就会代替R1去访问R3。
整个过程R1以为自己访问的是R3,实际上真正去访问R3的是R2,R1却并不知道这个代理过程,这就是所谓的ARP代理,通常用于跨网段访问。
注意:如果R2关闭了arp的代理功能,那么R1再访问R3的时候,R2并不会把自己的mac地址给R1,那么R1和R3之间就无法通信。默认情况下,思科的设备是开启了arp代理功能,也就是说,R2会作为中间代理实现R1和R3之间跨网段通信。
代理ARP的使用场景为:1. 没有路由功能的主机,2. 有路由功能,目的地指向本地出口
注意:在点对点链路中不使用ARP,实际上在点对点网络中也不使用MAC地址,因为在此类网络中分别已经获取了对端的IP地址。
代理ARP是ARP协议的一个变种。 对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。代理ARP就是将一个主机作为对另一个主机ARP进行应答。它能使得在不影响路由表的情况下添加一个新的Router,使得子网对该主机来说变得更透明化。同时也会带来巨大的风险,除了ARP欺骗,和某个网段内的ARP增加,最重要的就是无法对网络拓扑进行网络概括。代理ARP的使用一般是使用在没有配置默认网关和路由策略的网络上的