小编Jam*_*urn的帖子

iptables:匹配桥接接口的数据包

我正在构建一个基于 iptables 的防火墙配置工具,并试图让“线路中的颠簸”场景工作。

给定一个设置有eth0eth1在桥梁br0和第三界面eth2

    |          |         |
   eth0       eth1      eth2
    | == br0== |         |
          |              |
          |              |
         --- linux node ---
Run Code Online (Sandbox Code Playgroud)

在这种情况下,假设我希望 TCP 端口 80 流量在进入连接到的网络时被丢弃eth0,但允许它进入eth1.

因此,我试图可靠地匹配通过特定接口发出的数据包eth0

如果我在filter表中添加以下 iptables 规则:

-A FORWARD -o br0 --physdev-out eth0 -j LOG
Run Code Online (Sandbox Code Playgroud)

给定一个来自eth1(桥的另一半)的数据包,那么规则匹配得很好,记录:

... IN=br0 OUT=br0 PHYSIN=eth2 PHYSOUT=eth1 ...
Run Code Online (Sandbox Code Playgroud)

但是,如果数据包来自eth2,则规则不再匹配。

我似乎路由算法无法确定选择哪个桥接接口,因此数据包通过桥接器中的两个接口发送出去。

如果我添加另一个更混杂的日志规则,那么我会得到该数据包的以下日志输出:

... IN=eth2 OUT=br0 ...
Run Code Online (Sandbox Code Playgroud)

我的猜测是,在第一种情况下,路由算法可以只选择网桥上的另一个接口,因为该数据包不应该按照它来的方式出去。在第二种情况下,它没有选择特定的接口,然后您根本没有得到 physdev 信息!

但是,如果网桥已获知目标 MAC 地址(如 …

iptables bridge

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

bridge ×1

iptables ×1