网络设备有数据要发送另一台网络设备时,必须要知道对方的IP地址,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的地址的MAC地址,因此发送端必须要获取目的地址的MAC地址。

通过目的IP地址来获取目的MAC地址的过程是有arp(address resolution protocol)地址解析协议来实现的。

arp报文不能穿越路由器,发送方广播发送,接收方单播回复,设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加目的IP地址到目的MAC地址的映射表项。

一、报文格式

arp协议的原理和工作过程 ARP协议详解(1)

1、字段

总共28个字节,因为数据帧长度最小为64个字节,所有ARP包封装最终后面要有18填充(PAD)字节。

硬件类型:表示硬件地址的类型。它值为1表示以太网地址,也就是说ARP不仅仅适用于以太网协议,还可以支持别的链路层协议。

协议类型:表示要映射的协议地址类型。它的值为0x0800表示IP协义;

硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6(MAC地址长度)和4(IP地址长度);

操作类型:1表示ARP请求,2表示ARP应答,3表示RARP请求,4表示RARP应答;

发送端硬件地址:如果是以太网,则是源主机以太网地址,此处和以太网头中的源地址对应。

发送端协议地址:如果是IP协议,则表示源主机的IP地址。

目的端硬件地址:如果是以太网,则是目的以太网地址,和以太网头中的目的地址对应。

目的端协议地址:如果是IP协议,则表示源主机要请求硬件地址的IP地址。

对应ARP请求包来说,目的端的硬件地址字段无须填充,其他字段都需要填充。对于ARP回复包来说,所有字段都需要填充。

2、ARP表

动态ARP表

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

ARP表老化时间不同厂商的设备不一样,Cisco默认4个小时,华三的WX3024E的老化时间默认是20分钟,DLINK默认老化时间是20S,Linux fedora默认是60秒,Windows 2000 XP默认是2分钟,brocade switch默认10分钟

静态ARP表

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖,配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

静态ARP表项分为短静态ARP表项和长静态ARP表项:

(1)在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。

(2)在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的接口加入该静态ARP表项中,之后就可以用于IP数据包的转发。

一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入,当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时,可以配置短静态ARP表项,当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项.

3、ARP地址解析过程

a):主机A和主机B在同一网段,主机A要向主机B发送信息。如图1-2所示,具体的地址解析过程如下:

arp协议的原理和工作过程 ARP协议详解(2)

(1)主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。

(2)如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。

(3)主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。

(4)主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

b):当主机A和主机B不再同一网段时,具体解析过程如下:

(1)主机A就会先向路由器网关发出ARP请求,ARP请求的目标IP地址为路由器网关的IP地址。路由器网关回复ARP reply报文告诉主机A网关的MAC地址,这时主机将数据报文进行封装发送给路由器网关。

(2)如果主机B所在的网段不是路由器网关的直连网段,则数据包会查找路由表,把数据包发送到主机B所在网段的下一跳地址,路由器同样也会发送ARP广播来获取下一跳IP地址对应的MAC地址来完成数据包的封装。

(3)如果主板 B所在的网段是该路由器网关的直连网段,且路由器arp表中没有主机B的MAC地址,路由器会向该主机B所在网段发送ARP广播来获取主机B的MAC地址来完成数据包的封装,如果路由器arp表项中有主机B的MAC地址,路由器会直接完成封装把报文发送给主机B。

4、常见问题

每个主机都有一个ARP高速缓存表,这样避免每次发包时都需要发送ARP请求来获取硬件地址。默认老化时间是20分钟。利用arp -a命令可以查看显示系统中高速缓存的内容。

Windows下“arp -d”命令可以清除arp高速缓存表。

有时候需要手动清除arp缓存,曾经就是因为arp缓存没有做清理,导致迷惑了很久。遇到的问题:

1) 制作了一个写路由器MAC地址的工具,每次写完MAC地址,重启路由器,会发现无法telnet登陆路由器。IP地址没变,但是MAC地址更改了,而ARP缓存表中IP地址映射的仍然是旧的MAC地址。

2) 类似的问题,有两个路由器具有相同的IP地址。先连接一个路由器,登陆成功后,再去连接另一台路由器,却发现登陆不了。

二、ARP类型

1、免费ARP

免费ARP报文是一种特殊的ARP报文,该报文中携带的发送端IP地址和目标IP地址都是本机IP地址,报文源MAC地址是本机MAC地址,报文的目的MAC地址是广播地址。

作用:

(1)确定其它设备的IP地址是否与本机的IP地址冲突。当其它设备收到免费ARP报文后,如果发现报文中的IP地址和自己的IP地址相同,则给发送免费ARP报文的设备返回一个ARP应答,告知该设备IP地址冲突。

(2)设备改变了硬件地址,通过发送免费ARP报文通知其它设备更新ARP表项。

免费ARP报文学习功能的作用

使能了免费ARP报文学习功能后,设备会根据收到的免费ARP报文中携带的信息(源IP地址、源MAC地址)对自身维护的ARP表进行修改。设备先判断ARP表中是否存在与此免费ARP报文源IP地址对应的ARP表项:

如果没有对应的ARP表项,设备会根据该免费ARP报文中携带的信息新建ARP表项;

如果存在对应的ARP表项,设备会根据该免费ARP报文中携带的信息更新对应的ARP表项。

关闭免费ARP报文学习功能后,设备不会根据收到的免费ARP报文来新建ARP表项,但是会更新已存在的对应ARP表项。如果用户不希望通过免费ARP报文来新建ARP表项,可以关闭免费ARP报文学习功能,以节省ARP表项资源。

定时发送免费ARP功能的作用

定时发送免费ARP功能可以及时通知下行设备更新ARP表项或者MAC地址表项,主要应用场景如下:

(1)防止仿冒网关的ARP攻击

如果攻击者仿冒网关发送免费ARP报文,就可以欺骗同网段内的其它主机,使得被欺骗的主机访问网关的流量,被重定向到一个错误的MAC地址,导致其它主机用户无法正常访问网络。

为了尽量避免这种仿冒网关的ARP攻击,可以在网关的接口上使能定时发送免费ARP功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,每台主机都可以学习到正确的网关,从而正常访问网络。

(2)防止主机ARP表项老化

在实际环境中,当网络负载较大或接收端主机的CPU占用率较高时,可能存在ARP报文被丢弃或主机无法及时处理接收到的ARP报文等现象。这种情况下,接收端主机的动态ARP表项会因超时而被老化,在其重新学习到发送设备的ARP表项之前,二者之间的流量就会发生中断。

为了解决上述问题,可以在网关的接口上使能定时发送免费ARP功能。使能该功能后,网关接口上将按照配置的时间间隔周期性发送接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,接收端主机可以及时更新ARP映射表,从而防止了上述流量中断现象。

(3)防止VRRP虚拟IP地址冲突

当网络中存在VRRP备份组时,需要由VRRP备份组的Master路由器周期性的向网络内的主机发送免费ARP报文,使主机更新本地ARP地址表,确保网络中不会存在与VRRP虚拟IP地址相同的设备。

由于用户可以设定VRRP虚拟IP地址和MAC地址对应关系,因此有以下两种情况:

如果当前VRRP虚拟IP地址和虚拟MAC地址对应,则免费ARP报文中的源MAC地址为VRRP虚拟路由器对应的虚拟MAC地址。

如果当前VRRP虚拟IP地址和实际MAC地址对应,则免费ARP报文中的源MAC地址为VRRP备份组中Master路由器接口的MAC地址。

(4)及时更新模糊终结VLAN内设备的MAC地址表

三层以太网子接口上同时配置了模糊终结多个VLAN和VRRP备份组时,为了避免发送过多的VRRP通告报文,需要关闭VLAN终结支持广播/组播功能,并配置VRRP控制VLAN。此时,为了及时更新各个模糊终结VLAN内设备的MAC地址表项,可以在三层以太网子接口上使能定时发送免费ARP功能。使能该功能后,三层以太网子接口将按照配置的时间间隔周期性发送VRRP虚拟IP地址、接口主IP地址和手工配置的从IP地址的免费ARP报文。这样,当VRRP主备状态切换时,各个模糊终结VLAN内设备上可以及时更新为正确的MAC地址表项。

2、代理ARP

如果ARP请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接它们的具有代理ARP功能的设备就可以回答该请求,这个过程称作代理ARP(Proxy ARP)。

代理ARP功能屏蔽了分离的物理网络这一事实,使用户使用起来,好像在同一个物理网络上。

代理ARP分为普通代理ARP和本地代理ARP,二者的应用场景有所区别:

普通代理ARP的应用环境为:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域中。

本地代理ARP的应用环境为:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域中。

普通代理ARP

处于同一网段内的主机,当连接到设备的不同三层接口时,可以利用设备的代理ARP功能,通过三层转发实现互通。

代理ARP的典型应用环境如图3-1所示。设备Router通过两个三层接口Ethernet1/1和Ethernet1/2连接两个网络,两个三层接口的IP地址不在同一个网段,接口地址分别为192.168.10.99/24、192.168.20.99/24。但是两个网络内的主机Host A和Host B的地址通过掩码的控制,既与相连设备的接口地址在同一网段,同时二者也处于同一个网段。

arp协议的原理和工作过程 ARP协议详解(3)

在这种组网情况下,当Host A需要与Host B通信时,由于目的IP地址与本机的IP地址为同一网段,因此Host A会直接发出请求Host B硬件地址的ARP请求。但是,此时的两台主机处于不同的广播域中,Host B无法收到Host A的ARP请求报文,当然也就无法应答。

通过在Router上启用代理ARP功能,可以解决此问题。启用代理ARP后,Router可以应答Host A的ARP请求。同时,Router相当于Host B的代理,把从其他主机发送过来的报文转发给它。

代理ARP的优点是,它可以只被应用在一个设备上(此时该设备的作用相当于网关),不会影响到网络中其他设备的路由表。代理ARP功能可以在IP主机没有配置缺省网关或者IP主机没有任何路由能力的情况下使用。

本地代理ARP

本地代理ARP的应用场景如图3-2所示。Host A和Host B属于同一个VLAN 2,但它们分别连接到被二层隔离的端口Ethernet1/3和Ethernet1/1上,通过在Router上启用本地代理ARP功能,可以实现Host A和Host B的三层互通。

arp协议的原理和工作过程 ARP协议详解(4)

本地代理ARP可以在下列三种情况下实现主机之间的三层互通:

想要互通的主机分别连接到同一个VLAN中的不同二层隔离端口下;

使能Super VLAN功能后,想要互通的主机属于不同的Sub VLAN;

使能Isolate-user-vlan功能后,想要互通的主机属于不同的Secondary VLAN。

三、ARP snooping

ARP Snooping作用

ARP Snooping功能是一个用于二层交换网络环境的特性,通过侦听ARP报文建立ARP Snooping表项,从而提供给ARP快速应答和MFF手动方式等使用。

ARP Snooping工作机制

设备上的一个VLAN使能ARP Snooping后,该VLAN内所有端口接收的ARP报文会被重定向到CPU。CPU对重定向上送的ARP报文进行分析,获取ARP报文的源IP地址、源MAC地址、源VLAN和入端口信息,建立记录用户信息的ARP Snooping表项。

ARP Snooping表项的老化时间为25分钟,有效时间为15分钟。如果一个ARP Snooping表项自最后一次更新后15分钟内没有收到ARP更新报文,则此表项开始进入失效状态,不再对外提供服务,其他特性查找此表项将会失败。当收到源IP地址和源MAC与已存在的ARP Snooping表项IP地址和MAC均相同的ARP报文时,此ARP Snooping表项进行更新,重新开始生效,并重新老化计时。当ARP Snooping表项达到老化时间后,则将此ARP Snooping表项删除。

如果ARP Snooping收到ARP报文时检查到相同IP的ARP Snooping表项已经存在,但是MAC地址发生了变化,则认为发生了攻击,此时ARP Snooping表项处于冲突状态,表项失效,不再对外提供服务,并在25分钟后删除此表项。

ARP快速应答

ARP快速应答作用

在无线产品组网中,AC与AP会建立隧道连接,Client通过AP连接到AC,通过AC,Client可以与网关建立连接。当Client发起ARP广播请求时,需要通过AC向所有的AP复制ARP请求,这样会导致ARP广播占用隧道的大量资源,导致性能下降。为了减少ARP广播占用的隧道资源,可以在AC上启用ARP快速应答功能,减少ARP广播报文的影响。

ARP快速应答功能就是根据AC设备收集的用户信息(用户信息可以是DHCP Snooping表项,也可以是ARP Snooping表项),在指定的VLAN内,尽可能的对ARP请求进行应答,从而减少ARP广播报文。

ARP快速应答工作机制

ARP快速应答的工作机制如下:

(1) 设备接收到ARP请求报文时,如果请求报文的目的IP地址是设备的VLAN虚接口的IP地址,则由ARP特性进行处理;

(2) 如果ARP请求报文的目的IP地址不是VLAN虚接口的IP地址,则根据报文中的目的IP地址查找DHCP Snooping表项:

如果查找成功,但是查找到的表项的接口和收到请求报文的接口一致,并且接口是以太网接口,则不进行应答,否则立即进行应答。

如果查找失败,则继续查找ARP Snooping表项,如果查找成功,但是查找到的表项的接口和收到请求报文的接口一致,并且接口是以太网接口,则不进行应答,否则立即进行应答。

如果两个表均查找失败,则直接转发请求报文或将报文交于其他特性处理。

ARP攻击防御

ARP协议有简单、易用的优点,但是也因为其没有任何安全机制而容易被攻击发起者利用。

攻击者可以仿冒用户、仿冒网关发送伪造的ARP报文,使网关或主机的ARP表项不正确,从而对网络进行攻击。

攻击者通过向设备发送大量目标IP地址不能解析的IP报文,使得设备试图反复地对目标IP地址进行解析,导致CPU负荷过重及网络流量过大。

攻击者向设备发送大量ARP报文,对设备的CPU形成冲击。

关于ARP攻击报文的特点以及ARP攻击类型的详细介绍,请参见"ARP攻击防范技术白皮书"。

目前ARP攻击和ARP病毒已经成为局域网安全的一大威胁,为了避免各种攻击带来的危害,设备提供了多种技术对攻击进行检测和解决。

下面将详细介绍一下这些技术的原理。

ARP防止IP报文攻击功能简介

如果网络中有主机通过向设备发送大量目标IP地址不能解析的IP报文来攻击设备,则会造成下面的危害:

设备向目的网段发送大量ARP请求报文,加重目的网段的负载。

设备会试图反复地对目标IP地址进行解析,增加了CPU的负担。

为避免这种IP报文攻击所带来的危害,设备提供了下列两个功能:

如果发送攻击报文的源是固定的,可以采用ARP源抑制功能。开启该功能后,如果网络中某主机向设备某端口连续发送目标IP地址不能解析的IP报文,当每5秒内由此主机发出IP报文触发的ARP请求报文的流量超过设置的阈值,那么对于由此主机发出的IP报文,设备不允许其触发ARP请求,直至5秒后再处理,从而避免了恶意攻击所造成的危害。

如果发送攻击报文的源不固定,可以采用ARP黑洞路由功能。开启该功能后,一旦接收到目标IP地址不能解析的IP报文,设备立即产生一个黑洞路由,使得设备在一段时间内将去往该地址的报文直接丢弃。等待黑洞路由老化时间过后,如有报文触发则再次发起解析,如果解析成功则进行转发,否则仍然产生一个黑洞路由将去往该地址的报文丢弃。这种方式能够有效地防止IP报文的攻击,减轻CPU的负担。

ARP报文限速功能简介

ARP报文限速功能是指对上送CPU的ARP报文进行限速,可以防止大量ARP报文对CPU进行冲击。例如,在配置了ARP Detection功能后,设备会将收到的ARP报文重定向到CPU进行检查,这样引入了新的问题:如果攻击者恶意构造大量ARP报文发往设备,会导致设备的CPU负担过重,从而造成其他功能无法正常运行甚至设备瘫痪,这个时候可以启用ARP报文限速功能来控制上送CPU的ARP报文的速率。

推荐用户在配置了ARP Detection、ARP Snooping、ARP快速应答、MFF,或者发现有ARP泛洪攻击的情况下,使用ARP报文限速功能。

源MAC地址固定的ARP攻击检测功能简介

本特性根据ARP报文的源MAC地址进行统计,在5秒内,如果收到同一源MAC地址的ARP报文超过一定的阈值,则认为存在攻击,系统会将此MAC地址添加到攻击检测表项中。在该攻击检测表项老化之前,如果设置的检查模式为过滤模式,则会打印告警信息并且将该源MAC地址发送的ARP报文过滤掉;如果设置的模式为监控模式,则只打印告警信息,不会将该源MAC地址发送的ARP报文过滤掉。

对于网关或一些重要的服务器,可能会发送大量ARP报文,为了使这些ARP报文不被过滤掉,可以将这类设备的MAC地址配置成保护MAC,这样,即使该MAC存在攻击也不会被检测过滤。只对上送CPU的ARP报文进行统计。

ARP报文源MAC一致性检查功能简介

ARP报文源MAC一致性检查功能主要应用于网关设备上,防御以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同的ARP攻击。

配置本特性后,网关设备在进行ARP学习前将对ARP报文进行检查。如果以太网数据帧首部中的源MAC地址和ARP报文中的源MAC地址不同,则认为是攻击报文,将其丢弃;否则,继续进行ARP学习。

ARP主动确认功能简介

ARP的主动确认功能主要应用于网关设备上,防止攻击者仿冒用户欺骗网关设备。

启用ARP主动确认功能后,设备在新建或更新ARP表项前需进行主动确认,防止产生错误的ARP表项。关于工作原理的详细介绍请参见"ARP攻击防范技术白皮书"。

授权ARP功能简介

所谓授权ARP(Authorized ARP),就是根据DHCP服务器生成的租约或者DHCP中继生成的安全表项同步生成ARP表项。

使能接口的授权ARP功能后:

系统会启动接口下授权ARP表项的老化探测功能,可以检测用户的非正常下线;

系统会禁止该接口学习动态ARP表项,可以防止用户仿冒其他用户的IP地址或MAC地址对网络进行攻击,保证只有合法的用户才能使用网络资源,增加了网络的安全性。

ARP Detection功能简介

ARP Detection功能主要应用于接入设备上,对于合法用户的ARP报文进行正常转发,否则直接丢弃,从而防止仿冒用户、仿冒网关的攻击。

ARP Detection包含三个功能:ARP报文有效性检查、用户合法性检查、ARP报文强制转发。

ARP报文有效性检查

对于ARP信任端口,不进行报文有效性检查;对于ARP非信任端口,需要根据配置对MAC地址和IP地址不合法的报文进行过滤。可以选择配置源MAC地址、目的MAC地址或IP地址检查模式。

对于源MAC地址的检查模式,会检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致,一致认为有效,否则丢弃;

对于目的MAC地址的检查模式(只针对ARP应答报文),会检查ARP应答报文中的目的MAC地址是否为全0或者全1,是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的,无效的报文需要被丢弃;

对于IP地址检查模式,会检查ARP报文中的源IP和目的IP地址,全0、全1、或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。

用户合法性检查

对于ARP信任端口,不进行用户合法性检查;对于ARP非信任端口,需要进行用户合法性检查,以防止仿冒用户的攻击。

用户合法性检查是根据ARP报文中源IP地址和源MAC地址检查用户是否是所属VLAN所在端口上的合法用户,包括基于IP Source Guard静态绑定表项的检查、基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和OUI MAC地址的检查。

首先进行基于IP Source Guard静态绑定表项检查。如果找到了对应源IP地址和源MAC地址的静态绑定表项,认为该ARP报文合法,进行转发。如果找到了对应源IP地址的静态绑定表项但源MAC地址不符,认为该ARP报文非法,进行丢弃。如果没有找到对应源IP地址的静态绑定表项,继续进行DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查。

在基于IP Source Guard静态绑定表项检查之后进行基于DHCP Snooping安全表项、802.1X安全表项和OUI MAC地址检查,只要符合三者中任何一个,就认为该ARP报文合法,进行转发。其中,OUI MAC地址检查指的是,只要ARP报文的源MAC地址为OUI MAC地址,并且使能了Voice VLAN功能,就认为是合法报文,检查通过。

如果所有检查都没有找到匹配的表项,则认为是非法报文,直接丢弃。

ARP报文强制转发

ARP报文强制转发功能是将ARP非信任端口接收到的已经通过用户合法性检查的ARP报文,按照一定的规则进行转发的防攻击功能,此功能不对ARP信任端口接收到的通过用户合法性检查的ARP报文进行限制。

对于从ARP非信任端口收到的已经通过用户合法性检查的合法ARP报文的处理过程如下:

对于ARP请求报文,通过信任端口进行转发;

对于ARP应答报文,首先按照报文中的以太网目的MAC地址进行转发,若在MAC地址表中没有查到目的MAC地址对应的表项,则将此ARP应答报文通过信任端口进行转发。

ARP自动扫描、固化功能简介

ARP自动扫描功能一般与ARP固化功能配合使用:

启用ARP自动扫描功能后,设备会对局域网内的邻居自动进行扫描(向邻居发送ARP请求报文,获取邻居的MAC地址,从而建立动态ARP表项)。

ARP固化功能用来将当前的ARP动态表项(包括ARP自动扫描生成的动态ARP表项)转换为静态ARP表项。通过对动态ARP表项的固化,可以有效的防止攻击者修改ARP表项。

ARP网关保护功能简介

在设备上不与网关相连的端口上配置此功能,可以防止伪造网关攻击。

在端口配置此功能后,当端口收到ARP报文时,将检查ARP报文的源IP地址是否和配置的被保护网关的IP地址相同。如果相同,则认为此报文非法,将其丢弃;否则,认为此报文合法,继续进行后续处理。

ARP过滤保护功能简介

本功能用来限制端口下允许通过的ARP报文,可以防止仿冒网关和仿冒用户的攻击。

在端口配置此功能后,当端口收到ARP报文时,将检查ARP报文的源IP地址和源MAC地址是否和允许通过的IP地址和MAC地址相同:

如果相同,则认为此报文合法,继续进行后续处理;

如果不相同,则认为此报文非法,将其丢弃。

MFF

MFF作用

在传统的以太网组网方案中,为了实现不同客户端主机之间的二层隔离和三层互通,通常采用在交换机上划分VLAN的方法。但是当彼此间需要二层隔离的用户较多时,这种方式会占用大量的VLAN资源;同时,为实现客户端之间三层互通,需要为每个VLAN规划不同的IP网段,并配置VLAN接口的IP地址,因此划分过多的VLAN会降低IP地址的分配效率。

为了改善这种现状,MAC-Forced Forwarding(下文统一用"MFF"替代)为同一广播域内实现客户端主机间的二层隔离和三层互通,提供了一种解决方案。

MFF截获用户的ARP请求报文,通过ARP代答机制,回复网关MAC地址的ARP应答报文。通过这种方式,可以强制用户将所有流量(包括同一子网内的流量)发送到网关,使网关可以监控数据流量,防止用户之间的恶意攻击,能更好的保障网络部署的安全性。

图 5 应用组网图

arp协议的原理和工作过程 ARP协议详解(5)

如图7-1所示,Switch A和Switch B作为以太网接入节点(Ethernet Access Nodes,EAN),提供了客户端主机与汇聚节点(Switch C)之间的连接。在以太网接入节点上配置MFF功能,可以使客户端的数据报文交互全部通过网关转发,实现了客户端之间的三层互通,又保证了二层数据的隔离。

MFF通常与DHCP Snooping、ARP Snooping、IP Source Guard、ARP Detection、VLAN映射等功能配合使用,在接入层交换机上实现客户端的流量过滤、二层隔离和三层互通,提高接入层网络的安全性。

MFF端口角色

MFF特性包括两种端口角色:用户端口及网络端口。

用户端口

MFF的用户端口是指直接接入网络终端用户的端口。

用户端口上对于不同的报文处理如下:

允许组播报文和DHCP报文通过;

对于ARP报文则上送CPU进行处理;

若已经学习到网关MAC地址,则仅允许目的MAC地址为网关MAC地址的单播报文通过,其他报文都将被丢弃;若没有学习到网关MAC地址,目的MAC地址为网关MAC地址的单播报文也被丢弃。

网络端口

MFF的网络端口是指连接其他网络设备如接入交换机、汇聚交换机或网关的端口。

网络端口上对于不同的报文处理如下:

允许组播报文和DHCP报文通过;

对于ARP报文则上送CPU进行处理;

拒绝其他广播报文通过。

MFF运行模式

MFF特性包括两种运行模式:手工方式和自动方式。

手工方式

手工方式应用于用户静态配置IP地址的场景中,这是因为在用户静态配置IP地址时,无法通过DHCP报文来获取网关信息。另外,在用户静态配置IP时,由于没有依据进行用户与网关的映射,因此仅维护缺省网关的MAC地址,即,一个VLAN下仅维护一个网关MAC地址。

使能了手工方式后,MFF代答网关对用户的ARP请求,以及伪造ARP请求探测网关MAC的依据都是ARP Snooping表项。

若在MFF学习到缺省网关MAC地址后,收到来自网关的携带了与记录的MAC地址不同的源MAC地址的ARP报文,则需要更新记录的网关MAC地址。

自动方式

自动方式应用于用户通过DHCP协议动态获取IP地址的场景中。DHCP Snooping功能通过侦听DHCP ACK报文,并解析其中的Option 3字段(Router IP)来获取网关IP地址。

在使能MFF自动方式时,每一个DHCP Snooping用户绑定表项都应该有相对应的唯一网关IP地址。若DHCP ACK报文携带多个网关IP地址,则只记录第一个。若学习到的用户绑定表项不包含网关IP地址,或者没有记录在用户绑定表项中,则自动方式会根据当前VLAN记录的第一个网关作为用户网关应答该用户的ARP请求,除非其请求的是一个已知的网关地址。

同时,针对每一个网关IP地址,从第一个与其对应的用户绑定表项中获取用户IP地址及MAC地址,封装并伪造ARP请求,用于探测网关的MAC地址。

自动方式下,一个VLAN内最多可以学习并维护20个网关信息,超过此限制的网关不再学习及处理。网关IP获取之后不会进行更新,即网关信息一旦生成就不会老化,除非去使能MFF。

若在MFF学习到网关MAC地址后,收到来自网关的ARP报文,携带了与记录MAC地址不同的源MAC地址,则需要更新记录的网关MAC地址。

MFF工作机制

用户之间的三层互通是通过类似代理ARP的ARP代答机制保证。另外,这种代答机制也在一定程度上减少了网络侧和用户侧之间的广播报文数量。

针对ARP报文,MFF具体进行以下处理:

代答用户ARP请求。替代网关给用户主机回应ARP报文,使用户之间的报文交互都通过网关进行三层转发。这里,用户主机的ARP请求,既包含对于网关的请求,也包含对于其他用户IP的ARP请求。

代答网关ARP请求。替代用户主机给网关回应ARP报文。如果网关请求的表项在MFF设备上存在,就根据表项进行代答。如果表项还没有建立,则转发请求。以便达到减少广播的目的。

转发用户主机和网关发来的ARP应答。

监听网络中的ARP报文。更新网关IP地址和MAC地址对应表并广播。

四、抓包分析

arp请求表

arp协议的原理和工作过程 ARP协议详解(6)

arp回应包

arp协议的原理和工作过程 ARP协议详解(7)

,