![在命令行上使用 nftables 更改策略](https://linux22.com/image/755460/%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%8A%E4%BD%BF%E7%94%A8%20nftables%20%E6%9B%B4%E6%94%B9%E7%AD%96%E7%95%A5.png)
使用 iptables,我可以将例如 INPUT 策略更改为iptables -P INPUT DROP
drop。是否有任何选项可以执行相同操作nft
?
编辑/etc/nftables.conf
当然可以起作用但这不是我想要的。
答案1
是的,您可以重新定义已经存在的基础链的策略而不更改其内容。没有单独的关键字,它仍然是add
:
nft add chain family mytable mychain '{ policy drop; }'
命名空间中的完整示例:
test.nft
:
flush ruleset
table ip t {
chain c {
type filter hook output priority 0; policy accept;
oif lo accept
counter
}
}
设置:
# ip netns add test
# ip netns exec test nft -f test.nft
改造:
# ip netns exec test nft add 'chain ip t c { policy drop; }'
# ip netns exec test nft list ruleset
table ip t {
chain c {
type filter hook output priority filter; policy drop;
oif "lo" accept
counter packets 0 bytes 0
}
}
政策已更改,但规则未变。此处使用 nft 0.9.5 和内核 5.7.x。根据版本不同,行为可能有所不同。
有一个2015 年的内核提交只允许这样做:
netfilter:nf_tables:如果存在,则允许更改链策略而无需钩子
如果存在现有的基础链,我们必须允许更改默认策略而不指示钩子信息。
然而,如果链不存在,我们必须强制钩子属性的存在。
签字人:Pablo Neira Ayuso[电子邮件保护]
在此之前(大约内核 4.1),必须再次提供基本链定义(顺便说一下,它不能更改):
# ip netns exec test nft add 'chain ip t c { type filter hook output priority 0; policy drop; }'