STP 数据包过滤

STP 数据包过滤

我有一台 KVM 主机,其中的客户机已加入虚拟网桥以进行网络连接。

网络数据该系统的访客引起了我的注意,发现网络接口级别有数据包被丢弃(报告的指标为RX droppedifconfig

我跟踪了丢弃的数据包,发现是主机外部的 STP(生成树协议)广播。主机上的虚拟网桥已关闭 STP,但网络上其他交换机的这些数据包仍会转发给访客。

# tcpdump -i enp2s0 stp -etn
30:23:03:27:7c:27 > 01:80:c2:00:00:00, 802.3, length 38: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id fffe.30:23:03:27:7c:27.8001, length 43
# tcpdump -i enp1s0 stp -etn
10:06:45:e6:24:0b > 01:80:c2:00:00:00, 802.3, length 38: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.10:06:45:e6:24:0b.8004, length 43

问题

如何丢弃通过虚拟桥转发的 STP 数据包?

我尝试通过 dsap/ssap 号码进行过滤,但没有成功。

ebtables -A FORWARD -p LENGTH --802_3-sap 0x42 -j DROP

或者,我感兴趣的是,为什么这不是一个好主意

答案1

数据包丢失意味着没有内核子系统将 STP 注册为受支持的协议;以太网驱动程序不知道将数据包发送到哪里,因此将其丢弃并增加丢弃计数器。这本身没有问题,但 Netdata 将计数器增加视为可能的问题。

解决此问题的最简单方法是让内核/驱动程序了解 STP:

sudo modprobe stp

这应该会导致 STP 数据包被 STP 驱动程序而不是以太网驱动程序丢弃。

stp在大多数 Linux 发行版中,您可以通过添加来使其永久生效/etc/modules

相关内容