在我的终端中,我写道:
sudo nft add table inet f2b-table
systemctl reload nftables.service
然后 :
sudo nft list ruleset
终端结果(确定):
table inet f2b-table { }
但是当我打开 nftables.conf 时,为什么表 inet f2b 没有出现
为什么它在终端中显示表格而不是在 nftables.conf 中(这是两个不同的文件吗?)
应该如何更新 nftables.conf?
答案1
您已经更新了内核中的表(不是文件)。如果您更新文件,那么它将在文件中。如果您随后告诉 nft 重新读取该文件,那么它将被复制到内核。
所有 Unix 配置文件都只是文件。在某些时候,它们被读取并加载到内核或它们正在配置的程序中。nftables.conf
将在系统启动时加载,并且很可能在您重新启动时加载nft
,或者告诉它重新加载其配置。
可能有一种方法可以让内核转储可以复制到文件的数据。但是,这也将包括更改之前已经存在的数据。
答案2
当我查看 nftables wiki 时,我发现只有这个页面处理从文件加载表: https://wiki.nftables.org/wiki-nftables/index.php/Scripting
该页面描述了该nft -f filename
命令如何从文件加载表配置,但没有匹配的命令将配置保存到文件。
简要提及“nft list”命令的输出是该文件可接受的语法之一。这意味着nft list ruleset > filename
将创建一个可由“nft -f”读取的文件
为什么命令没有systemctl reload nftables.service
这样做?显然,包维护者创建的 systemctl 配置不执行保存到文件操作。也许它只执行从文件读取操作。我没有更详细的信息,因为我没有具有 NFT 数据包过滤功能的计算机,而且您没有提到您正在使用哪种 Linux/Unix。