zoukankan      html  css  js  c++  java
  • HCIE_交换篇_MAC地址


    HCIE之路----交换篇

    1、MAC

    (1)mac-address

    关于MAC地址,拿我自己的笔记本电脑来举例子,是这样的B2-D1-6B-C3-46-F3,一共12个字符,但是经常在书中被说成是48位的,这是为何?为什么这么说呢?每一个字符都代表4位,12乘以4正好是48位,为什么说一个字符代表4呢?这是怎么算的呢?是通过16进制算的,所谓的16进制就是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中每一个字符都可以通过四个二进制来表示,比如4,那就是0100,A是1010,F是1111。

    MAC地址的前24位唯一标识符,也被称为OUI,通常这个这24bit可以判断网络设备厂商。

    MAC地址分为三种:单播、广播、组播,如何区分呢?通过第二个16字符转换成内核之后的最后一位,如果最后一位如果是0的话,那就是单播,如果是1就是组播,如果全是1,那就是广播。

    (2)交换机工作原理

    交换机的行为有三种行为:泛洪(flooding),转发(forward),丢弃(discrad)

    交换机遇到广播报文时会直接泛洪,但面对单播数据帧时,就得视情况而定。当交换机收到的数据帧是源和目标mac一样时,这明显不合理,哪有自己给自己发数据帧的,交换机面对这种操蛋的行为会直接将此数据帧丢弃;很少有上述这种操蛋的数据帧,大多数都是正常的数据帧,交换机面对正常的数据帧时,会根据其目标mac查找mac地址表,如果表里面有对应的表项,则根据表项对应的端口转发,如果没有的话,就会泛洪。

    (3)MAC地址表

    MAC地址表相当于二层的路由表,是数据帧转发的依据,MAC地址表是物理接口与MAC地址的对应关系,此外,还有vlan信息,MAC地址的类型,如下所示:

    <Huawei>dis mac-address
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-989e-2544 1           -      -      GE0/0/2         dynamic   0/-         
    5489-987d-5765 1           -      -      GE0/0/1         dynamic   0/-         
    -------------------------------------------------------------------------------
    Total matching items on slot 0 displayed = 2 
    

    1、交接机是通过源MAC地址进行学习的,原因也很简单,因为源MAC是确定的,而目的MAC是要通过泛洪才能找到的。

    2、交换机学习MAC地址表往往是在正式通信之前,就是说,当我们ping某一个主机时,要先arp广播,在arp广播的过程当中,mac地址表就已经学习完成了。

    3、一个交换机接口是可以学习多个MAC地址的,通常一个交换机的机连口学习到的MAC地址表比较多,我们可以通过查看接口下的MAC地址来判断下连了多少台主机,比如我就可以在我们公司的公网口查看一下,而且还可以通过端口安全做一个限制。

    MAC地址表并不是无限大的,这一点很好理解,就像一个电脑,文件也不可能是无限大的,起码是受到硬盘和内存的限制。这一个电脑硬盘满了之后,还能继续向里面存东西吗?肯定是不能了。交换机也是这样,如果MAC地址表满了,那它还能继续学习吗?也不能了,不能了会发生什么现象呢?收到数据帧如何处理呢?倒是不会丢弃,面对这种未知单播包,交换机会泛洪呀,但是回复的数据包又无法学习到MAC地址表当中,因为已经满了,所以数据帧就无法转发出去,这就是二层泛红攻击的原理,我们可以通过端口安全,限制端口学习到MAC地址数量,这样MAC地址表就不会被打满。

    MAC地址表默认是有老化时间的,默认是300s,这是可以调整的,所以想要二层泛红攻击有效的话得保证持续性,否则,MAC地址表内的地址失效了之后,之前的攻击效果也就没有了。

    #老化时间的修改方法
    mac-address aging-time 300 
    

    2、限制MAC地址学习数量

    (1)静态表项MAC

    动态表项

    动态表项是最常见的表项,就是动态学习到的表项,这个表项有什么特点呢?由于是动态的,所以它很不靠谱,有老化时间,而且down了之后,表项就消失了。

    静态表项

    静态表项是手工配置的,既然是手工配置的,那就不会老化,接口down或设备重启啥的还是会存在,也就是说手工配置的会写入到内存或内存当中。一条静态MAC地址只能绑定一个物理接口(验证一下),但一个物理接口可以绑定多个MAC地址(验证一下),这一点也很好理解。

    [Huawei]mac-address static 5489-987D-5765 GigabitEthernet 0/0/1 vlan 1
    [Huawei]
    Oct 14 2020 23:23:01-08:00 Huawei DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.2011.5
    .25.191.3.1 configurations have been changed. The current change number is 6, th
    e change loop count is 0, and the maximum number of records is 4095.
    
    #同样的MAC是不能绑定到其它接口上的,只能绑定在一个物理接口之上
    [Huawei]mac-address static 5489-987D-5765 GigabitEthernet 0/0/2 vlan 1
    Error: The same MAC address has been configured on another port.
    
    #通过dis mac-address可以查看上述做的配置
    [Huawei]dis mac-address 
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-98df-6666 1           -      -      GE0/0/1         static    -           
    -------------------------------------------------------------------------------
    Total matching items on slot 0 displayed = 1 
    
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-988d-0dd0 1           -      -      GE0/0/10        dynamic   0/-         
    5489-9811-1111 1           -      -      GE0/0/4         dynamic   0/-         
    -------------------------------------------------------------------------------
    Total matching items on slot 0 displayed = 2 
    
    

    在某个接口上绑定了MAC地址之后,如果在其它接口上学到的话,就会丢弃,无论原接口是否是down的。

    黑洞MAC
    黑洞MAC其实十分简单,就是交换机一旦遇到我们配置黑洞MAC就丢弃,不转发

    #必须得加上vlan信息,否则不生效
    [Huawei]mac-address blackhole 5489-98DF-6666 vlan1
    [Huawei]dis mac-ad
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-98df-6666 -           -      -      -               blackhole -           
    -------------------------------------------------------------------------------
    Total matching items on slot 0 displayed = 1 
    
    MAC address table of slot 0:
    -------------------------------------------------------------------------------
    MAC Address    VLAN/       PEVLAN CEVLAN Port            Type      LSP/LSR-ID  
                   VSI/SI                                              MAC-Tunnel  
    -------------------------------------------------------------------------------
    5489-98df-6666 1           -      -      GE0/0/1         dynamic   0/-         
    5489-988d-0dd0 1           -      -      GE0/0/10        dynamic   0/-         
    -------------------------------------------------------------------------------
    

    (3)限制MAC地址学习数量

    可以限制某个接口学习MAC地址的数量,而且还可以设置动作,当超过某个数量时如何处理,默认的处理的方法有丢弃和转发,默认是丢弃。

    ## 限制学习数量
    mac-limit maximum 2
    
    ## 处理动作,默认是丢弃
    mac-limit acition {discard| forword}
    
    ## 还可以决定是否报警,默认是报警
    mac-limit alarm {enable|disenable}
    

    注意,如果数量已经到达上限,动作是转发时,会转发,但是不记录到MAC地址表项当中,以上配置当中的具休的MAC地址不会保存,超时就重新学习。

    3、接口安全

    这个功能与port-limit是有冲突的,所以尽量不要同时存在,如果要同时存在的话,端口安全优先生效

    int g0/0/1
    	port-security enable
    	port-security max-mac-num 1
    	port-security port-action protect|restrict|shutdown
    
    ## 报警信息如下
    [Huawei-GigabitEthernet0/0/1]
    Oct 17 2020 20:58:10-08:00 Huawei L2IFPPI/4/PORTSEC_ACTION_ALARM:OID 1.3.6.1.4.1
    .2011.5.25.42.2.1.7.6 The number of MAC address on interface (6/6) GigabitEthern
    et0/0/1 reaches the limit, and the port status is : 1. (1:restrict;2:protect;3:s
    

    解释一下动作,

    • protect,代表数量到了之后就丢弃 ,不报警
    • restrict,代表数量到了之后就丢弃,报警(默认)
    • shutdown,代表数量到了之后就down,并报警

    还有一个补充功能,就是当地址因违规之后被down之后,过一段还能恢复

    error-down auto-recovery cause port-security interval 30,30秒之后自动恢复,配置之后才生效,之前不生效。

    注意:port-security所保存的mac地址,缺省不会被老化,但在接口down之后就会失效,怎么办呢?就出来了sticky功能,这个功能与上述功能相比,就是他将保存的安全MAC彻底保存下来了,接口断电重启之后,也不会失效。

    int g0/0/1
    	port-security enable
    	port-security max-mac-num 1
    	port-security mac-address sticky
    	
    	
    #可以手动在接口上通过sticky功能加MAC
    [Huawei-GigabitEthernet0/0/1]port-secur mac-add sticky 5489-98DF-6623 vlan 1
    

    思考题

    数据封装的过程
    什么是BUM帧(BUM是广播、组播、未知单播的缩写),交换机遇到组播帧不一定会泛洪,如果配置了IGMP的相关配置,就可能不会泛洪。
    MAC地址表满了收到数据帧怎么办呢?
    报文的二层一定是封装MAC地址吗?不一定,只有以太网是这么做,二层除了以太网之外,还有ppp,还有帧中继、HDLC
    IPV6的组播地址范围?
    常见的组播MAC地址?常见的组播MAC:0180c2开头的,是生成树报文的MAC地址

  • 相关阅读:
    使用ServiceStackRedis链接Redis简介
    浅谈SQL SERVER中事务的ACID
    Sql Server查询性能优化之走出索引的误区
    Redis命令总结
    TSQL查询进阶—理解SQL Server中的锁
    SQL Server 2005 分区表实践——分区切换
    SQL Server Profiler 模板
    深入浅出SQL Server中的死锁
    不同的单元中的类可以共用同一个命名空间
    从硬盘上装xp手记(2005.8.14 )
  • 原文地址:https://www.cnblogs.com/yizhangheka/p/13812273.html
Copyright © 2011-2022 走看看