过滤掉VLAN在Linux上桥的标记分组
问题描述:
我有以下IF配置:过滤掉VLAN在Linux上桥的标记分组
eth0 --- br0 --- eth1
我收到UDP广播传输(端口20000)eth1上,不想桥将其转发给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标记没有成功。
有没有一个正确的方法来做到这一点的标记流?
答
您可能无法在默认情况下看到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手册页。
这是一个很好的问题(和一个有趣的!),但它是题外话了计算器(这是软件开发的问题)。这将是[serverfault](http://serverfault.com)的一个很好的候选人。 – larsks