ARP协议

ARP协议

将32位的IP地址转换为48位的物理地址。

在局域网中,当主机或者其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络
层地址(即 IP 地址)。但是仅仅有 IP 地址是不够的,因为 IP 数据报文必须封装成帧才能通过物理
网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从 IP 地址到物理地址的映射。
APR 就是实现这个功能的协议。

ARP 报文结构

ARP报文分为ARP请求和ARP应答报文,

这里写图片描述

硬件类型:表示硬件地址的类型。它的值为 1 表示以太网地址;
z 协议类型:表示要映射的协议地址类型。它的值为 0x0800 即表示 IP 地址;
z 硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4;
z 操作类型(OP): 1 表示 ARP 请求, 2 表示 ARP 应答;
z 发送端 MAC 地址:发送方设备的硬件地址;
z 发送端 IP 地址:发送方设备的 IP 地址;
z 目标 MAC 地址:接收方设备的硬件地址。
z 目标 IP 地址:接收方设备的 IP 地址

ARP地址解析过程

假设PC1和PC2在同一个网段,PC1要向PC2发送信息。如 图 所示,具体的地址解析过程如
下:

(1) PC1 首先查看自己的 ARP 表,确定其中是否包含有PC2 对应的 ARP 表项。如果找到了对应的 MAC 地址,则PC1 直接利用 ARP 表中的 MAC 地址,对 IP 数据包进行帧封装,并将数据包发送给PC2。

(2) 如果PC1 在 ARP 表中找不到对应的 MAC 地址,则将缓存该数据报文,然后以广播方式发送一个 ARP 请求报文。 ARP 请求报文中的发送端 IP 地址和发送端 MAC 地址为PC1 的 IP地址和 MAC 地址,目标 IP 地址和目标 MAC 地址为PC2 的 IP 地址和全 0 的 MAC 地址。由于 ARP 请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即PC2)会对该请求进行处理。

(3) PC2 比较自己的 IP 地址和 ARP 请求报文中的目标 IP 地址,当两者相同时进行如下处理:将 ARP 请求报文中的发送端(即PC1)的 IP 地址和 MAC 地址存入自己的 ARP 表中。之后以单播方式发送 ARP 响应报文给PC1,其中包含了自己的 MAC 地址。

(4) PC1 收到 ARP 响应报文后,将PC2 的 MAC 地址加入到自己的 ARP 表中以用于后续报文的转发,同时将 IP 数据包进行封装后发送出去。

这里写图片描述

假设PC1和PC2 不在同一个网段
当PC1和PC2 不在同一网段时,PC1就会先向网关发出 ARP 请求, ARP 请求报文中的目标IP 地址为网关的 IP 地址。当PC1从收到的响应报文中获得网关的 MAC 地址后,将报文封装并发给网关。如果网关没有PC2 的 ARP 表项,网关会广播 ARP 请求,目标 IP 地址为PC2 的 IP 地址,当网关从收到的响应报文中获得PC2 的 MAC 地址后,就可以将报文发给PC2;如果网关已经有PC2 的 ARP 表项,网关直接把报文发给PC2。

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 报文,该报文中携带的发送端 IP 地址和目标 IP 地址都是本机 IP地址,报文源 MAC 地址是本机 MAC 地址,报文的目的 MAC 地址是广播地址。设备通过对外发送免费 ARP 报文来实现以下功能:
z 确定其它设备的 IP 地址是否与本机的 IP 地址冲突。当其它设备收到免费 ARP 报文后,如果发现报文中的 IP 地址和自己的 IP 地址相同, 则给发送免费 ARP 报文的设备返回一个 ARP 应答,告知该设备 IP 地址冲突。
z 设备改变了硬件地址,通过发送免费 ARP 报文通知其它设备更新 ARP 表项

免费 ARP 报文学习功能的作用

使能了免费 ARP 报文学习功能后,设备会根据收到的免费 ARP 报文中携带的信息(源 IP 地址、源 MAC 地址)对自身维护的 ARP表进行修改。设备先判断 ARP 表中是否存在与此免费 ARP 报文源 IP 地址对应的 ARP 表项:
z 如果没有对应的 ARP 表项,设备会根据该免费 ARP 报文中携带的信息新建 ARP 表项;
z 如果存在对应的 ARP 表项,设备会根据该免费 ARP 报文中携带的信息更新对应的 ARP 表项。
关闭免费 ARP 报文学习功能后,设备不会根据收到的免费 ARP 报文来新建 ARP 表项,但是会更新已存在的对应 ARP 表项。如果用不希望通过免费 ARP 报文来新建 ARP 表项,可以关闭免费ARP 报文学习功能,以节省 ARP 表项资源。技术介绍

定时发送免费 ARP 功能的作用

定时发送免费 ARP 功能可以及时通知下行设备更新 ARP 表项或者 MAC 地址表项,主要应用场景如下:
(1) 防止仿冒网关的 ARP 攻击
如果攻击者仿冒网关发送免费 ARP 报文,就可以欺骗同网段内的其它主机,使得被欺骗的主机访问网关的流量,被重定向到一个错误的 MAC 地址,导致其它主机用户无法正常访问网络。为了尽量避免这种仿冒网关的 ARP 攻击,可以在网关的接口上使能定时发送免费ARP 功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主 IP 地址和手工配置的从 IP 地址的免费 ARP 报文。这样,每台主机都可以学习到正确的网关,从而正常访问网络。
(2) 防止主机 ARP 表项老化
在实际环境中,当网络负载较大或接收端主机的 CPU 占用率较高时,可能存在 ARP 报文被丢弃或主机无法及时处理接收到的 ARP 报文等现象。这种情况下,接收端主机的动态 ARP 表项会因超时而被老化,在其重新学习到发送设备的 ARP 表项之前,二者之间的流量就会发生中断。为了解决上述问题,可以在网关的接口上使能定时发送免费 ARP 功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主 IP 地址和手工配置的从 IP 地址的免费 ARP 报文。这样,接收端主机可以及时更新 ARP 映射表,从而防止了上述流量中断现象。
(3) 防止 VRRP 虚拟 IP 地址冲突
当网络中存在 VRRP 备份组时,需要由 VRRP 备份组的 Master 路由器周期性的向网络内的主机发送免费 ARP 报文,使主机更新本地 ARP 地址表,确保网络中不会存在与 VRRP 虚拟 IP 地址相同的设备。
由于用户可以设定 VRRP 虚拟 IP 地址和 MAC 地址对应关系,因此有以下两种情况:
z 如果当前 VRRP 虚拟 IP 地址和虚拟 MAC 地址对应,则免费 ARP 报文中的源 MAC 地址为VRRP 虚拟路由器对应的虚拟 MAC 地址。
z 如果当前 VRRP 虚拟 IP 地址和实际 MAC 地址对应,则免费 ARP 报文中的源 MAC 地址为VRRP 备份组中 Master 路由器接口的MAC 地址。
(4) 及时更新模糊终结 VLAN 内设备的 MAC 地址表
三层以太网子接口上同时配置了模糊终结多个 VLAN 和 VRRP 备份组时,为了避免发送过多的VRRP 通告报文,需要关闭 VLAN 终结支持广播/组播功能,并配置 VRRP 控制 VLAN。此时,为了及时更新各个模糊终结 VLAN 内设备的 MAC 地址表项,可以在三层以太网子接口上使能定时发送免费 ARP 功能。使能该功能后,三层以太网子接口将按照配置的时间间隔周期性发送 VRRP 虚拟 IP 地址、接口主 IP 地址和手工配置的从 IP 地址的免费 ARP 报文。这样,当 VRRP 主备状态切换时,各个模糊终结 VLAN 内设备上可以及时更新为正确的 MAC 地址表项。

代理 ARP

如果 ARP 请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接
它们的具有代理 ARP 功能的设备就可以回答该请求,这个过程称作代理 ARP(Proxy ARP)。代理 ARP 功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。
代理 ARP 分为普通代理 ARP 和本地代理 ARP,二者的应用场景有所区别:
z 普通代理 ARP 的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。
z 本地代理 ARP 的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。

普通代理 ARP

处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理 ARP 功能,通过
三层转发实现互通。
代理ARP的典型应用环境如 图 3所示。设备Router通过两个三层接口Ethernet1/1 和Ethernet1/2 连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为 192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。
这里写图片描述
图 普通代理 ARP 的应用环境
在这种组网情况下,当 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 的应用环境
本地代理 ARP 可以在下列三种情况下实现主机之间的三层互通:
z 想要互通的主机分别连接到同一个 VLAN 中的不同二层隔离端口下;
z 使能 Super VLAN 功能后,想要互通的主机属于不同的 Sub VLAN;
z 使能 Isolate-user-vlan 功能后,想要互通的主机属于不同的 Secondary VLAN

ARP Snooping

ARP Snooping 作用

ARP Snooping 功能是一个用于二层交换网络环境的特性,通过侦听 ARP 报文建立 ARP Snooping
表项,从而提供给 ARP 快速应答和 MFF 手动方式等使用。

ARP Snooping 工作机制

设备上的一个 VLAN 使能 ARP Snooping 后,该 VLAN 内所有端口接收的 ARP 报文会被重定向到CPU。 CPU 对重定向上送的 ARP 报文进行分析,获取 ARP 报文的源 IP 地址、源 MAC 地址、源VLAN 和入端口信息,建立记录用户信息的 ARP Snooping 表项。ARP Snooping 表项的老化时间为 25 分钟,有效时间为 15 分钟。如果一个 ARP Snooping 表项自最后一次更新后 15 分钟内没有收到 ARP更新报文,则此表项开始进入失效状态,不再对外提供服务,其他特性查找此表项将会失败。当收到源 IP 地址和源 MAC 与已存在的ARP Snooping 表项 IP地址和 MAC 均相同的 ARP 报文时,此 ARP Snooping 表项进行更新,重新开始生效,并重新老化计时。当ARP Snooping 表项达到老化时间后,则将此 ARP Snooping 表项删除。如果 ARP Snooping 收到 ARP 报文时检查到相同 IP 的 ARP Snooping 表项已经存在,但是 MAC地址发生了变化,则认为发生了攻击,此时 ARP Snooping 表项处于冲突状态,表项失效,不再对外提供服务,并在 25 分钟后删除此表项。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章