我有以下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上,当它通过网桥时,我无法使用相同的规则检测到它。
试图用iptables和ebtables及其vlan选项检测数据包。无法通过ebtables通过udp端口过滤它们。而且,找不到通过iptables通过端口标记它们的方法。另外,尝试使用physdev进行标记但没有成功。
是否有正确的方法为标记流执行此操作?
答案 0 :(得分:1)
您可能无法看到802.1Q封装的桥接数据包 默认情况下使用iptables。
要启用此功能,请执行以下操作:
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手册页。