ARP
ARP工作原理
当主机A需要与同一网段内的主机C通信时,只知道主机C的IP地址,而不知道他的MAC地址时:
- 查询ARP缓存表:根据主机C的IP地址查询ARP缓存表,如果没有主机C的缓存,就会发起ARP请求。
- ARP请求报文:目的地址是C的IP地址,目的MAC是广播MAC地址:ff-ff-ff-ff-ff,在同网段内广播。
- 二层交换机不查看IP地址,根据目的MAC地址将报文向除了接受端口外的所以端口转发。
- ARP响应报文:主机C收到该ARP请求报文后,发现该报文的目的IP地址就是自己,于是主机C以自己的MAC地址和IP地址为源地址,主机AD的MAC地址和IP地址为目的地址(单播),发送ARP响应报文。
- 其他主机:其他主机收到A的ARP请求报文,发现其目的IP不是自己,因此不会进行响应。
- 更新缓存表:主机A收到ARP响应报文后,将主机C的IP和MAC地址记录到ARP缓存表中。下次再向主机C发送数据时,可直接将缓存的目的MAC地址进行封装。
当主机A需要与不同网段的主机C通信时,但是也不知道主机C的MAC地址:
- 查询ARP缓存表:根据主机C的IP地址查询ARP缓存表,ARP发现主机C不在同一个网段,则需要通过默认网关来转发数据,但是也没有网关的MAC地址,则首先需要通过ARP获取网关的MAC地址。
- 发送ARP请求报文:以网关的IP地址为目的IP地址,以广播的形式发送ARP请求报文。
- 网关回应:网关收到ARP广播报文后,首先将主机A的IP地址和MAC地址和对应的端口添加到自己的MAC地址表中,然后查看IP地址发现是请求自己的MAC地址,于是以单播形式发送ARP响应报文。
- 主机A添加ARP缓存:主机A收到网关ARP响应报文后,将网关的IP地址和MAC地址记录到ARP缓存表中。然后,将发送给主机C的数据的目的IP地址封装为主机C的IP地址,目的MAC地址封装为网关的MAC地址进行发送。
- 网关收到主机A报文后:查看目的IP地址,发现是发送给主机C的,于是查询路由表,然后从相应的端口转发。由于网关没有主机C的MAC地址,因此又要广播发送ARP请求报文,这个报文中的源IP和源MAC为网关发送端口的IP地址和MAC地址。
- 主机C回应:主机C收到网关的ARP请求报文后,查看目的IP地址发现是自己,然后以单播的形式发送ARP响应报文,该报文的目的IP为网关的接口IP,目的MAC为网关的接口MAC地址。
- 网关更新MAC地址表:网关收到主机C的ARP响应报文后,将主机C的IP地址、MAC地址和对应的端口添加到MAC地址表中。然后将主机A发送给主机C的报文重新封装,以的自己MAC地址为源MAC地址,以主机C的MAC地址为目的MAC地址发送。
- 主机C收到主机A的数据后,发送过程结束。
- 当主机C向主机A发送回复报文时,同A向C发送数据的步骤一致。
ARP缓存表生存时间:
- ARP缓存表的默认生存时间通常是10分钟,在这段时间内,缓存条目会被保留,以便快速解析IP地址和MAC地址的映射关系。如果在10分钟内没有使用某个缓存条目,它将被删除。
更新机制
- 当接收到与缓存条目匹配的数据包或请求时,不仅会更新对应条目,还会重启定时器,延长其生命周期。
免费ARP
免费ARP的原理
原理:发送源目IP,均为自己的arp请求报文,如果没有收到arp响应则该 IP可用,不存在冲突,如果收到arp响应则表示该IP地址已被配置到其他主机, 该地址不能够在本主机上使用。
起到一个宣告作用
它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
检测IP地址冲突
通过DHCP获取IP地址后:发送免费ARP请求报文,如果收到了ARP响应报文,则说明网络内已经存在使用该IP 的主机。
确认设备接口地址
一般的设备在网卡地址加载阶段都会向网络中发送免费的ARP报文(也有些安全设备为了安全起见,让设备在加载地址期间不向外发送免费ARP报文),当我们想知道某些设备的接口地址但又没有相应记录可查时,我们就可以利用设备的这种特性,抓取其免费ARP报文,从而分析出其接口使用的IP地址。这个方法曾数次在用户处使用,效率很高,效果非常明显。
更新某些设备的ARP表项:
- VRRP主备切换后:工作环境中最常见的应用可能是网关设备双机热备的应用场景,网关在双机热备的工作模式下,由主设备切换到备用设备时,与之相连的设备的ARP表项需要由以前主设备的MAC地址更新为现在主设备(切换前的从设备)的MAC地址,这时,一般从设备在切换为主设备时,就利用向网络中发送免费ARP请求报文, 达到让其他设备更新ARP表项的效果。
- 如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。
ARP欺骗–利用免费ARP的攻击
在实际环境中,如果构造网关地址的免费ARP报文,并将ARP的源MAC地址设为任何非网关的MAC地址,再把构造的这个虚假的网关免费ARP报文向网络中发送,那么所有接收到这个免费ARP报文的主机都会更新自己的ARP表项中网关地址对应的MAC地址,导致这些主机的数据报文全部会被转发到错误的MAC地址上,从而实现了ARP欺骗的攻击。
网关设备利用免费ARP防止ARP攻击
有些网关设备为了防止内部中毒机器对内部其他机器实施网关的ARP欺骗攻击,其会在一定的时间间隔内向网络中主动发送免费ARP报文,让网络内的主机更新ARP表项中的网关MAC地址信息,从而达到防止或缓解ARP攻击的效果。
ARP 代理
- 如果 ARP 请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理 ARP 功能的设备就可以回答该请求,这个过程称作代理 ARP 。
- 代理 ARP 功能屏蔽了分离的物理网络,让用户使用起来,跟在同一个物理网络上一样。