ARP作用
ARP(Address Resolution Protocol)是将IP 地址解析为以太网MAC 地址(或称物理地址)的协议。在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP 地址)。但是仅仅有IP 地址是不够的,因为IP 数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP 地址到物理地址的映射。APR 就是实现这个功能的协议。
ARP报文结构
硬件类型:表示硬件地址的类型。它的值为 1 表示以太网地址;
- 协议类型:表示要映射的协议地址类型。它的值为 0x0800 即表示IP 地址;
- 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP 地址的ARP 请求或应答来说,它们的值分别为6 和4;
- 操作类型(OP):1 表示ARP 请求,2 表示ARP 应答;
- 发送端 MAC 地址:发送方设备的硬件地址;
- 发送端 IP 地址:发送方设备的IP 地址;
- 目标 MAC 地址:接收方设备的硬件地址。
- 目标 IP 地址:接收方设备的IP 地址。
(4) 主机A 收到ARP 响应报文后,将主机B 的MAC 地址加入到自己的ARP 表中以用于后续报文的转发,同时将IP 数据包进行封装后发送出去。
当主机 A 和主机B 不在同一网段时,主机A 就会先向网关发出ARP 请求,ARP 请求报文中的目标IP 地址为网关的IP 地址。当主机A 从收到的响应报文中获得网关的MAC 地址后,将报文封装并发给网关。如果网关没有主机B 的ARP表项,网关会广播ARP 请求,目标IP 地址为主机B 的IP 地址,当网关从收到的响应报文中获得主机B 的MAC 地址后,就可以将报文发给主机B;如果网关已经有主机B 的ARP 表项,网关直接把报文发给主机B。
ARP表
设备通过 ARP 解析到目的MAC 地址后,将会在自己的ARP 表中增加IP 地址到MAC 地址的映射表项,以用于后续到同一目的地报文的转发。ARP 表项分为动态ARP 表项和静态ARP 表项。
动态 ARP 表项
动态 ARP 表项由ARP 协议通过ARP 报文自动生成和维护,可以被老化,可以被新的ARP 报文更
新,可以被静态ARP 表项覆盖。当到达老化时间、接口down 时会删除相应的动态ARP 表项。
静态ARP表项
静态 ARP 表项通过手工配置和维护,不会被老化,不会被动态ARP 表项覆盖。
配置静态 ARP 表项可以增加通信的安全性。静态ARP 表项可限制和指定IP 地址的设备通信时只使用指定的MAC 地址,此时攻击报文无法修改此表项的IP 地址和MAC 地址的映射关系,从而保护了本设备和指定设备间的正常通信。
静态 ARP 表项分为短静态ARP 表项和长静态ARP 表项。
- 在配置长静态 ARP 表项时,除了配置IP 地址和MAC 地址项外,还必须配置该ARP 表项所在VLAN 和出接口。长静态ARP 表项可以直接用于报文转发。
- 在配置短静态 ARP 表项时,只需要配置IP 地址和MAC 地址项。如果出接口是三层以太网接口,短静态ARP 表项可以直接用于报文转发;如果出接口是VLAN 虚接口,短静态ARP 表项不能直接用于报文转发,当要发送IP 数据包时,先发送ARP 请求报文,如果收到的响应报文中的源IP 地址和源MAC 地址与所配置的IP 地址和MAC 地址相同,则将接收ARP 响应报文的接口加入该静态ARP 表项中,之后就可以用于IP 数据包的转发。
代理ARP 分为普通代理ARP 和本地代理ARP,二者的应用场景有所区别:
- 普通代理 ARP 的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
- 本地代理 ARP 的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播
普通代理 ARP
处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理ARP 功能,通过三层转发实现互通。
代理ARP的典型应用环境如下图所示。设备Router通过两个三层接口Ethernet1/1 和Ethernet1/2 连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。、
在这种组网情况下,当 Host A 需要与Host B 通信时,由于目的IP 地址与本机的IP 地址为同一网段,因此Host A 会直接发出请求Host B 硬件地址的ARP 请求。但是,此时的两台主机处于不同的广播域中,Host B 无法收到Host A 的ARP 请求报文,当然也就无法应答。
通过在 Router 上启用代理ARP 功能,可以解决此问题。启用代理ARP 后,Router 可以应答HostA 的ARP 请求。同时,Router 相当于Host B 的代理,把从其他主机发送过来的报文转发给它。
代理 ARP 的优点是,它可以只被应用在一个设备上(此时该设备的作用相当于网关),不会影响到网络中其他设备的路由表。代理ARP 功能可以在IP 主机没有配置缺省网关或者IP 主机没有任何路由能力的情况下使用。
本地代理 ARP
本地代理ARP的应用场景如下图所示。Host A和Host B属于同一个VLAN 2,但它们分别连接到被二层隔离的端口Ethernet1/3 和Ethernet1/1 上,通过在Router上启用本地代理ARP功能,可以实现Host A和Host B的三层互通。
本地代理 ARP 可以在下列三种情况下实现主机之间的三层互通:
- 想要互通的主机分别连接到同一个 VLAN 中的不同二层隔离端口下;
- 使能 Super VLAN 功能后,想要互通的主机属于不同的Sub VLAN;
- 使能 Isolate-user-vlan 功能后,想要互通的主机属于不同的Secondary VLAN