4、数据链路层故障(一):MAC地址冲突、ARP攻击、VLAN配置错误

数据链路层,说白了就是二层网络的核心。咱们平时说的交换机、MAC地址、ARP协议,全在这一层干活。很多接入故障,其实根源就在这儿。我处理过的网络问题里,至少有一半跟这层脱不了干系。

今天咱们就聊聊三个最常见的坑:MAC地址冲突、ARP攻击、还有VLAN配置错误。嗯,一个一个来。

4.1 MAC地址冲突

MAC地址冲突,听起来挺基础的对吧?但真遇到了,能把人折腾得够呛。

现象是什么?
用户突然断网,或者网络时断时续。你查交换机端口,发现MAC地址表在疯狂抖动——同一个MAC地址,一会儿出现在这个端口,一会儿又跑到那个端口。这就是典型的冲突信号。

为什么会这样?
说白了,就是局域网里有两台设备,用了同一个MAC地址。交换机一看,这地址怎么两边都在说话?它就开始“左右横跳”,不知道该把数据发给谁。结果就是,两台设备都受影响,甚至整个广播域都跟着遭殃。

我个人的排查习惯:
  • 第一步,登录核心交换机,查MAC地址表。命令:display mac-address | include xxxx-xxxx-xxxx
  • 第二步,看这个MAC地址出现在几个端口上。如果超过一个,基本实锤了。
  • 第三步,顺着端口往下找,看是哪个傻瓜交换机或者终端设备在搞鬼。

我在项目中遇到过一件事。某公司财务部突然集体断网,我过去一看,MAC地址表里有个地址在20多个端口上轮番出现。最后发现,是财务主管自己带了个家用路由器,把WAN口和LAN口接反了,导致路由器把内网MAC地址广播了出去。拔掉那台路由器,网络立刻恢复。

避坑指南: 我曾经建议客户在接入交换机上开启MAC地址学习数量限制,比如每个端口只允许学习10个MAC。这样就算有人乱接设备,也不至于把整个MAC地址表撑爆。

4.2 ARP攻击

ARP攻击,这玩意儿比MAC地址冲突更隐蔽,也更危险。它利用的是ARP协议的一个“天生缺陷”——无状态、无认证。说白了,谁都可以发ARP应答,交换机也不验证真假。

攻击原理:
攻击者伪造一个ARP应答包,告诉网关:“我是某某IP,我的MAC地址是XX:XX:XX:XX:XX:XX”。网关信了,就把本该发给那个IP的数据,全转发给了攻击者。这就是典型的ARP欺骗。

症状表现:

  • 用户能上网,但速度极慢,或者某些网站打不开
  • 网关ping不通,或者延迟忽高忽低
  • 内网出现大量ARP广播包

你想想看,如果攻击者把网关的IP也骗了,那所有用户的数据都得经过他手里过一遍。这不光是断网的问题,还是严重的安全隐患。

注意: ARP攻击不一定要靠专业工具。一个懂点网络的人,用一条命令就能搞破坏。比如在Windows下:arp -s 192.168.1.1 00-11-22-33-44-55,就能把网关的MAC地址静态绑定成一个错误的地址。

怎么防?
我个人建议,从三个层面下手:

  1. 端口安全: 在交换机上配置端口安全,限制每个端口允许通过的MAC地址数量。命令示例:port-security max-mac-num 5
  2. DAI(动态ARP检测): 这是思科和华为交换机都支持的功能。它会检查ARP包的真实性,只有DHCP Snooping表里有的IP+MAC组合,才允许通过。
  3. 静态ARP绑定: 在核心设备和网关上,把关键IP(比如网关、服务器)的ARP条目写成静态的。这样攻击者再怎么发假包,也改不了。
一个小技巧: 我曾经在排查ARP攻击时,用Wireshark抓包,过滤条件写 arp.duplicate-address-detection 或者 arp.opcode == 2。如果看到同一个IP对应多个MAC地址,那基本就是有人在搞鬼了。

4.3 VLAN配置错误

VLAN配置错误,是我见过最“低级”但也是最常见的故障。很多时候,就是少配了一个VLAN,或者端口类型搞错了,结果整个业务全瘫。

典型错误一:Access端口和Trunk端口搞混

Access端口只允许一个VLAN通过,Trunk端口允许多个。如果你把接PC的端口配成了Trunk,PC可能拿不到IP。反过来,如果你把交换机互联的端口配成了Access,那不同VLAN的数据就传不过去。

我记得有一次,客户说新装的几台电脑死活上不了网。我过去一看,交换机互联端口配的是Access,只允许VLAN 10通过。但新电脑在VLAN 20里,数据根本过不去。改成Trunk,允许VLAN 10和20通过,问题立刻解决。

典型错误二:Native VLAN不匹配

Trunk端口上有个Native VLAN的概念。默认是VLAN 1。如果两端交换机的Native VLAN配得不一样,那不打标签的数据帧就会跑到错误的VLAN里去。轻则网络不通,重则造成环路。

检查命令:
  • 华为/华三:display port vlan
  • 思科:show interfaces trunk

重点看两端的Native VLAN是否一致,以及允许通过的VLAN列表是否匹配。

典型错误三:VLAN被删了或者没创建

这个听起来很傻,但真有人犯。比如你配了端口属于VLAN 100,但交换机上根本没创建VLAN 100。那这个端口就相当于“黑户”,数据发不出去也收不进来。

警告: 别在业务高峰期乱删VLAN。我曾经见过有人想清理配置,结果把正在用的VLAN给删了,导致整个部门断网半小时。嗯,那场面,相当尴尬。

知识体系总览

下面这张图,是我梳理的数据链路层故障排查逻辑。你可以把它当成一个“决策树”来用。

数据链路层故障排查逻辑 数据链路层故障 MAC地址冲突 ARP攻击 VLAN配置错误 查MAC地址表抖动 限制端口MAC学习数量 抓包看ARP应答异常 开启DAI + DHCP Snooping 检查端口类型与Native VLAN 确认VLAN已创建且允许通过 排查口诀:先看MAC表,再查ARP包 最后核对VLAN配置,三层联动效率高

好了,这一章的内容就到这儿。数据链路层的故障,说难不难,说简单也不简单。关键是养成好的排查习惯——从MAC地址表入手,结合抓包工具,再核对VLAN配置。这三板斧用好了,大部分二层问题都能搞定。

可可精品资料库