在 Linux 网桥上过滤掉 VLAN 标记的数据包
Filtering out VLAN tagged packets on Linux bridge
我的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 标记但没有成功。
对于标记的流,是否有正确的方法来执行此操作?
您可能看不到 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 手册页。
我的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 标记但没有成功。
对于标记的流,是否有正确的方法来执行此操作?
您可能看不到 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 手册页。