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.交换机对数据帧的三种处理行为
- 泛洪:从交换机的一个接口收到数据帧,从所有的接口发出(广播帧,组播帧,未知单播帧)
- 转发:从交换机的一个接口收到数据帧,从其他的特定的接口发出(已知单播帧)
- 丢弃:从交换机的一个接口收到数据帧,直接丢弃
- 丢弃的三种情况
- 收到从一个接口的数据帧,又从该接口发出
- 收到数据帧长度小于64Bit
- 收到数据帧的数据链路层封装的尾部校验和错误
- 收到数据帧匹配黑洞表项
- 丢弃的三种情况
常见mac地址
地址 | 用处 |
---|---|
01-00-5E-0X-XX-XX | ipv4组播 |
01-80-C2-00-00-00 | STP报文发送目的地 |
01-80-C2-00-00-14 | ISIS L1 HELLO报文 |
01-80-C2-00-00-15 | ISIS L2 HELLO报文 |
33-33-XX-XX-XX-XX | IPV6组播 |
二层转发和三层转发
二层交换:
- 设备通过解析和学习以太网帧的源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 转发
-
-
三、端口安全
端口安全(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这两个物理接口上进行负载分担。