在一些场景中会出现下面的情况,两台主机在同一个子网,但是由于某种原因导致两台主机之间不能互访。此时可以通过代理的方式解决网络互通问题。
代理ARP有三种方式:路由式代理ARP、VLAN内代理ARP、VLAN间代理ARP。
下面我们分别介绍三种代理ARP的应用场景以及工作过程。
上图是路由式代理ARP的拓扑图。
路由式代理ARP的应用场景:
PC的IP地址在同一网段却连接到不同物理网络。当PC1需要与PC2通信时,由于目的IP地址与本机的IP地址为同一网段,因此PC1以广播形式发送ARP请求报文,请求PC2的MAC地址。但是,此时的两台主机处于不同的物理网络(不同广播域)中,PC2无法收到PC1的ARP 请求报文,当然也就无法应答。
路由式代理ARP的工作过程:
在S1启用代理ARP,收到这样的请求后,S1会查找路由表,如果存在PC2的路由表项,则使用自己的MAC地址作为该ARP请求的回应,PC1将以S1的MAC地址进行数据转发。此时,S1相当于PC2的代理。
上图是VLAN内代理ARP的拓扑图。
VLAN内代理ARP的应用场景:
PC1和PC2属于相同的VLAN,交换机S1互联PC1和PC2的接口开启了端口隔离,所以PC1不能访问与自己处于同一子网、同一VLAN中的PC2。
VLAN内代理ARP的工作过程:
在S1关联了该VLAN的VLANIF接口上启动VLAN内代理ARP功能。S1从该接口接收到PC1发送的目的地址是PC2的ARP请求报文后,S1并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在PC2的ARP 表项,则将自己的MAC地址发送给PC1,并将PC1发送给PC2的报文代为转发。实际上此时S1相当于PC2的代理。
上图是VLAN间代理ARP的拓扑图。
VLAN间代理ARP的应用场景:
Super-VLAN(VLAN10)包含Sub-VLAN(VLAN2 和VLAN3)。PC1和PC2的IP地址在同一个子网,但是两台PC在不同的VLAN。PC1在VLAN2,PC2在VLAN3。PC1以广播形式发送ARP请求报文,请求PC2的MAC地址。但是,此时的两台主机处于不同广播域,PC2无法收到PC1的ARP 请求报文,当然也就无法应答。
VLAN间代理ARP的工作过程:
在S1在VLANIF10接口上已经开启了VLAN间的ARP Proxy功能。
PC1发送ARP广播,请求PC2的MAC 地址。PC2并不在VLAN2的广播域内,无法接收到PC1的这个ARP请求。
S1在VLANIF10接口收到PC1的ARP请求后,开始在路由表中查找,发现ARP请求中的PC2的IP地址(1.1.1.20)为直连接口路由,则S1向所有其他Sub-VLAN接口发送一个ARP广播,请求PC2的MAC地址。
PC2收到S1发送的ARP广播后,对此请求进行ARP应答。
S1收到PC2的应答后,就把自己的MAC地址当作PC2的MAC地址回应给PC1。
S1和PC1的ARP表项中都存在PC2的对应表项。
PC1之后要发给PC2的报文都先发送给S1,由S1做三层转发。