debian12默认自带的是nftables防火墙,通过nftables进行管理,但是部分PHP 环境一键安装包可能会自动安装iptables 和 iptables-persistent。
nftables 是 iptables
的继任者,它具有更简单的语法、更高的性能、更强的扩展性,并且可以统一管理所有类型的流量过滤。它是 Debian 12 推荐使用的防火墙工具。由于同时有2套防火墙系统在运行,会给我们带来很多困惑。
兼容性问题
为了保持兼容,debian12安装iptables 装的其实是iptables v1.8.9 (nf_tables)
版本。因此当你输入iptables命令时会自动翻译成nftables。
netfilter-persistent 和 iptables-persistent
为了保存我们的规则,一般我们会安装netfilter-persistent 或 iptables-persistent 。一般只安装 iptables-persistent 就可以了。
特性 | iptables-persistent | netfilter-persistent |
---|---|---|
功能 | 除了保存和加载 iptables 规则外,还提供了一些额外的功能,如管理多个配置文件、支持 IPv6 规则等。 | 主要负责 iptables 规则的保存和加载。 |
配置文件 | 配置文件格式可能略有不同,具体取决于发行版。 | 通常将规则保存到 /etc/iptables/rules.v4 和 /etc/iptables/rules.v6 文件中。 |
适用场景 | 是一个独立的工具,可以单独安装。 | 通常被认为是 iptables-persistent 的一部分,安装 iptables-persistent 时会自动安装 netfilter-persistent。 |
复杂性 | 功能更丰富,配置选项更多,相对复杂。 | 相对简单,主要用于保存和加载规则。 |
如果只安装netfilter-persistent ,不安装 iptables-persistent ,那么对于你输入的iptables命令并不能保存,需要手工执行 iptables-save > /etc/iptables/rules.v4
,所以只需安装iptables-persistent即可。需要注意的是只输入 iptables-save
命令其实只是把配置文件打印出来,并不会真的 save,这个有点容易让人误解。使用netfilter-persistent save
可以自动保存当前iptables的规则。
持久化保存问题
netfilter-persistent 目前并不直接支持 nftables。使用 netfilter-persistent save
后,我们输入的nftables规则却没有保存下来,重启系统后,nftables规则消失了。iptables规则的确是可以保存下来,重启后不会丢失,并且 nft list ruleset
也可以看到iptables的规则。
为了iptables规则持久化并自动启动我们需要
systemctl enable netfilter-persistent
nftables规则保存
默认状态下debian12的nftables并没有启动,查看ruleset只能看到iptables设定的规则。nft add 命令操作就会报错,启动nftables命令
service nftables start
为了开机自动启动nftables,我们还需要
systemctl enable nftables
这样开机就会自动运行nftables了。
对于nftbales的规则保存需要我们手工保存:
nft list ruleset > /etc/nftables.conf
这样,我们就可以保存nftables命令了,且你设置的iptables规则也可以保存到/etc/nftables.conf里。
结论
对于debian12系统,同时有nftables和iptables,nftables必须开启自启。对于iptables命令我们可以用 netfilter-persistent save
命令进行保存,对于nftables命令我们只能执行 nft list ruleset > /etc/nftables.conf
,不执行这一步只使用 netfilter-persistent save
是对nftables无效的。
为了不让自己困惑,建议别在一个系统里混用2种规则。要么全用iptables规则,要么全用nftables规则。
技术不断升级,请注意文章时效性。
本站文章,欢迎转发。转载请注明出处:https://www.bandwh.com/web/1894.html