0

我有以下 IF 配置:

eth0 --- br0 --- eth1 

我在 eth1 上接收 udp 广播传输(在端口 20000 上)并且不希望网桥将其转发到 eth0(我的有线接口)。因此,我申请

ebtables -t filter -A FORWARD -o eth0 -p 0x0800 --ip-protocol udp --ip-destination-port 20000 -j DROP

这对我很有用。当我在 VLAN 模式下运行我的设备时,即使用以下配置,

eth0 --- br0 --- eth1 
          |
       br0.100

在这里,我添加了一个启用 VLAN 的网桥来管理 VLAN 100 上的无线电。流量到达 eth1 上标记,当它通过网桥时,我无法使用相同的规则检测到它。

尝试使用其 vlan 选项检测带有 iptables 和 ebtables 的数据包。无法通过 ebtables 通过 udp 端口​​过滤它们。此外,找不到通过 iptables 通过端口标记它们的方法。另外,尝试使用 physdev 进行标记但没有成功。

是否有正确的方法来为标记的流执行此操作?

4

1 回答 1

2

默认情况下,您可能无法使用 iptables 看到 802.1Q 封装的桥接数据包。

要启用此功能,请执行以下操作:

echo 1 > /proc/sys/net/bridge/bridge-nf-filter-vlan-tagged

http://ebtables.netfilter.org/documentation/bridge-nf.html

现在,您可以使用 iptables 过滤这些数据包。您应该了解如何将数据包中的目标端口与以下内容匹配:

iptables -A FORWARD -m u32 --u32 "W&0xFFFF=0x4E20" -j DROP

其中 0x4E20 是您的端口(20000),W 是您的 4 字节匹配的偏移量(请注意,您仅将最后两个字节与 0x0000FFFF 匹配)。你必须找出W是什么。

有关 u32 匹配的详细信息,请参见 iptables 手册页。

于 2016-11-08T02:03:13.403 回答