数据链路层排查:MAC地址表学习、STP生成树协议故障、VLAN划分与Trunk链路问题
数据链路层,说白了就是二层网络的核心。很多刚入行的朋友总觉得这层简单,不就是转发个帧嘛。但我在项目中踩过的坑,十有八九都出在这一层。今天咱们就聊聊三个最让人头疼的问题:MAC地址表怎么学歪了、STP生成树为什么把网络搞瘫了、VLAN和Trunk链路怎么配都不通。
MAC地址表学习机制与故障排查
交换机怎么知道数据该往哪个端口送?靠的就是MAC地址表。这张表记录了每个MAC地址从哪个端口学来的。我习惯把它想象成一张「门牌号登记表」——谁住在哪个房间,交换机心里得有数。
MAC地址表学习流程:
- 收到一个帧,先看源MAC地址
- 查表,如果没记录,就把源MAC和入端口绑定
- 看目的MAC,如果表里有,就从对应端口转发
- 如果表里没有,就泛洪到所有端口(除了入端口)
我在项目中遇到过这么个事:某天早上,整个办公网突然卡得像蜗牛。查了半天,发现是有人私接了一个小交换机,形成了环路。MAC地址表在那台小交换机上疯狂抖动,一会儿学这个端口,一会儿学那个端口。说白了,就是MAC地址表在「翻跟头」。
排查技巧:用 show mac address-table 查看MAC表。如果发现同一个MAC地址出现在多个端口,基本可以断定有环路。这时候别慌,先拔掉可疑的线,再查STP状态。
还有一个常见问题:MAC地址表老化时间。默认是300秒,但有些场景下需要调整。比如在频繁切换的网络里,老化太快会导致不必要的泛洪。我个人习惯在核心交换机上把老化时间设到600秒,减少广播风暴的风险。
STP生成树协议故障处理
STP这东西,很多人觉得它自动运行就不用管了。嗯,这里要注意——它确实能防环路,但配置不当照样出问题。
我记得有一次帮客户做网络割接,新加了一台交换机。结果一上线,整个网络瘫痪了。为什么?因为新交换机的桥优先级默认是32768,比老交换机还低。STP重新计算,把原本的根桥给换了,导致所有链路都重新收敛。那几分钟里,全网断联。
STP故障常见原因:
- 根桥选择错误——优先级没规划好
- 端口角色异常——比如应该阻塞的端口变成了转发
- 收敛时间过长——默认50秒,业务根本等不了
- BPDU保护没开——有人私接交换机导致拓扑变化
怎么排查?我一般三步走:
show spanning-tree看根桥是谁,端口角色对不对- 检查端口状态——是不是卡在Listening或Learning阶段
- 看日志——有没有TCN(拓扑变更通知)频繁出现
你想想看,如果日志里每秒都在刷TCN,那说明网络拓扑一直在变。这时候STP根本收敛不了。我曾经遇到一个案例,就是因为某台服务器的网卡坏了,每秒发一次链路抖动,搞得整个STP一直在重新计算。
避坑指南:我曾经在接入层交换机上忘了开PortFast,结果一台PC插上去,等了50秒才能上网。用户投诉说「换了个电脑就上不了网了」。后来我养成了习惯:所有接终端的端口都配PortFast,同时开BPDU Guard,防止环路。
VLAN划分与Trunk链路问题
VLAN这东西,说白了就是把一个物理交换机切成多个逻辑网络。但很多问题恰恰出在Trunk链路上。
我见过最典型的故障:两个交换机之间配了Trunk,但VLAN就是不通。查了半天,发现一端Trunk口允许的VLAN列表里,漏掉了那个VLAN。你想想看,数据到了Trunk口,直接被丢弃了,能不丢包吗?
Trunk链路排查清单:
| 检查项 | 命令/方法 | 常见问题 |
|---|---|---|
| Trunk状态 | show interfaces trunk |
两端模式不匹配(一边Access一边Trunk) |
| 允许VLAN列表 | show interfaces trunk |
漏掉了某个VLAN |
| Native VLAN | show interfaces trunk |
两端Native VLAN不一致 |
| VLAN存在性 | show vlan brief |
VLAN没创建或没激活 |
还有一个坑:Native VLAN。默认是VLAN 1,但很多安全规范要求改成别的。我曾经遇到一个项目,两端Native VLAN一个配了99,一个配了100。结果所有不打标签的帧(比如CDP、DTP)全被丢弃了,交换机之间连邻居都发现不了。
特别注意:Trunk链路两端的Native VLAN必须一致。否则,不打标签的帧会被错误地划分到不同的VLAN里,造成二层环路或者通信中断。我建议在生产环境里,把Native VLAN改成一个不用的VLAN,比如999,然后两端统一。
VLAN划分本身也有讲究。我习惯把管理VLAN、用户VLAN、服务器VLAN分开。别把所有东西都塞进VLAN 1。你想想看,如果VLAN 1里既有管理流量又有用户流量,一旦有人发广播,管理设备也跟着遭殃。
综合排查思路
遇到数据链路层的问题,我一般按这个顺序查:
- 先看物理层——灯亮不亮?线插没插好?
- 再看MAC地址表——有没有异常抖动?
- 查STP状态——有没有端口阻塞或转发异常?
- 最后看VLAN和Trunk——配置对不对?
说白了,数据链路层的故障,八成是配置问题,两成是硬件问题。只要思路清晰,一步步排查,总能找到根因。嗯,今天就聊到这儿,下次咱们聊聊网络层那些事。