Linux
STP 包過濾
我有一個 KVM 主機,來賓加入了一個虛擬網橋以進行網路連接。
該系統來賓上的Netdata引起了我對在網路介面級別丟棄數據包的注意(由 報告的度量標準
RX dropped
)ifconfig
。我從主機外部跟踪丟棄的數據包到 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
.