除非启用混杂模式,否则 Linux 5.9 VLAN 接口不会接收流量

除非启用混杂模式,否则 Linux 5.9 VLAN 接口不会接收流量

我刚刚将运行 Debian Buster 的 NAS 升级到 Debian Bullseye。这包括将内核从 4.19.0 升级到 5.9.0,并将 systemd 从 241 升级到 247.1(系统使用 systemd-networkd 进行配置)。

网络配置中等复杂度:

  • eno1/eno2:双端口 Intel I210 板载千兆以太网(使用 igb 驱动程序)

  • 主要:802.3ad 绑定接口使用 eno1/eno2 作为物理链路

  • vlan60/vlan63:使用 main 作为基础的 vlan 子接口

mainvlan60和都具有 IPv4 和 IPv6 地址,但和vlan63上没有地址。eno1eno2

所有接口都使用默认 MAC 地址模式,这意味着所有五个接口都使用 的内置 MAC 地址eno1。在尝试解决此问题时,我在vlan60和上配置了本地管理的 MAC 地址vlan63,但这没有帮助(事实上,它破坏了 上的 IPv6 支持main,但我从未弄清楚原因)。

使用 Buster 配置,一切正常。升级到 Bullseye 后,一切main正常,但vlan60vlan63发送或接收任何流量。往返于其地址的内部流量正常,但外部流量不正常。

在尝试排除故障时,我开始tcpdumpvlan63,并立即注意到流量开始流动。停止数据包捕获导致流量再次停止流动。

目前,我已通过执行 和 启动ip link eno1 set promisc on并运行系统ip link eno2 set promisc on,所有接口都顺利传输流量。无需在更高级别的接口上启用混杂模式,只需在物理接口上启用即可。

如果不启用混杂模式,VLAN 子接口似乎不会从网络接收任何广播帧,因此导致 ARP 和 NDP 无法运行。

这些内核版本之间是否存在一些行为变化(我知道,有很多内核版本......)会影响这一点吗?

答案1

我不确定内核做了什么更改,但我在 Proxmox VE 7.0 (Debian 11) 上遇到了同样的问题,内核版本为 5.11.22-1。当我将内核版本升级到 5.11.22-3 时,问题就消失了。

可能是内核的问题,升级内核到新版本就没问题了。

相关内容