四种Proxy ARP原理及区别
1、Proxy ARP产生原因
ARP只适用于处于同一物理网络的相同网段主机之间的通信。网络中的交换机收到主机发送的ARP请求报文后,会检查报文的目的IP地址是否是本机的IP,以确定该报文请求的是不是本机的MAC地址。如果是,则回复ARP响应报文;如果不是;则丢弃该ARP请求报文。
对于不在同一物理网络但属于相同网段的主机,或者在同一物理网络属于相同网段但不能二层互通的主机,可以在其之间的交换机上部署ARP代理功能,以实现这些主机之间的通信。
部署ARP代理功能后,交换机收到ARP请求报文且发现其目的地址不是自己,则使用交换机自己的MAC地址以及目的主机的IP地址向源主机回复ARP响应报文,即交换机代替目的主机回复ARP响应报文。
2、路由式Proxy ARP
如果主机属于同一网段却不在同一物理网络上并且连接主机的网关设备具有不同的网关地址,此时主机间要互通,则需要在交换机上连接主机的接口上启用路由式Proxy ARP功能。
图1 路由式Proxy ARP典型组网图
HostA的IP地址为10.10.10.1/16,HostB的IP地址为10.10.11.1/16,HostA与HostB处于同一网段。Switch通过VLANIF10和VLNAIF20连接两个网络,VLANIF10和VLANIF20的IP地址不在通一个网段。当HostA需要与HostB通信时,由于目的IP地址与本机的IP地址为同一个网段,因此HostA以广播形式发送ARP请求报文,请求HostB的MAC地址。但是,由于两台主机处于不同的物理网络(不同广播域)中,HostB无法收到HostA的ARP请求报文,因此也就无法应答。
通过在Switch的VLANIF10和VLANIF20上使能路由式Proxy ARP功能,可以解决上述问题。
1、HostA发送ARP请求报文,请求目的主机HostB的MAC地址。
2、Swithc收到此ARP请求报文后,检查报文的目的IP地址,发现并不是自己本机的IP,因此确定该报文请求的不是自己的MAC地址。然后,Swithc检查是否存在到达HostB的路由:
如果没有到HostB的路由,则丢弃HostA发送的ARP请求报文。
如果有到HostB的路由,则判断接收报文的接口上是否使能了路由式Proxy ARP功能:
如果使能了路由式Proxy ARP功能,则将VLANIF10的MAC地址通过ARP响应报文发送给HostA。 HostA收到Swithc发送的ARP响应报文后,认为此报文是HostB发送的ARP响应报文。HostA从报文中学习Swithc设备VLANIF10的MAC地址,并使用此MAC地址向HostB发送数据报文。
如果没有使能路由式Proxy ARP功能,则丢弃HostA发送的ARP请求报文。
3、ARP任意代理
针对服务器划分VM的情况,为了使能VM能够在多个服务器或多个交换机间灵活部署与迁移,常用的方法是将多个交换机间的二层连通。但是,这种方式会导致网络中二层域变大,并存在广播风暴的风险。
为了解决这一问题,常用的方式是将VM的网关部署在接入交换机上,同时开启ARP任意代理,将网关设备端口的MAC地址发送给请求的VM,将VM到其他VM的通讯都转变为路由转发。
图2 ARP任意代理典型组网图
VM1的IP地址为10.10.10.1/24,VM2的IP地址为10.10.10.4/24,VM1与VM2处于同一网段。Swithc1和Swithc2通过IP地址、MAC地址相同的VLANIF10连接两个网络。
当VM1需要与VM2通信时,由于目的IP地址与本机的IP地址为同一网段,因此VM1以广播形式发送ARP请求报文,请求VM2的MAC地址。但是,由于两台主机处于不同的物理网络(不同广播域)中,VM无法收到VM1的ARP请求报文,因此也无法应答。
通过Swithc1、Swithc2的VLANIF10上使能ARP任意代理功能,可以解决上述问题。
VM1发送ARP请求报文,请求目的主机VM2的MAC地址。Swithc1收到此ARP请求报文后,检查报文的目的IP地址,发现并不是自己本机的IP,因此确定该报文请求的不是自己的MAC地址。然后,Swithc检查接收报文的接口上是否使能了ARP任意代理功能:
如果使能了ARP任意代理功能,则将VLANIF10的MAC地址通过ARP响应报文发送给VM1。VM1收到Swithc1发送的ARP响应报文后,认为此报文是VM2发送的ARP响应报文。VM1从报文中学习Swithc1设备VLANIF10的AMC地址,并使用此MAC地址向VM2发送数据报文。
如果没有使能ARP任意代理功能,则丢弃VM发送的ARP请求报文。
4、VLAN内Proxy ARP
如果主机属于相同的VALN,但VLAN内配置了二层端口隔离,此时主机间要互通,则需要在关联VLAN的接口上启用VLAN内Proxy ARP功能。
图3 VLAN内Proxy ARP典型组网图
HostA和HostB是Switch下的两个主机。连接HostA和HostB的两个接口在Switch属于同一个VLAN 4。由于在Switch上配置了VLAN内的二层端口隔离,因此HostA和HostB不能直接接在二层互通。
通过在Switch的VLANIF4上使能VLAN内Proxy ARP功能,可以解决上述问题。
HostA发送ARP请求报文,请求目的主机HostB的MAC地址。Switch收到此ARP请求报文后,检查报文的目的IP地址,发现并不是自己本机的IP,因此确定该报文请求的不是自己的MAC地址。然后,Switch检查是否存在到达HostB的ARP表:
1、如果有HostB对应的ARP表项,且该表项中的VLAN信息与接收报文的端口的VLAN信息相同,则判断关联VLAN的接口是否使能了VLAN内Proxy ARP功能:
如果使能了VLAN内Proxy ARP功能,则将VLANIF4的MAC地址发送给HostA。HostA收到Switch发送的ARP响应报文后,认为此报文是HostB发送的ARP响应报文。HostA从报文中学习Switch设备VLANIF4的MAC地址,并使用此MAC地址向HostB发送数据报文。
如果没有使能VLAN内Proxy ARP功能,则丢弃该ARP请求报文。
2、如果没有HostB对应的ARP表项,则丢弃HostA发送的ARP请求报文,同时判断关联VLAN的接口是否使能了VLAN内Proxy ARP功能:
如果使能了VLAN内Proxy ARP功能,则在VLAN4内广播发送ARP请求报文,该请求报文的目的IP地址为HostB的IP地址。收到HostB发送的ARP响应报文后,生成响应的ARP表项。
如果没有使能VLAN内Proxy ARP功能,则不进行任何操作。
5、VLAN间Proxy ARP
如果主机处于同一物理网络相同网段但属于不同的VLAN,主机间要进行三层互通,则需要在关联这些VLAN的接口上使能VLAN间Proxy ARP功能。
图4 VLAN间Proxy ARP典型组网图
HostA和HostB是Switch下的两个用户,HostA和HostB处于相同网段,但HostA属于VLAN3,HostB属于VLAN2,。由于HostA和HostB属于不同的Sub-VLAN,HostA和HostB不能直接实现二层互通。
通过在Switch的VLANIF4上使能VLAN间Proxy ARP功能,可以解决上述问题。
HostA发送ARP请求报文,请求目的主机HostB的MAC地址。Switch收到此ARP请求报文后,检查报文的目的IP地址,发现并不是自己本机的IP,因此确定该报文请求的不是自己的MAC地址。然后,Switch检查是否存在到达HostB的ARP表:
1、如果有HostB对应的ARP表项,且该表项中的VLAN信息与接收报文的端口的VLAN信息不同,则判断关联VLAN的接口是否使能了VLAN间Proxy ARP功能:
如果使能了VLAN间Proxy ARP功能,则将VLANIF4的MAC地址发送给HostA。HostA收到Switch发送的ARP响应报文后,认为此报文是HostB发送的ARP响应报文。HostA从报文中学习Switch设备VLANIF4的MAC地址,并使用此MAC地址向HostB发送数据报文。
如果没有使能VLAN间Proxy ARP功能,则丢弃该ARP请求报文。
2、如果没有HostB对应的ARP表项,则丢弃HostA发送的ARP请求报文,同时判断关联VLAN的接口是否使能了VLAN间Proxy ARP功能:
如果使能了VLAN间Proxy ARP功能,则在VLAN2内广播发送ARP请求报文,该请求报文的目的IP地址为HostB的IP地址。收到HostB发送的ARP响应报文后,生成响应的ARP表项。
如果没有使能VLAN间Proxy ARP功能,则不执行任何操作。
发表评论