ARP报文格式:
目的以太网地址,48bit,发送ARP请求时,目的以太网地址为广播MAC地址,即0xFF.FF.FF.FF.FF.FF。
源以太网地址,48bit。
帧类型,对于ARP请求或者应答,该字段的值都为0x0806。
硬件地址的类型。对于以太网,该类型的值为0x0001。
协议类型,对于IP地址,该值为0x0800。
硬件地址长度,对于ARP请求或者应答,该值为0x06。
协议地址长度,对于ARP请求或者应答,该值为0x04。
操作类型:对于ARP请求来说,该值为0x0001
对于ARP应答来说,该值为0x0002.
对于RARP请求来说,该值为0x0003.
对于RARP应答来说,该值为0x0004.
发送方以太网地址:与以太网首部的源以太网地址是重复信息。
发送端IP地址: 32bit。
接收方以太网地址:发送ARP请求时,该处填充值为0x00.00.00.00.00.00
接收方的IP地址:32bit。
免费ARP:
普通 ARP 报文中的目标 IP 地址是其他主机的 IP 地址;而免费 ARP 的请求报文中,目标 IP 地址是自己的 IP 地址。
免费 ARP 数据包有以下 3 个作用:
- 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的 IP 地址和 MAC 地址。
- 可用于检测 IP 地址冲突。当一台主机发送了免费 ARP 请求报文后,如果收到了 ARP 响应报文,则说明网络内已经存在使用该 IP 地址的主机。
- 可用于更新其他主机的 ARP 缓存表。如果该主机更换了网卡,而其他主机的 ARP 缓存表仍然保留着原来的 MAC 地址。这时,可以发送免费的 ARP 数据包。其他主机收到该数据包后,将更新 ARP 缓存表,将原来的 MAC 地址替换为新的 MAC 地址。
地址冲突的主机对于免费ARP响应也是需要回复的,回复的也是免费ARP响应,与其说是给地址冲突的主机回复,不如说是告诉整个广播域,我的IP才是xxx,然后源主机收到后又会广播免费ARP响应,两台地址冲突的主机轮流发。
一个MAC关联多个IP地址的场景:
无线路由器工作在无线中继模式下,这个中继下面连了一堆设备,每个设备都有IP,这些IP是上级路由器分配的,但是上级路由器却看不到他们的Mac地址,上级路由器只能看到这个中继的Mac,对上级路由器来说,只看到这个中继申请了一堆IP,而不知道中继是为他的下级设备申请的。
ARP防欺骗:
免费ARP防欺骗开关为ON, 1分钟内检测到30次以上(含30次)刷新本板ARP表中某IP地址对应MAC地址的请求,上报告警。
ARP黑名单:
一般ARP条目建立后,如果1分钟没有变化,则置为Trust状态。
支持ARP冲突时触发ARP主动学习。本功能支持以太主接口、以太子接口、TRUNK主接口、TRUNK子接口。
● 如果当前已有信任MAC1,如果收到MAC不同的ARP报文时,立刻刷新MAC,并进行ARP攻击判定处理。
●ARP攻击判定处理过程:
□ 将该非信任MAC放入攻击者MAC队列。针对每条动态ARP表项,维护一个信任MAC和一个长度为3的潜在攻击者MAC(即非信任MAC)队列(非黑名单)。如果队列已满,则踢掉ARP报文接收统计次数最少的那个非信任MAC。
□ 发送N次广播ARP请求,N可以全局配置,5<=N<=15,默认N=5,请求报文的发送间隔为1秒。□ 针对攻击者MAC队列里的每个MAC,统计该MAC发来的ARP报文个数。一旦收到 N/2+1 次信任MAC的应答,则立刻结束确认过程,此时查看攻击者MAC队列,将发送ARP报文次数大于或等于 N/2+1 次的攻击者MAC加入黑名单,其他的攻击者MAC直接从攻击者MAC队列里清除,并且上报告警消除。
□ 如果N次广播ARP请求发送完毕后,再等待1秒钟,还没有收到 N/2+1 次信任MAC的应答,则该动态ARP表项无信任MAC,此时清空ARP潜在攻击者队列。
□ 如果一分钟内只收到新MAC的ARP报文,则重新建立信任关系;如果没有收到信任MAC的应答,但收到其他多个MAC应答,则按收到顺序刷新ARP表项,最终表项为最后一次收到的MAC。
动态黑名单老化机制:
支持黑名单的老化机制,默认的老化时间为20分钟。若20分钟里没有收到黑名单里对应MAC回应的ARP报文,则移出黑名单 ,如果黑名单中的MAC在老化时间(20分钟)内发起攻击,则重新开始等待20分钟。
ARP报文带VLAN:
当端口配置VLAN后,肯定会周期性发送带VLAN的免费ARP,但是不带VLAN的免费ARP报文发不发取决于ARP广播报文携带VLANID开关参数的配置。(arpbcpktvlanflag)