交换机MAC地址基础知识详解
1、MAC表简介
MAC(Media Access Control,媒体访问控制)地址用来定义网络设备的位置。
MAC地址由48比特长、12位的16进制数字组成,0到23位是厂商向IETF等机构申请用来标识厂商的代码,24到47位由厂商自行分派,是各个厂商制造的所有网卡的一个唯一编号。
MAC地址可以分为3种类型:
1、物理MAC地址:
这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址;
2、广播MAC地址:
全1的MAC地址为广播地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备;
3、组播MAC地址:
除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。其中以01-80-c2开头的组播MAC地址叫BPDU MAC,一般作为协议报文的目的MAC地址标示某种协议报文。
2、MAC地址表
设备内有一张MAC地址表,简称MAC表。
MAC表记录了相连设备的MAC地址、接口号以及所属的VLAN ID之间的对应关系。在转发数据时,路由设备根据报文中的目的MAC地址和VLAN ID查询MAC地址表,快速定位出接口,从而减少广播。
3、基于MAC表的报文转发
设备在转发报文时,根据MAC地址表项信息,会采取以下两种转发方式:
1、单播方式:
当MAC地址表中包含与报文目的MAC地址对应的表项时,设备直接将报文从该表项中的转发出接口发送。
2、广播方式:
当设备收到的报文为广播报文、组播报文或MAC地址表中没有包含对应报文目的MAC地址的表项时,设备将采取广播方式将报文向除接收接口外同一VLAN内的所有接口转发。
4、MAC地址表分类
MAC地址表项分为:动态表项、静态表项和黑洞表项。
1、动态表项:
由接口通过源MAC地址学习获得,表项有老化时间。
2、静态表项:
由用户手工配置,并下发到各接口板,表项不老化。
3、黑洞表项
用于指示丢弃含有特定源MAC地址或目的MAC地址的数据帧,由用户手工配置,并下发到各接口板,表项不老化。在系统复位、接口板热插拔或接口板复位后,动态表项会丢失,而保存的静态表项和黑洞表项不会丢失。
5、MAC地址表项的生成方式
MAC地址表项的生成方式有两种:自动生成、手工配置。
1、自动生成MAC表项:
一般情况下,MAC表是设备通过源MAC地址学习过程而自动建立的。
例如,当与SwitchA连接的HostB向SwitchA发送数据时,SwitchA从数据帧中解析出源MAC地址(即HostB的MAC地址),连同接口号添加到MAC地址表中。以后SwitchA接收到发送给HostB的数据,通过查询MAC表就可以得到正确的发送接口。
MAC表中自动生成的表项并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到刷新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前记录被刷新,则该表项的老化时间重新计算。
2、手工配置MAC表项:
设备通过源MAC地址学习自动建立MAC地址表时,无法区分合法用户和黑客用户的报文,带来了安全隐患。如果黑客用户将攻击报文的源MAC地址伪装成合法用户的MAC地址,并从设备的其它接口进入,设备就会学习到错误的MAC表项,于是就会将本应转发给合法用户的报文转发给黑客用户。
为了提高接口安全性,网络管理员可手工在MAC表中加入静态MAC地址表项,将用户与接口绑定,从而防止假冒身份的非法用户骗取数据。
通过手工配置黑洞MAC,可以限制指定用户的流量不能从设备通过,防止非法用户的攻击。
手工配置的MAC表项优先级高于自动生成的表项。
6、MAC地址老化
为适应网络的变化,MAC表需要不断更新。
MAC表中自动生成的表项(即动态表项)并非永远有效,每一条表项都有一个生存周期,到达生存周期仍得不到刷新的表项将被删除,这个生存周期被称作老化时间。如果在到达生存周期前记录被刷新,则该表项的老化时间重新计算。
图 MAC地址老化示意图
如上图所示,设备MAC地址老化时间设置为T。在t1时刻有源MAC地址为00e0-fc00-0001、VLAN为1的报文从某接口进入。假定该接口已加入VLAN 1。如果之前MAC地址表不存在关于(MAC: 00e0-fc00-0001,VLAN: 1)的任何种类表项,那么这个地址就会作为动态MAC地址表项学习到地址表里,同时该表项的命中标志位被置1。
设备周期性(每经过T时间)地对所有学习到的动态MAC地址表项进行检查。如在t2时刻,检查到动态表项(MAC: 00e0-fc00-0001, VLAN: 1)的命中标志位为1,则将该表项的命中标志位置为0,且不删除这条表项。
如果在t2时刻和t3时刻之间有源MAC地址为00e0-fc00-0001、VLAN为1的报文进入设备,则将命中标志重新设置为1。如果在t2时刻和t3时刻之间没有这种报文进入设备,那么该表项的命中标志位会一直保持为0。在t3时刻,设备检查到该表项的命中标志位为0,认为该表项的老化时间到达,将删除此条表项。
如上所述,通过自动老化,一条动态表项在MAC地址表中存在的最短时间是设备所配置的老化时间T到2T之间。
设备MAC地址老化时间可设置,通过设置此时间,可以灵活控制动态学习到的MAC表项在MAC地址表中存在的时间。
7、禁止学习MAC,限制MAC地址数
由于MAC表的容量是有限的,当黑客伪造大量源MAC地址不同的报文并发送到设备后,设备上的MAC地址表项资源可能会被耗尽。此时即使它收到正常的报文,也无法学习到报文中的源MAC地址。
为了解决以上问题,设备提供了两种方式对MAC地址学习进行限制:
基于VLAN、流行为或接口禁止学习MAC
基于VLAN或接口进行MAC地址数限制
禁止学习MAC后,则接口将不再自动学习到新的动态MAC表项,之前学习到的动态表项可以等待老化时间到达后自动删除,也可以手工执行删除MAC命令,将这些表项删除。
限制学习的MAC地址数,即限制VLAN或接口学习动态MAC表项的最大数目。
当VLAN或接口学习到的MAC表项达到最大数目,则该VLAN或接口将不能再学习新的MAC表项,直到它以前学习到的MAC表项老化。
多数情况下,一个黑客发送的攻击报文是从同一个接口进入设备,在这个接口上配置禁止学习MAC或配置MAC地址学习限制,可避免攻击报文将整个设备的MAC地址表填满。
8、端口安全(安全MAC地址)
端口安全(Port Security)功能将设备接口学习到的MAC地址变为安全MAC地址(包括安全动态MAC、安全静态MAC和Sticky MAC),可以阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备安全性。
安全MAC地址分为:安全动态MAC、安全静态MAC与Sticky MAC。定义及区别如下:
1、安全动态MAC地址:
使能端口安全而未使能Sticky MAC功能时学习到的MAC地址。缺省情况下,安全动态MAC地址不会被老化,设备重启后安全动态MAC地址会丢失,需要重新学习。
2、安全静态MAC地址:
使能端口安全而未使能Sticky MAC功能时手工配置的静态MAC地址,安全静态MAC地址不会被老化。
3、Sticky MAC地址:
使能端口安全后又使能Sticky MAC功能后学习到的MAC地址。Sticky MAC地址不会被老化,保存配置后重启设备,Sticky MAC地址不会丢失,无需重新学习。
未使能端口安全功能时,设备的MAC地址表项可通过动态学习或静态配置。
当某个接口使能端口安全功能后,该接口上之前学习到的动态MAC地址表项会被删除,之后学习到的MAC地址将变为安全动态MAC地址,此时该接口仅允许匹配安全MAC地址或静态MAC地址的报文通过。
若接着使能Sticky MAC功能,安全动态MAC地址表项将转化为Sticky MAC表项,之后学习到的MAC地址也变为Sticky MAC地址。
直到安全MAC地址数量达到限制,将不再学习MAC地址,并对接口或报文采取配置的保护动作。
9、MAC地址漂移
MAC地址漂移即设备上一个接口学习到的MAC地址在同一VLAN中另一个接口上也学习到,后学习到的MAC地址表项覆盖原来的表项。
正常情况下,网络中不会在短时间内出现大量MAC地址漂移的情况。
出现这种现象一般都意味着网络中出现环路,形成广播风暴。处于风暴影响中的每个交换机节点都有MAC地址漂移的现象。
因此,可以利用该现象来监控网络中是否成环。
10、MAC地址防漂移
网络中产生环路或非法用户进行网络攻击都会造成MAC地址发生漂移,导致MAC地址不稳定。
可以通过两种方式来避免这种情况:
1、提高接口MAC地址学习优先级。
当不同接口学到相同的MAC地址表项时,高优先级接口学到的MAC地址表项可以覆盖低优先级接口学到的MAC地址表项,防止MAC地址在接口间发生漂移。
2、不允许相同优先级的接口发生MAC地址表项覆盖。
当伪造网络设备所连接口的优先级与安全的网络设备相同时,后学习到的伪造网络设备的MAC地址表项不会覆盖之前正确的表项。
但如果网络设备下电,此时会学习到伪造网络设备的MAC地址,当网络设备再次上电时将无法学习到正确的MAC地址。
图 MAC防漂移应用组网图
如上图所示,为防止非法用户伪造服务器MAC地址入侵Switch,可以提高服务器侧接口Port1的MAC地址学习优先级。
11、MAC地址漂移检测
MAC地址漂移检测是交换机对MAC地址漂移现象进行检测的功能。
MAC地址漂移检测是利用MAC地址学习时接口跳变实现的,因此能提供的信息与MAC地址学习相关,包括MAC地址、VLAN,以及跳变的接口等诊断信息。其中跳变的接口即为可能出现环路的接口。网络管理员根据网络中每台设备上出现的跳变接口,以及网络拓扑,判断环路的源头。
图 MAC地址漂移检测组网图
如上图网络中,若SwitchC和SwitchD之间误接网线,则SwitchB、SwitchC、SwitchD之间形成环路。
当SwitchA上Port1接口从网络中收到一个广播报文后转发给SwitchB,该报文经过环路,会被SwitchA上Port2接口收到。
在接口Port2上配置MAC地址漂移检测,此时SwitchA会感知到MAC地址学习接口跳变的现象。若连续出现此现象,则在SwitchA上可以判断出现了MAC地址漂移。
MAC地址漂移检测是单台设备根据MAC学习变化感知到流量拓扑变化,是一种单点技术,无法精确感知网络拓扑。因而该技术应用有一定的场景限制,建议使用在下挂网络成环场景。
发表评论