ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

上一章介绍了ARP的技术原理,但是ARP报文只能在广播域中传播,如果同一网段的两台主机在不同的广播域是否可以通信呢?

 

答案是可以的,但是需要借助ARP代理

 

正文

 

 

我们先来看个例子介绍下ARP代理的工作原理

 

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

如图所示:

 

主机A需要与主机B通信时,目的IP地址与本机的IP地址处于同一网段,但是处于不同的广播域,所以主机A将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答。

 

在路由器上启用代理ARP功能,就可以解决这个问题。

 

启用代理ARP后,路由器收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP request。

 

主机A收到ARP reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。

 

1

什么是ARP代理

 

proxy ARP就是通过使用一个主机(通常为router),来作为指定的设备对另一设备的ARP请求作出应答。

 

本例中就是使用R1来对主机A的请求作出应答。

 

2

ARP代理解决了什么问题?

 

ARP代理可以解决同一网段的主机在不同的广播域不能通信的问题。

 

这里需要注意下必须在同一网段,如果不是同一网段,主机A根本就不会发送ARP请求报文,不同网段之间的主机需要借助网关实现通信,ARP代理只能解决同一网段的但是跨广播域的两台主机通信。

 

 

3

实战

 

如上图所示:

 

主机A的配置:

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

主机B的配置:

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

路由器R1的接口配置:

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

可以看到:

路由器R1没有配置ARP代理,由于主机A和主机B属于不同广播域,因此ping测试失败。

 

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

通过抓包可以看到主机A发送了ARP请求,但是没有应答。

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

下面我们在路由接口下配置ARP代理。

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

在主机A上ping 主机B,查看结果,可以ping通。

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

通过抓包:

可以看到主机A发送ARP广播报文,并收到了路由器ARP回应报文。

 

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

下面我们看下主机A发送的ARP请求报文:

 

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

下面看下主机A收到的ARP回应报文:可以看到回应报文的源MAC为54:89:98:33:33:00,为路由器g0/0/0的mac地址;

 

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

ARP代理技术详解|如何实现同一网段但不在同一广播域的的两台主机通信?

 

总结

 

 

今天主要介绍了ARP代理ARP代理可以解决同一网段的主机在不同的广播域不能通信的问题。