前文我们了解了二层端口安全技术相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16631222.html;今天我们来聊一聊MAC地址防漂移技术;

  首先我们来了解下什么叫做MAC地址漂移呢?所谓MAC地址漂移是指在交换机上的一个端口学习到的MAC在同VLAN下的其他端口也学习到了相同的MAC地址;即该MAC地址在同一交换机下的相同VLAN的多个端口之间来回漂浮,一会在这口,一会在那口;我们把这种现象叫做MAC地址漂移现象;发生MAC地址漂移现象的原因只有两种,一种是网络中存在环路;一种就是网络中存在恶意用户伪造MAC地址来欺骗交换机;

  防止MAC地址漂移核心思想

  1、我们知道默认情况下交换机的所有端口学习MAC地址的优先级是相同的(优先级为0),同时默认情况下交换机也是允许相同优先级学习到的MAC地址漂移;所以我们想要防止某个端口下学习到的MAC不会漂移到其他接口下,我们可以提高该端口学习到MAC地址的优先级,这样一来交换机如果再从其他端口学习到相同MAC地址,会对比优先级;这样一来我们就可以优先的防止相同MAC在其他端口学习到(相同MAC是指在我们配置的端口下正常该学习到的MAC);

  2、默认交换机是开启了允许相同优先级学习到的MAC漂移,我们关闭了该功能即可;

  3、MAC-Spoofing-Defend,该技术是用来配置信任端口来防止MAC地址漂移;具体就是我们在全局开启该功能以后,然后在信任的端口下使用相同命令配置对应端口为信任端口;这样一来,在信任端口下学习到的MAC地址在其他非信任端口下就不能够被学习;

  MAC地址漂移惩罚动作

  MAC地址漂移惩罚是指当交换机检查到有MAC地址漂移时,触发的保护动作;

  1、quit-VLAN:该动作表示退出当前VLAN;即当交换机检测到有MAC地址漂移,就就会把对应端口提出对应VLAN,从而来保护现有网络的稳定;

  2、err-down:该动作表示关闭接口,即一旦交换机检测到有MAC地址漂移,即把对应端口给shutdown掉;

  防止MAC地址漂移配置

  实验:如下拓扑,配置防止MAC地址漂移

  如上配置,我们在三个pc1和pc2正常通信的情况下,来查看mac地址表

  提示:可以看到pc1和pc2正常通行,交换机正常学习和记录对应mac地址和对应接口;

  当pc3模拟pc1发包,看看对应mac地址会发生变化呢?

  提示:可以看到当pc3一发包,对应交换机的mac地址表项就发生了变化,从原来的1口变为了3口;这是因为交换默认开了相同优先级的mac地址可以漂移;

  1、通过配置优先级来限制MAC地址漂移现象

  提示:上述命令表示在g0/0/1口学习到的mac地址,优先级为1;

  验证:先pc1发包,然后pc3再发包,看看对应交换机的mac地址表项是否会发生变化呢?

  提示:可以看到现在配置了mac地址学习优先级以后,pc3再次发包欺骗,对应交换机是不会学习pc3发送的源mac;同时交换机也告警,接口g0/0/1的mac在g0/0/3上浮动,请检查网络;

  2、通过取消相同优先级允许mac地址漂移来防止mac地址漂移

  删除优先级配置

  取消允许相同优先级为0的mac漂移

  提示:该命令在全局模式下使用,表示取消所有端口运行相同优先级为0mac地址浮动;

  验证:先pc1发包,然后pc3再发包,看看对应交换机的mac地址表项是否会发生变化呢?

  提示:可以看到交换机的mac地址表项没有发生变化,对应pc1的mac对应g0/0/1,pc2的mac对应g0/0/2;pc3攻击欺骗交换机,对应交换机没有学习pc3的源mac,同时也给出了告警;

  3、通过MAC-Spoofing-defend来限制mac地址漂移

  恢复交换机默认配置

  在交换机全局开启MAC-Spoofing-Defend

  在信任的接口下开启mac-spoofing-defend

  提示:这个是模拟器bug,在真机是可以正常开启的;

  配置发生MAC漂移的惩罚动作

  quit-vlan惩罚动作的配置

  把三个接口都加入到vlan10

  全局开启MAC地址漂移检测

  提示:不管后面的惩罚动作是quit-vlan,还是err-down,都需要先在全局开启MAC地址漂移检查功能,对应配置才会生效;

  在g0/0/3下配置发生mac地址漂移时,退出vlan10

  提示:需要惩罚那个接口,就在那个接口下配置即可;

  验证:先pc1正常发包,然后pc3攻击欺骗交换机,看看对应g0/0/3口是否会退出vlan 10 呢?

  提示:可以看到当交换机检侧出发生了MAC地址漂移后,对应会把g0/0/3口踢出vlan10,从而阻断g0/0/3的接口的流量流入vlan10;这里需要注意检测需要检测出一定次数才会触发这个保护动作;

  查看MAC地址漂移记录

  修改mac地址漂移记录老化时间

  提示:默认老化时间为300秒;

  修改quit-vlan默认恢复时间

  提示:默认quit-vlan恢复时间为10分钟;设置为0表示不自动恢复;

  再次查看漂移记录?对应接口是否回到vlan呢?

  提示:可以看到现在g0/0/3已经恢复到vlan10;

  err-down惩罚动作的配置

  验证:先pc1发包,然后pc3发包,看看对应接口是否会被down掉?

  提示:可以看到当mac地址漂移发生一定次数以后,对应接口就会down,并发出告警;

  查看err-down

  提示:可以看到g0/0/3是因为mac地址漂移而触发的err-down;并且对应没有恢复时间;

  设置err-down的恢复时间

  提示:设置了err-down恢复时间,它这个不针对之前的err-down,只对设置后发生mac地址漂移触发的err-down生效;如果在没有设置自动恢复时间,我们可以先把接口shutdown,然后再undo shutdown,来恢复接口;

  重新触发err-down,看看对应接口是否会自动恢复呢

  提示:可以看到当触发了err-down以后,对应接口会被down掉;当自动恢复时间到期以后,对应接口又会重新恢复到up状态;

作者:Linux-1874 出处:https://www.cnblogs.com/qiuhom-1874/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.