ARP协议基础
(1)作用:
根据目的的IP地址解析目的MAC地址。(为二层数据封装提供依据)主机或三层网络设备上会维护一张ARP表,用于存储IP地址和MAC地址的关系。
(2)触发条件:
当需要访问目的IP地址在ARP缓存表不存在对应表项时;
(3)ARP报文:
①arp request(一般为广播发送):
a) 当访问的目的IP地址为同一网段时,请求的访问目的IP地址对应的 MAC地址;
b) 当访问的目的IP地址不在同一网段时,请求网关IP对应的MAC地址;
②arp reply(单播回复)
a) 当收到请求报文,目的IP地址与接收接口的IP地址一致时,回复arp reply,包含自己接口IP地址与MAC地址的对应关系;
b) 当收到请求报文,目的IP地址与接收接口的IP地址不一致时,如果没有开启ARP proxy功能,不会回复任何报文;
c) 如果开启ARP proxy功能,满足一定的条件之后回复arp reply,包含请求的目的IP地址与自己接口MAC地址的对应关系;
①动态ARP:
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更 新,可以被静态ARP表项覆盖。动态ARP老化机制:
动态ARP表项的老化参数有:老化超时时间、老化探测次数和老化探测模式;
a)缺省情况下,动态ARP表项的老化超时时间为1200秒,即20分钟;
b)缺省情况下,动态ARP表项的老化探测次数为3次。
c)缺省情况下,接口只在最后一次发送ARP老化探测报文是广播方式,其余均为单播方式发送。
①IP地址冲突检测:当设备接口的协议状态变为Up时,设备主动对外发送免费ARP报文。正常情况下不会收到ARP应答,如果收到,则表明本网络中存在与自身IP地址重复的地址。如果检测到IP地址冲突,设备(收到免费ARP请求报文的设备)会周期性的广播发送免费ARP应答报文,直到冲突解除。
②用于通告一个新的MAC地址:发送方更换了网卡,MAC地址变化了,为了能够在动态ARP表项老化前通告网络中其他设备,发送方可以发送一个免费 ARP。
③在VRRP备份组中用来通告主备发生变换:发生主备变换后,MASTER设备会广播发送一个免费ARP报文来通告发生了主备变换,将流量切换到正确的路径。(主要作用:刷新交换机的mac地址表项)

Proxy ARP 作用以及场景
(1)作用:实现在相同网段,但是不在同一物理网络的主机能互访。
(2)实现方式:
①路由式Proxy ARP:需要互通的主机(主机上没有配置缺省网关)处于相同的网段但不在同一物理网络(即不在同一广播域)的场景。
当PC1需要与PC2通信时,由于目的IP地址与本机的IP地址为同一网段,因此PC1以广播形式发送ARP请求报文。Router启用路由式Proxy ARP后,Router收到ARP请求报文后,Router会查找路由表。由于PC2与Router直连,因此Router上存在到PC2的路由表项。天Router使用自己的MAC地址给PC1发送ARP应答报文。PC1将以Router的MAC地址进行数据转发。
②VLAN内ProxyARP:需要互通的主机处于相同网段,羊并且属于相同VLAN,但是VLAN内配置了端口隔离的场景。
由于在Router上配置了VLAN内不同接口彼此隔离,因此PC1和PC2不能直接在二层互通。若Router的接口使能了VLAN内Proxy ARP功能,可以使PC1和PC2实现三层互通。Router的接口在接收到目的地址不是自己的ARP请求报文后,Router并不立即丢弃该报文,而是查找该接口的ARP表项。如果存在PC2的ARP表项,则将自己的MAC地址通过ARP应答报文发送给PC1,并将PC1发送给PC2的报文代为转发。
③VLAN间ProxyARP:需要互通的主机处于相同网段,但属于不同VLAN的场景。
由于PC1和PC2属于不同的Sub-VLAN,PC1和PC2不能直接实现二层如果Router上使能了VLAN间Proxy ARP功能,可以使PC1和PC2实现三层互通。Router的接口在接收到目的地址不是自已的ARP请求报文后,并不立即丢弃该报文,而是查找ARP表项。如果存在PC2的ARP表项,则将自己的MAC地址发送给PC1,并将PC发送给PC2的报文代为转发。
ARP 攻击与防范
ARP协议有简单、易用的优点,但是也因为其没有任何安全机制,容易被攻击者利用。在网络中,常见的ARP攻击方式主要包括:
(1)ARP泛洪攻击,是指攻击者发送大量的ARP报文,也叫拒绝服务攻击DoS(Denial of Service),主要带来以下两种影响:
①ARP表项溢出:设备处理ARP报文和维护ARP表项都需要消耗系统资源,同时为了满足ARP表项查询效率的要求,规格限制。攻击者就利用这一点,通过伪造大量源IP地址变化的ARP报文,-般设备都会对ARP表项规模有使得设备ARP表资源被无效的ARP条目耗尽,合法用户的ARP报文不能继续生成ARP条目,导致正常通信中断。
防范:
a)ARP表项严格学习:在网关设备上部署ARP表项严格学习功能,ARP表项严格学习是指只有本设备主动发送的ARP请求报文的应答报文才能触发本设备学习ARP,其他设备主动向本设备发送的ARP报文不能触发本设备学习ARP,可拒绝大部分的ARP报文攻击。
b)ARP表项限制:ARP表项限制功能应用在网关设备上,可以限制设备的某个接口学习动态ARP表项的数目。默认状态下,接口可以学习的动态ARP表项数目规格与全局的ARP表项规格保持一致。当部署完ARP表项限制功能后,如果指定接口下的动态ARP表项达到了允许学习的最大数目,将不再允许该接口继续学习动态ARP表项,以保证当一个接口所接入的某一用户主机发起ARP攻击时不会导致整个设备的ARP表资源都被耗尽。
②ARP MISS:攻击者利用工具扫描本网段主机或者进行跨网段扫描时,会向设备发送大量目标IP地址不能解析的IP报文(即路由表中存在该IP报文的目的IP对应的路由表项,但设备上没有该路由表项中下一跳对应的ARP表项),导致设备触发大量ARP Miss消息,生成并下发大量临时ARP表项,并广播大量ARP请求报文以对目标IP地址进行解析,从而造成CPU负荷过重。
防范:
a)根据源IP地址进行ARP Miss消息限速:当设备检测到某一源IP地址的IP报文在1秒内触发的ARP Miss消息数量超过了ARP Miss消息限速值,就认为此源IP地址存在攻击。
b)针对全局的ARP Miss消息限速:设备支持对全局处理的ARP Miss消息数量,根据限速值进行限速。
(2)ARP欺骗攻击,是指攻击者通过发送伪造的ARP报文,恶意修改设备或网络的报文通信异常。主要存在这样两种场景:
1.欺骗网关攻击:Attacker仿冒UserA向Gateway发送伪造的ARP报文,导致 Gateway的ARP表中记录了错误的UserA地址映射关系,造成UserA接收不到正常的数据报文。
防范:
a)ARP表项固化:网关设备在第一次学习到ARP以后,不再允许用户更新此ARP表项或只能允许更新此ARP表项的部分信息,或者通过发送单播ARP请求报文的方式对更新ARP条目的报文进行合法性确认。
2.仿冒网关攻击 :攻击者B将伪造网关的ARP报文发送给用户A,使用户A误以为攻击者即为网关。用户A的ARP表中会记录错误的网关地址映射关系,使得用户A跟网关的正常数据通信中断
防范:
a )ARP防网关冲突功能:当设备收到的ARP报文,发现ARP报文的源 IP地址与报文入接口对应的VLANIF接口的IP地址相同。设备就认为该ARP报文是与网关地址冲突的ARP报文,设备将生成ARP防攻击表项,并在后续一段时间内丢弃该接口收到的同VLAN以及同源MAC地址的ARP报文,这样可以防止与网关地址冲突的ARP报文在VLAN内广播。(此时网关是三层交换机的VLANIF接口)
b)发送免费ARP报文功能:定期广播发送正确的免费ARP报文到所有用户,迅速将已经被攻击的用户记录的错误网关地址映射关系修改正确。
3.中间人攻击:攻击者主动向PC1发送伪造PC3的ARP报文,导致PC1的ARP表中记录了错误的PC3地址映射关系,攻击者可以轻易获取到PC1原本要发往PC3的数据;同样,攻击者也可以轻易获取到PC3原本要发往PC1的数据。这样,PC1与PC3间的信息安全无法得到保障。
防范:
a) 动态ARP检测(DAI):动态ARP检测是利用绑定表来防御中间人攻击的。当设备收到ARP报文时,将此ARP报文对应的源IP、源MAC、 VLAN以及接口信息和绑定表的信息进行比较,如果信息匹配,说明发送该ARP报文的用户是合法用户,允许此用户的ARP报文通过,否则就认为是攻击,丢弃该ARP报文。
说明:动态ARP检测功能仅适用于DHCP Snooping场景。设备使能 DHCP Snooping功能后,当DHCP用户上线时,设备会自动生成DHCP Snooping绑定表;对于静态配置IP地址的用户,设备不会生成DHCP Snooping绑定表,所以需要手动添加静态绑定表,否则无法正常通信。
面经/面试题
1.哪些设备存在ARP表项?
答:主机或三层网络设备上会维护一张ARP表。
2.免费ARP和普通的ARP有什么区别?
答:免费ARP报文中的sender IP和target IP是一致的,而普通的ARP报文sender IP和target IP是不一致。
3.IPV4的重复地址检测和IPV6的重复地址检测有什么区别?
答:1.IPV4中使用的是免费ARP报文,而IPV6中使用的是ICMPV6报文。 2.免费ARP报文是二层广播发送的,而ipv6中是三层组播发送的,即目的IPV6地址为被请求节点组播地址。
4.IPV4的的地址解析和IPV6的地址解析有什么区别?
答:1.使用的协议不同:ARP NDP。 2.目的地址不同:广播(二层广播)、组播(被请求节点组播组地址)。 3.工作环境不同:二层三层。
5.什么时候会触发ARP请求?
答:1.要访问的目的IP地址在本设备没有对应的ARP表项。2.设备上动态ARP表项到达老化超时时间后,设备会发送ARP请求报文。(默认老化超时时间为20分钟、老化探测次数为3次、老化探测模式为前两次是单播,最后一次是广播)
6.ARP请求一定是广播发送的吗?
答:一般情况下是,除了动态ARP表项老化超时之后,进行老化探测是会单播发送。
7.设备收到ARP请求会如何处理?
答:1.查看targetIP是否为自己的接口IP,是则回复ARP应答并记录senderIP和senderMAC的对应关系在ARP缓存表中。2.不是自己,设备如果开启了proxy ARP,则会进行相应的检查(查找路由表、ARP表项),再判断丢弃或者回复;没有开启proxyARP,则直接丢弃。
8.设备收到免费ARP报文后,会如何处理?
答:1.如果免费ARP报文中源IP地址和自已的IP地址相同,则周期性的广播发送免费ARP应答报文,告知此IP地址在网络中存在冲突,与直到冲突解除牌。 2.如果免费ARP报文中源IP地址和自己的IP地址不同,免费ARP报文是在VLANIF接口收到的,并且设备上已经有免费ARP报文中源IP地址对应的动态ARP表项,则进行ARP学习,即根据收到的免费ARP报文更新该ARP表项。其余情况收到免费ARP报文后均不进行ARP学习。
9.ARP协议的工作流程?
答:
ARP协议的工作流程包括查询、响应和缓存三个主要步骤。以下是具体步骤的介绍:
1.查询:当主机A想要发送数据给主机B时,首先会检查自己的ARP缓存中是否有主机B的MAC地址。如果存在,则直接使用该MAC地址进行数据传输。
2.响应:如果ARP缓存中没有主机B的MAC地址,主机A会向网络中的所有主机发送一个ARP请求报文,这个请求报文中包含了主机A的IP地址和MAC地址以及目标主机B的IP地址。网络中的每台主机都会接收到这个请求,并检查请求中的IP地址是否与自己的IP地址匹配。只有当主机发现请求的IP地址与自己的IP地址匹配时,它才会将自己的MAC地址包含在一个ARP响应报文中,并将这个响应报文发送回主机A。
3.缓存:当主机A收到从主机B发来的ARP响应报文后,它会更新自己的ARP缓存,将主机B的IP地址和MAC地址存储起来,以备后续通信使用。同时,为了避免恶意攻击,通常会启用一些防护措施,如静态ARP表或动态ARP检测等技术来防止ARP缓存被篡改。