0

我正在尝试将我的条目翻译成本机。我遇到的问题是physdev语句 - 我正在使用一些链来对通过网桥的流量进行分类:

iptables -A FORWARD -m physdev --physdev-is-bridged -j bridgechain
iptables -A bridgechain -m physdev --physdev-in vnet0 --physdev-is-bridged -j vnet0-o
iptables -A brigdechain -m physdev --physdev-out vnet0 --physdev-is-bridged -j vnet0-i

如何使用本机 nft 正确实施此规则?iptables-translate 仅提供以下内容:

nft # -A FORWARD -m physdev --physdev-is-bridged -j brigdechain
nft # -A bridgechain -m physdev --physdev-in vnet0 --physdev-is-bridged -j vnet0-o
nft # -A bridgechain -m physdev --physdev-out vnet0 --physdev-is-bridged -j vnet0-i

提前感谢您的帮助!

4

1 回答 1

1

据我所知(我不是 nftables 开发人员,知识仅来自研究 netfilter wiki 和广泛的网络搜索),没有替代 physdev-is-bridged。netfilter wiki 甚至认为 physdev 匹配已弃用(请参阅https://wiki.nftables.org/wiki-nftables/index.php/Supported_features_compared_to_xtables

在我的设置中,我可以通过将 iifname 和 oifname 与相同的字符串进行比较来解决这个问题,即。

table inet filter {
  chain forward {
    iifname "br0" oifname "br0" accept
  }
}

这将是一个替代品

iptables -A FORWARD -m physdev --physdev-is-bridged -j ACCEPT

除了它只适用于网桥“br0”,与 iptables 规则不同,它适用于系统中的任何网桥。但是,如果您的网桥是静态的,则此解决方法可能就足够了。

(附带说明,在上游 nft 中使用 physdev-is-bridged - 我相信上面列出的解决方法可以在没有任何内核更改的情况下实现 - 对于按需创建桥接接口的机器来说确实很好。需要处理此类网桥的防火墙规则是我尝试切换到 nftables 的重大障碍)

于 2020-03-29T14:06:46.480 回答