智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

iptables和nftables有什么区别?

1. 前言

在本文中,我们将讨论nftablesiptables之间的区别,并展示在新的nftables语法中配置防火墙规则的示例。

每个Linux管理员肯定都使用过iptables,这是一个长期存在的Linux防火墙,多年来为我们提供了良好的服务。但是您可能还不熟悉nftables,它是一个Linux系统的新工具,旨在为我们提供一些非常需要的升级,并最终取代年纪大的iptables

iptables和nftables有什么区别?

2. 为什么要使用nftables而不是iptables?

nftables是由Netfilter开发的,该组织与当前维护iptables的组织相同。它的创建是为了解决iptables的问题,即可伸缩性和性能。

除了新的语法和一些升级之外,您还会发现它的功能与以前的版本非常相似。

新推出的nftables的另一个理由是,iptables框架已经变得有点复杂,iptablesip6tablesarptablesebtables都提供了不同但类似的功能。

例如,在iptables中创建IPv4规则和在ip6tables中创建IPv6规则并保持二者同步是非常低效的。nftables的目标是取代所有这些,成为一个集中的解决方案。

尽管nftables从2014年开始就被包含在Linux内核中,但是随着采用范围的扩大,它最近获得了更多的关注。在Linux世界中,变化是缓慢的,过时的实用程序通常需要几年甚至更长时间才能被淘汰,取而代之的是升级版。

nftables正在成为推荐的防火墙,Linux管理员有必要更新它们的工具列表。现在是学习nftables和更新现有iptables配置的好时机。

如果您已经使用iptables很多年了,并且对于必须学习一种全新的实用程序这个想法不是很兴奋,不要担心,我们已经在本指南中介绍了。
linux-firewall-02

3. nftable中的链(chains)和规则(rules)

iptables中,有三个默认的链:输入(input)、输出(output)和转发(forward)。这三个“链”(以及其他链,如果您配置了任何链)包含“rules/规则”,iptables通过将网络流量与链中的规则列表匹配来工作。如果所检查的流量与任何规则都不匹配,则链的默认策略将用于流量,即接受(ACCEPT), DROP(丢弃)。

nftables的工作原理与此类似,也有“链”和“规则”。但是,它没有从任何基础链开始,这使得配置更加灵活。

iptables的一个低效之处是,所有网络数据都必须通过上述一个或多个链,即使流量与任何规则都不匹配。无论是否配置了链,iptables仍然会根据这些链检查网络数据。

4. 在Linux上安装nftables

nftables在所有主要的Linux发行版中都可用,您可以使用发行版的包管理器轻松安装它。

在Ubuntu或基于debian的发行版上,你可以使用以下命令:

sudo apt install nftables

确保nftables在系统重新启动时自动启动:

sudo systemctl enable nftables.service

5. iptablesnftable之间的语法差异

nftables的语法与iptables不同,也简单得多。说实话,iptables语法总是不清楚,需要额外的学习。幸运的是,对于那些从iptables迁移过来的人来说,nftables仍然接受旧的语法。

Linux iptables防火墙

您还可以使用iptables-translate实用程序,它将接受iptables命令并将它们转换为nftables。这是查看这两种语法差异的简单方法。

使用以下命令在Ubuntu和基于debian的发行版上安装iptables-translate:

sudo apt install iptables-nftables-compat

安装之后,可以将iptables语法传递给iptables-translate命令,它将返回nftables等效的命令。

让我们来看一些示例,以便您可以了解这些命令之间的不同之处。

5.1 阻塞入方向的流量

这个命令会阻止来自IP地址192.168.2.1的连接:

iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

5.2 允许入口方向SSH连接

让我们来看看更多的例子—在加固Linux服务器时,您通常会发现自己在iptables中键入的一些常见内容。

iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

5.3 允许来自特定IP范围的SSH连接

如果你想允许192.168.1.0/24的SSH连接:

iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

5.4 允许MySQL连接到eth0网络接口

以下是iptablesnftables的语法:

iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

5.5 允许入口方向的HTTP和HTTPS流量

为了允许特定类型的流量,下面是这两个命令的语法:

iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

从这些示例中可以看到,语法仍然与iptables非常相似,但是命令更直观一些。

使用nftables作日志记录
上面的nft命令示例中的counter选项告诉nftables计算一个规则被触发的次数,就像iptables在默认情况下所做的那样。

nftables中,它们是可选的,必须指定它们。

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

nftables内置了用于导出配置的选项。它目前支持XML和JSON。

nft export xml

6. 结论

在本文中,我解释了为什么推荐nftables是Linux防火墙的新选择。我还列出了旧的iptables和新nftables之间的许多不同之处,包括它们的功能和语法。

本指南向您展示了为什么要考虑升级到nftables,以及如何开始使用您需要熟悉的新语法,以便成功升级旧的iptables规则。

如果你有任何问题或建议,请在评论中告诉我。

赞(0)
未经允许不得转载:Linux入门学习到精通 » iptables和nftables有什么区别?
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!