MAC地址、MAC地址表、端口安全、MAC地址漂移

一、MAC地址

mac地址主要工作在数据链路层,主要用于单个广播域内的数据传输

1.组成

总共48Bit,前24bit是通过向IETF等机构申请用来标识厂商的代码,后24bit由是厂商分配给产品的唯一数值

在这里插入图片描述

2.作用

  • mac地址工作在数据链路层

  • 数据的封装和解封装

  • 定义网络设备的位置

3.分类

  • 物理MAC地址:MAC地址的第8bit为0,唯一标识以太网上的一个终端,是全球唯一的硬件地址
  • 广播地址:全为1的MAC地址,用来标识LAN上面的所有终端(ffff:ffff:ffff)
  • 组播MAC地址:MAC地址的第8bit为1,标识LAN上面的一组终端

4.其他

  • 如果是终端设备,那么一个网卡就会有一个mac地址
  • 如果是路由器,那么路由器的接口都是三层接口,所以每一个接口都会存在一个mac地址;

5.交换机对数据帧的三种处理行为

  • 泛洪:从交换机的一个接口收到数据帧,从所有的接口发出(广播帧,组播帧,未知单播帧)
  • 转发:从交换机的一个接口收到数据帧,从其他的特定的接口发出(已知单播帧)
  • 丢弃:从交换机的一个接口收到数据帧,直接丢弃
    • 丢弃的三种情况
      1. 收到从一个接口的数据帧,又从该接口发出
      2. 收到数据帧长度小于64Bit
      3. 收到数据帧的数据链路层封装的尾部校验和错误
      4. 收到数据帧匹配黑洞表项

常见mac地址

地址用处
01-00-5E-0X-XX-XXipv4组播
01-80-C2-00-00-00STP报文发送目的地
01-80-C2-00-00-14ISIS L1 HELLO报文
01-80-C2-00-00-15ISIS L2 HELLO报文
33-33-XX-XX-XX-XXIPV6组播

二层转发和三层转发

二层交换:

  • 设备通过解析和学习以太网帧的源MAC来维护MAC地址与接口的对应关系(保存MAC与接口对应关系的表称为MAC表),通过其目的MAC来查找MAC表决定向哪个接口转发

三层交换:

  • 在完成对收到的第一个新数据流进行路由后,产生一个MAC地址与IP地址的映射表,当具有相同地址信息的数据流再次通过时,即根据此表直接在二层完成转发,即“一次路由,多次交换”,有效提高了数据包转发的效率。

交换机收到一个数据帧,如何判断是二层转发还是三层转发?

  • 通过报文中DMAC地址,如果DMAC地址是交换机本身,说明执行三层转发;

  • 如果DMAC地址不是交换机本身,说明执行二层转发;

交换机收到组播MAC数据帧一定会进行泛洪?

  • 如果开启IGMP-snooping机制,从路由器端口收到组播流量,根据二层组播转发表项转发组播流量

二、MAC地址表

组成内容

MAC地址–VLAN–接口–MAC地址表形成的类型

在这里插入图片描述

作用

指导交换机转发数据

  • 如果MAC地址表中包含与报文目的MAC地址对应的表项,则直接通过该表项中的出接口转发该报文;

  • 如果MAC地址表中没有包含报文目的MAC地址对应的表项时,设备将采取广播方式在所属VLAN内除接收接口外的所有接口转发该报文

MAC地址表的分类

  • 动态表项(dynamic)

    • 由接口通过报文中的源MAC地址学习获得,表项可老化,默认老化时间300秒
    • 在系统复位、接口板热插拔或接口板复位后,动态表项会丢失
  • 静态表项(static)

    • 用户手工配置,并下发到各接口板,表项不可老化。
    • 在系统复位、接口板热插拔或接口板复位后,保存的表项不会丢失。
  • 黑洞表项(blockhole)

    • 用户手工配置,并下发到各接口板,表项不可老化。

    • 配置黑洞MAC地址后,源MAC地址或目的MAC地址是该MAC的报文将会被丢弃。

    • 配置

      • mac-address blackhole 5489-9870-286B vlan 1
        ##一定要敲上vlan,否则无效
        ##没有配置vlan,默认使用vlan 1 转发
        

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bul2C2c4-1611158838511)(C:\Users\94435\AppData\Roaming\Typora\typora-user-images\1611154169710.png)]

三、端口安全

端口安全(Port Security)通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC、安全静态MAC和Sticky MAC),阻止非法用户通过本接口和交换机通信,从而增强设备的安全性。

安全MAC地址分类

  • 安全动态MAC地址

    • 使能端口安全而未使能Sticky MAC功能时转换的MAC地址
    • 设备重启会丢失表项,需要重新学习;缺省情况下不会被老化,只有在配置老化时间后才会
  • 安全静态MAC地址

    • 使能端口安全时手工配置的静态MAC地址。
    • 不会被老化,重启后不会表项不会丢失
  • Sticky MAC地址

    • 使能端口安全后又同时使能Sticky MAC功能后转换到的MAC地址。
    • 不会被老化,重启后不会表项不会丢失

从学习方式看,动态和sticky都是通过接口接收数据帧动态学习到,静态是通过手工配置

从mac地址失效上看,静态和sticky的表项不会在设备重启后失效,动态在设备重启会丢失表项

端口安全保护动作

动作解释
restrict丢弃源MAC地址不存在的报文并且上报告警(默认行为)
protect丢弃源MAC地址不存在的报文
shutdown接口状态被置为error-down,并上报告警

端口安全经常使用的两种场景

  • 应用在接入层设备,通过配置端口安全可以防止仿冒用户从其他端口攻击。
  • 应用在汇聚层设备,通过配置端口安全可以控制接入用户的数量。

接入层使用时注意:

如果接入用户变动比较频繁,可以通过端口安全把动态MAC地址转换为安全动态MAC地址。这样可以在用户变动时,及时清除绑定的MAC地址表项。

如果接入用户变动较少,可以通过端口安全把动态MAC地址转换为Sticky MAC地址。这样在保存配置重启后,绑定的MAC地址表项不会丢失。

配置

配置安全MAC功能

interface GigabitEthernet0/0/1		//进入接口
port-security enable      			//使能端口安全
port-security protect-action shutdown		//保护动作为shutdown
port-security aging-time 10			//配置老化时间

配置Sticky MAC功能

interface GigabitEthernet0/0/2
port-security enable
port-security mac-address sticky		\\使能接口Sticky MAC功能

四、MAC地址漂移

定义

  • MAC地址漂移是指设备上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项

两个端口都在发送消息时,会使得交换机MAC地址表频繁动荡,修改MAC地址对应的出接口。多次修改后,交换机会察觉到MAC地址发生漂移

在这里插入图片描述

出现场景

  • 环路
  • VRRP主备网关的切换
  • 攻击者接入
  • 单机双网卡绑定一个MAC地址

影响

  • MAC地址表的动荡,数据包无法正常到达目的地的,消耗设备的性能

如何避免

  • 提高接口MAC地址学习的优先级–默认为0,越大越优先,低优先级不能覆盖高优先级

    • [Huawei-GigabitEthernet0/0/2]mac-learning priority 3
      ##配置接口学习MAC地址的优先级,缺省情况下,接口学习MAC地址的优先级为0,数值越大优先级越高
      
  • 不允许相同优先级的接口发生MAC地址表项覆盖

    • undo mac-learning priority 3 allow-flapping 		
      ##配置不允许相同优先级的接口发生MAC地址漂移
      
    • 主机频繁移动的场景不适用

  • IPSG:基于绑定表对IP报文和MAC地址进行匹配检查

    • [Huawei-vlan1]ip source check  user-bind enable
      
  • STP等二层破环协议

  • 配置MAC-spoofing-defend功能

    • 由于用户侧的行为无法控制,可能发生用户侧仿冒网络侧服务器MAC地址发送报文,造成其他用户无法访问网络侧服务器。使用该命令将网络侧接口配置为信任接口后,该接口学习到的MAC地址在其他接口将不会学习到,可以防止用户侧仿冒网络侧服务器MAC地址发送报文。如果需要将接口配置为信任接口,需要先使用使能全局MAC-spoofing-defend功能。

MAC地址漂移的检测

基于全局检测

会检测设备上所有的MAC地址是否发生了漂移

默认开启,默认安全级别是middle:MAC地址发生10次迁移后,系统认为MAC地址漂移

MAC地址漂移的处理动作:触发接口error-down或者退出VLAN操作(缺省情况下没有开启处理动作)

配置:

##接口视图下
mac-address flapping trigger quit-vlan  //发生漂移该接口退出当前VLAN 变更为vlan 1
mac-address flapping trigger error-down		//生漂移将接口down

##全局视图下
mac-address flapping detection			\\配置全局MAC地址漂移检测功能
error-down auto-recovery cause mac-address-flapping interval 50		//接口发生漂移被down后恢复的时间
mac-address flapping quit-vlan recover-time 20		//退出vlan恢复时间,默认为10S
mac-address flapping aging-time 60					//配置MAC地址漂移表项的老化时间,默认为300S

基于VLAN检测

只会检测配置了的VLAN的MAC地址是否发生漂移

MAC地址漂移的处理动作:触发接口error-down或者发送告警

配置

##VLAN视图下,两种配置方式

loop-detect eth-loop alarm-only  
###一旦交换机检测到该VLAN内发生了MAC地址漂移,交换机仅仅产生相应的告警信息(不会阻塞发生MAC地址漂移的接口)

loop-detect eth-loop block-mac block-time 10 retry-times 2  
###如果检测到漂移则将接口堵塞,接口将被阻塞10s,10s之后接口会被放开并重新进行检测,此时该接口可以正常收发数据;如果20s内没有再检测到MAC地址漂移,则接口的阻塞将被彻底解除;但是如果20s内再次检测到MAC地址漂移,则再次将该接口阻塞,最大重复次数为2次(用retry-times关键字指定),如果交换机依然能检测到该接口发生MAC地址漂移,则永久阻塞该接口。
特殊场景配置

关闭特定的VLAN的MAC地址漂移检测

mac-address flapping detection exclude vlan X 
  • VRRP的场景。

  • Server在这两张网卡上部署了负载分担模式的网卡绑定,即将Eth1及Eth2捆绑成一个逻辑接口,并且将外出的流量在Eth1及Eth2这两个物理接口上进行负载分担。

posted @ 2021-01-21 00:11  dragon's  阅读(499)  评论(0编辑  收藏  举报