如何使用单个 iptables 规则过滤网桥接口数据包?

问题描述 投票:0回答:2

我想过滤具有特定 tcp 端口号的 br1 接口输入/输出数据包。

假设在网桥 br1 中设置了 eth0 和 eth1:

    |          |        
   eth0       eth1      
    | == br1== |   

在这种情况下,如果要连接到从 eth0 到 eth1 或从 eth1 到 eth0 的网络,我希望 TCP 端口 80 流量被过滤并路由到 nfqueue-num-0。我想用一行 iptables 命令来做到这一点。

**STATE 1 **- 我的 iptables 规则:

iptables -A FORWARD -m physdev --physdev-in eth0, eth1 -p tcp --match multiport --ports 80 -j NFQUEUE --queue-num 0 

然后我想用 nfqueue 和 scapy 框架修改同时输入/输出数据包。执行这些操作需要两个不同的回调函数。但是我不能同时运行两个回调函数。它必须是同时发生的实时数据包操作。因此,我想写一个过滤双向网络流量的 iptables 规则。

**STATE 2 **- 两个回调函数和 nfqueue 对象:


iptables -A FORWARD m physdev --physdev-in eth0 -p tcp --match multiport --ports 80 -j NFQUEUE --queue-num 0 
iptables -A FORWARD m physdev --physdev-in eth1 -p tcp --match multiport --ports 80 -j NFQUEUE --queue-num 1 

--queue-num 0 ==> q0.bind(0,callback1) 
--queue-num 1 ==> q1.bind(1,callback2) 

所以,问题是,我必须如何为 STATE 1 编写 iptables 规则? 或者,我如何同时运行状态 2 的两个回调函数?

iptables bridge netfilter
2个回答
0
投票

您可以使用 physdev 匹配模块使用单个 iptables 规则过滤网桥接口数据包。

我正在使用接口名称“br0”

iptables -A FORWARD -m physdev --physdev-in br0 -j DROP

如果你想允许SSH流量通过桥接接口,你可以添加这样的规则:

iptables -A FORWARD -m physdev --physdev-in br0 -p tcp --dport 22 -j ACCEPT

此规则将允许 SSH 流量(端口 22 上的 TCP 流量)通过接口 br0

希望对你有帮助


0
投票

我试过了;

-m physdev --physdev-in br1
命令参数。

但是这条规则并没有过滤任何tcp数据包。

您的建议可以过滤单向流量(运动或运动)。

我想在单一规则中过滤双向流量(dport 和 sport)。

© www.soinside.com 2019 - 2024. All rights reserved.