Linux

STP 包過濾

  • July 19, 2021

我有一個 KVM 主機,來賓加入了一個虛擬網橋以進行網路連接。

該系統來賓上的Netdata引起了我對在網路介面級別丟棄數據包的注意(由 報告的度量標準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

或者,我會對這不是一個好主意的任何原因感興趣

丟棄的數據包意味著沒有核心子系統將 STP 註冊為支持的協議;乙太網驅動程序不知道將數據包發送到哪裡,因此丟棄它並增加丟棄的計數器。這本身很好,但 Netdata 將上升計數器視為一個可能的問題。

解決此問題的最簡單方法是讓核心/驅動程序了解 STP:

sudo modprobe stp

這應該會導致 STP 數據包被 STP 驅動程序而不是乙太網驅動程序丟棄。

在大多數 Linux 發行版上,您可以通過stp添加/etc/modules.

引用自:https://serverfault.com/questions/1053889