桥接接口错误

桥接接口错误

我在以 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

参考:https://medium.com/@tienbm90/resolved-br0-received-packet-on-xx-with-own-address-as-source-address-fad895d410a4

答案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 引导时对我来说很重要。我不想在单个无盘客户端上浪费两个或多个租约。

相关内容