
我在以 VirtualBox Guest 身份运行 Debian 时遇到问题。我可以建立一个桥,但它会充斥着大量错误的日志,并且系统变得无法使用。错误例如:
11 月 12 日 16:30:55 jessie-gnome 内核:[737.277528] br0:在 eth0 上接收到以自身地址作为源地址的数据包
11 月 12 日 16:31:00 jessie-gnome 内核:[742.280085] net_ratelimit:抑制 47185 个回调
11 月 12 日 16:31:00 jessie-gnome 内核:[742.280088] br0:在 eth1 上收到数据包,以自己的地址作为源地址
11 月 12 日 16:31:00 jessie-gnome 内核:[742.280178] br0:在 eth1 上收到数据包,以自己的地址作为源地址
11 月 12 日 16:31:00 jessie-gnome 内核:[742.280282] br0:在 eth1 上收到数据包,以自己的地址作为源地址
我的接口文件有:
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto br0
iface br0 inet static
address 192.168.80.5
netmask 255.255.255.0
network 192.168.80.0
gateway 192.168.80.1
bridge_stp off # disable Spanning Tree Protocol
bridge_fd 0 # no forwarding delay
bridge_ports eth0 eth1
up iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
这些是消耗CPU时间较多的进程:
580 avahi 20 0 32224 2756 2492 R 16,2 0,2 1:30.48 avahi-daemon
3 root 20 0 0 0 0 R 15,5 0,0 1:43.27 ksoftirqd/0
923 root 20 0 215988 34140 18968 S 15,2 2,2 0:34.59 Xorg
1261 sergio 20 0 1330672 202952 68820 R 12,9 13,2 0:32.71 gnome-shell
7 root 20 0 0 0 0 S 12,6 0,0 1:22.70 rcu_sched
操作系统是 Debian 8。
我该如何修复这些错误?
答案1
当 Linux 网桥从特定网桥端口接收到具有新源 MAC 地址的数据包时,它会将 MAC 地址连同端口号一起存储在其 MAC 学习表中。表中的每个条目都与一个计时器相关联,因此该条目会在一定时间(所谓的“老化时间”)后过期,除非在此之前刷新。默认情况下,Linux 网桥的老化时间设置为 300 秒。
为了解决这个问题,我们需要在 Linux 网桥中禁用 MAC 地址学习。为此,我们使用以下命令将“老化时间”设置为 0:
sudo brctl setageing br0 0
答案2
很抱歉回复这么旧的帖子也在 RPI4 上用 raspbian (Debian 10 Buster) 看到这个我有一个桥 eth0.1 和 wlan0。似乎是在我运行 iftop 时发生的。
我怀疑当一个进程在桥接器上启用过滤/监听时,wlan0 和 eth0.1 会在此消息中产生 mac 结果,并且还会禁用 wlan0。我解决了这个问题
#!/bin/bash
dmesg -T -x --follow |
while read LINE
do
if [[ "$LINE" == *"received packet on wlan0 with own address"* ]]; then
sleep 1
echo "RESTART hostapd: $LINE" >> /var/log/wlan0.log
systemctl restart hostapd
fi
done
答案3
如果这些消息不断涌入,则网桥可能配置为不使用生成树协议。并且,连接到软桥的某些外部网络会闭合两个桥接端口之间的环路。
要解决该问题,请尝试:brctl stp br0 on
。
显然,默认值也可能是 STP=off。这就是我的情况,在 initrd 启动过程早期的一个相当裸露的内核 5.2.7 上。我正在尝试通过 PXE 方式启动无盘客户端,并在“ipconfig”完成其工作之前在 Linux 用户空间中建立一个软桥:-)
旁注:创建网桥时,br0 接口将采用添加的第一个物理接口的 MAC 地址。这可能与这里讨论的“问题”没有任何关系……但在 PXE 引导时对我来说很重要。我不想在单个无盘客户端上浪费两个或多个租约。