我正在尝试将我的iptables条目转换为原生nftables。我遇到的问题是physdev
语句--我使用一些链来对通过linux桥的流量进行分类:
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
提前感谢您的帮助!
发布于 2020-03-29 22:06:46
据我所知(我不是nftables开发人员,这方面的知识只来自于学习netfilter wiki和广泛的web搜索),物理开发是桥接的,没有替代的。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- bridge --我相信上面列出的变通方法可以在没有任何内核更改的情况下实现--对于按需创建桥接接口的机器来说,这将是非常好的。需要处理此类网桥的防火墙规则是我尝试切换到nftables的重要障碍)
https://stackoverflow.com/questions/60803101
复制相似问题