龙空技术网

iptables和nftables有什么区别?

Linux学习教程 1930

前言:

目前咱们对“ubuntu 2004 iptables”都比较着重,各位老铁们都需要分析一些“ubuntu 2004 iptables”的相关文章。那么小编在网摘上网罗了一些关于“ubuntu 2004 iptables””的相关文章,希望大家能喜欢,咱们快快来学习一下吧!

请关注本头条号,每天坚持更新原创干货技术文章。

如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习

1. 前言

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

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

iptables和nftables有什么区别?

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

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

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

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

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

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

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

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

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

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. `iptables`和`nftable`之间的语法差异

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网络接口

以下是iptables和nftables的语法:

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规则。

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

本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:

点击了解更多,快速查看更多的技术文章列表。

标签: #ubuntu 2004 iptables