三层交换机的MAC地址自学习解决方案

(整期优先)网络出版时间:2023-10-14
/ 2

三层交换机的MAC地址自学习解决方案

孙芳芳   肖敬伟等同第一作者

国家知识产权局专利局专利审查协作天津中心  天津   300304

摘要:本文从IP层三层交换机的工作机制、防范ARP攻击、主机与交换机连接和断开的处理和MAC地址自学习方案的角度介绍了IP层三层交换机。本文提出的地址自学习机制可以有效的防范最为常见的IP地址冲突攻击、伪造ARP请求报文攻击、未请求的ARP应答攻击、ARP欺骗等,并能够方便的通过FPGA等硬件技术进行实现,很好的解决了三层交换机的MAC地址自学习问题。

关键词:三层交换机;ARP攻击;MAC地址自学习

1.IP层三层交换机简介

为了适应网络应用深化带来的挑战,网络设备在网络结构方面从早期的共享介质的局域网发展到目前的交换式局域网。交换式局域网技术使专用的带宽为用户所独享,极大的提高了局域网传输的效率。但是,作为网络核心、起到网间互连作用的路由器技术却没有质的突破。在这种情况下,三层交换技术交换机技术应运而生。它可操作在网络协议的第三层,同时它的速度极快,几乎达到第二层交换的速度。IP层三层交换机很好的结合了传统二层交换机速度快的特点和路由器能够在网路层工作的特点。

2.IP层三层交换机的工作机制

假设两个使用IP协议的机器通过第IP层三层交换机进行通信,机器A在开始发送时,已知目的IP地址,但尚不知道在局域网上发送所需要的MAC地址。要采用地址解析来确定目的MAC地址。机器A把自己的IP地址与目的IP地址比较,从其软件中配置的子网掩码提取出网络地址来确定目的机器是否与自己在同一子网内。

第一种情况,若目的机器B与机器A在同一子网内,A广播一个ARP请求,B返回其MAC地址,A得到目的机器B的MAC地址后将这一地址缓存起来,并用此MAC地址封包转发数据,第二层交换模块查找MAC地址表确定将数据包发向目的端口。

第二种情况,若两个机器不在同一子网内,如发送机器A要与目的机器C通信,发送机器A要向“缺省网关”发出ARP包,而“缺省网关”的IP地址已经在系统软件中设置。这个IP地址实际上对应第IP层三层交换机的第三层交换模块。所以当发送机器A对“缺省网关”的IP地址广播出一个ARP请求时,若第三层交换模块在以往的通信过程中已得到目的机器C的MAC地址,则向发送机器A回复C的MAC地址;否则第三层交换模块根据路由信息向目的机器广播一个ARP请求,目的机器C得到此ARP请示后向第三层交换模块回复其MAC地址,第三层交换模块保存此地址并回复给发送机器A。以后,当再进行A与C之间数据包转发,将用最终的目的机器C的MAC地址封装,数据转发过程全部交给第二层交换处理,信息得以高速交换,即所谓的一次选路,多次交换。

3.防范ARP攻击

针对ARP攻击,IP层三层交换机收到一个ARP请求或者ARP应答时,要对ARP请求或者应答做如下处理:(1)先验证一下源MAC地址和ARP帧中的源MAC地址是否相同,如果不相同说明这个ARP帧是伪造的,交换机不对它进行处理直接丢弃。这样只能防范比较低级的ARP攻击,高明的攻击者会将MAC封装成正确的形式发送,这样这种方法就不能奏效。(2)交换机在收到ARP请求和应答之后,会检测目的端IP地址和发送端IP地址是否相同,如果相同直接丢弃ARP数据包。这样做能够防范IP地址冲突攻击。(3)针对伪造的ARP请求报文攻击,IP层三层交换机在一般情况下收到ARP请求的时候不进行地址学习,只有在收到自身请求的ARP应答的时候才进行地址学习。(4)当发ARP欺骗时,交换机发出一个ARP请求会收到两个ARP应答,一个是伪造的应答,一个是真实的应答,两个前后关系不一定,所以不能简单的靠先后顺序鉴别真伪。所以当收到一个ARP应答时,交换机会检测其源IP地址是否在ARP请求表中,如果在就学习到IP-MAC表中;如果不在表中,就检查源IP是否在IP-MAC表中,如果有重复项,交换机就需要进行主动检测,向这两个主机发送目的IP为交换机自身的ARP请求,发送ARP应答的主机就是攻击者。

4.主机与交换机连接和断开的处理

下面讨论一下,当主机从IP层三层交换机上连接或者断开时,如何处理。主机从交换机上断开,这台主机在地址映射表中对应的表项就作废了,设计的机制需要将这个表项清除,在这里需要将新的表项循环写入地址映射表,这样作废的表项就会在一段时间后被新的表项覆盖。主机连接到交换机的时候,会自动向交换机发送ARP请求,请求获得默认网关的MAC地址。但是在前面设计中交换机一般情况下不学习ARP请求的地址,但是这里有一个特殊情况,如果这是一台新主机,以前没有连接到交换机上过,那么交换机的IP-MAC表中就没有它的MAC地址,就不学习它的地址,因为其他主机在主动要和它通信时会,通过交换机发送ARP请求,交换机在这一过程中可以学习。如果这台主机以前连接到过交换机上,交换机就知道它的MAC地址,交换机会把它的帧发送到原来的端口,这就造成了帧的丢失。所以针对这种情况,交换机收到一个ARP请求的时候会在IP-MAC表中查询源MAC地址,如果表中存在这一项,则可以分为两种可能,一种可能是攻击者冒充其他主机MAC地址发送的帧,另一种可能是有以前连接过的主机连接到了交换机上,这时交换机要更新IP-MAC表,然后将IP加入到ARP请求表中,向旧的端口发送ARP请求。这样,如果是伪造的ARP应答,那么真正的主机就会发送ARP应答,然后IP-MAC就会更新为正确的状态,如果不是伪造的ARP请求,主机也不会发送ARP应答,这样就能保证IP-MAC中的信息是正确的。

5.MAC地址自学习方案

在充分的考虑了需要解决的问题之后,设计了一套地址自学习机制,下面来详细介绍一下这套机制的工作流程。

地址自学习只学习ARP请求或者应答所携带的地址信息,这样就避免了,攻击者通过制造普通MAC帧攻击IP层三层交换机的危险,提高了IP层三层交换机的安全性。

对ARP请求和应答帧的处理如下:

(1)IP层三层交换机收到一个MAC帧之后,就要检查帧头的目的地址,则需要分为两种情况处理:第一种情况:如果目的地址是广播或者交换机的MAC地址,则需要判断该帧是否是ARP帧:如果不是直接抛弃该帧,因为在这个机制中不涉及处理其他帧;如果是ARP帧进入(2)。第二种情况,如果目的地址不是广播或者交换机的MAC地址,则需要查询地址映射表,如果有这个MAC地址,则向指定端口转发,如果没有,则向其他端口广播。

(2)交换机在收到ARP请求和应答之后,在下面两种情况下会丢弃帧:第一种情况,MAC帧头的源MAC地址和ARP帧中的源MAC地址不相同,说明这个ARP帧是伪造的,交换机不对它进行处理直接丢弃。这样只能防范比较低级的ARP攻击,高明的攻击者会将MAC封装成正确的形式发送,这样这种方法就不能奏效。第二种情况,ARP帧的目的端IP地址和发送端IP地址是否相同,如果相同直接丢弃ARP数据包。这样可以防范IP地址冲突攻击。如果帧结构符合要求,并且是ARP请求进入(3)。

(3)当该帧是ARP请求帧时,如果请求的是交换机的MAC地址,则检查地址映射表中是否有源MAC地址。如果存在该源MAC地址并且对应的端口号不同,则进行地址自学习,记录源MAC地址、IP地址、端口号,然后将IP写入ARP请求表,向被覆盖的旧端口发送              ARP请求,并向源端口发送ARP应答。其他情况,在IP-MAC表中查找目的IP,如果有发送ARP应答给请求端。如果没有,广播ARP请求,将该IP写入ARP等待应答表中。

(4)当帧是ARP应答时,检查ARP等待应答表,如果有源IP,交换机就学习地址,然后将ARP等待应答表中的项删除。如果ARP等待应答表中没有,就在IP-MAC表中查找,如果存在,则发送主动检测ARP请求,将有应答的MAC删除。

该机制可以有效的防范最为常见的IP地址冲突攻击、伪造ARP请求报文攻击、未请求的ARP应答攻击、ARP欺骗等,并能够方便的通过FPGA等硬件技术进行实现,很好的解决了三层交换机的MAC地址自学习问题。