电脑课堂
柔彩主题三 · 更轻盈的阅读体验

网桥如何更新MAC地址表

发布时间:2025-12-16 09:00:32 阅读:429 次

家里用的路由器、交换机,其实底层都离不开一个关键机制——MAC地址表。特别是在网络中使用网桥设备时,这张表决定了数据该往哪个端口转发。可有时候电脑连上了,却互相ping不通,排查到最后发现是网桥没学对MAC地址。

网桥是怎么学习MAC地址的?

网桥工作在数据链路层,它不像路由器看IP地址,而是盯着每个数据帧的源MAC地址。每当有设备发数据过来,网桥就会记下:这个MAC是从哪个接口进来的。比如一台电脑从eth1口发送ARP请求,网桥就会在MAC地址表里添加一条记录:

MAC地址: aa:bb:cc:dd:ee:ff -> 端口: eth1

这样下次有数据要发给这个MAC,网桥就知道该从eth1转发出去,而不是广播到所有端口。

什么情况下会更新这条记录?

如果那台电脑换了个网口接入,比如从eth1插到了eth2,第一次从新端口发数据时,网桥就会发现:“咦,这个MAC怎么从另一个口来了?”这时候它不会犹豫,直接更新记录,把端口改成eth2。

这就像小区门卫记住户常走哪个门进。原来小王天天走东门,门卫就记住了。突然有一天小王从西门进来,门卫看见了,下次找小王就按新的路线指。

老化机制防止“死记录”

设备不是永久记住MAC地址的。默认情况下,大多数网桥会在5分钟内没有收到某个MAC的数据后,自动删掉这条记录。这个叫老化时间(aging time)。如果之后又需要通信,就得重新学习。

你可以通过命令查看Linux系统中网桥的MAC地址表:

bridge fdb show

输出可能长这样:

aa:bb:cc:dd:ee:ff dev eth1 vlan 1 master br0
12:34:56:78:9a:bc dev eth2 vlan 1 master br0

每一行代表一条学习到的MAC地址记录。如果某台设备关机了,过几分钟再查,它的条目就不见了。

静态条目不会被覆盖

有些关键服务器你会希望它始终走固定路径,这时候可以手动添加静态条目:

bridge fdb add aa:bb:cc:dd:ee:ff dev eth1 master br0 permanent

加了 permanent 的条目不会被动态更新覆盖,也不会老化。除非你手动删掉,否则一直存在。

常见故障场景

遇到设备明明在线却无法通信,先检查网桥有没有学到正确的MAC。可能是端口松了,设备换了网线口但旧记录还没老化;也可能是广播风暴导致学习混乱;还有可能是VLAN配置错误,让网桥在不同的VLAN里找不到对应条目。

这时候别急着重启,先用 bridge fdb show 看一眼当前的学习状态,对比物理连接,往往问题就出在那一两条错位的记录上。