ARP相关

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)

相关推荐
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程8 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零10 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon10 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon10 小时前
华为eNSP:mux-vlan
网络·安全·华为