首页 文章

在Linux网桥上过滤掉带VLAN标记的数据包[关闭]

提问于
浏览
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上,当它通过网桥时我无法使用相同的规则检测到它 .

试图用iptables和ebtables及其vlan选项检测数据包 . 无法通过ebtables通过udp端口过滤它们 . 而且,找不到通过iptables通过端口标记它们的方法 . 此外,尝试使用physdev标记但没有成功 .

有没有一种正确的方法来为标记流做到这一点?

1 回答

  • 1

    默认情况下,您可能无法使用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手册页 .

相关问题