nftables(1)基本原理

简介

nftables 是 Linux 内核中用于数据包分类的现代框架,用来替代旧的 iptables(包括 ip6tablesarptablesebtables 等,统称为 xtables)架构。nftables 提供了更强大、更灵活以及更易于管理的规则集配置方式,使得网络过滤和路由决策变得更加高效

适用范围:nftables 可在 Linux 内核版本 >= 3.13 上使用。
新的命令行实用程序:nftables 提供了一个名为 nft 的新命令行实用程序,其语法与 iptables 不同。
兼容性层:nftables还提供了一个兼容性层,允许在新的 nftables 内核框架上运行 iptables 命令。
通用集合基础设施:nftables 提供了一种通用的集合基础设施,允许构建映射和串联结构。可以利用这些新结构来将规则集安排在多维树中,从而大幅减少需要检查的规则数量,直到达到对数据包的最终操作。

nftables特点

nftables 的开发是为了解决 iptables 框架存在的一些限制,并提供增强功能来进行数据包过滤和分类。

以下是选择 nftables 而非 iptables 的一些原因:

  1. 避免代码重复: iptables中的许多扩展都是特定于协议的,这意味着没有一种统一的方式来匹配数据包字段。相反,每种支持的协议都有自己的扩展。这导致代码库中充斥着执行类似任务的非常相似的代码,使得代码库变得庞大且难以维护。nftables通过更通用和一致的框架来整合这些功能。

  2. 更快的数据包分类: nftables 提供增强的通用集合和映射基础设施,相比 iptables,可以实现更快的数据包分类。

  3. 简化的双栈 IPv4/IPv6 支持: nftables 引入了 inet 家族,使得在同一条链内管理 IPv4 和 IPv6 流量变得更加简单。

  4. 更好的动态规则集更新支持: nftables 提供了改进的动态规则集更新支持,使得更容易管理和修改防火墙规则。

  5. Netlink API 支持: nftables 为第三方应用程序提供了 Netlink API,类似于其他 Linux 网络和 Netfilter 子系统。这样可以更轻松地将外部工具和应用程序集成到 nftables 中。

  6. 语法改进: nftables 解决了 iptables 中存在的语法不一致问题,提供了更干净、更紧凑的语法来定义规则和配置。

nftables和iptables的主要区别

语法不同

  • iptables 使用基于 getopt_long() 的解析器,其中关键字总是以双破折号(--)开头,例如 --key,或者单个破折号(-)后跟一个字母,例如 -p tcp。
  • nftables 则使用了一种受 tcpdump 启发的紧凑语法。这种语法更加直观和灵活,让用户能够更轻松地编写和理解规则。

表和链的完全可配置性

  • iptables 预设了多个表和基础链,即使你只需要其中的一个,所有的表和链都会被注册。这可能导致性能问题,即使未使用的基础链也可能对性能产生负面影响。
  • nftables 没有预设的表和链。你需要显式地定义每个表,并且只向其中添加你明确需要的对象(链、集合、映射、流表和状态对象)。这样,你就可以只注册你需要的基础链,并根据你的特定数据包处理管道选择表和链的名称以及 netfilter 钩子优先级。

单个规则可以执行多个操作

  • iptables 的规则由匹配条件和单个目标动作组成。一旦匹配条件满足,就会执行目标动作(如接受、拒绝或跳转到另一个链)。
  • nftables 的规则由零个或多个表达式后跟一个或多个语句组成。每个表达式测试数据包是否与特定的负载字段或数据包/流元数据匹配。多个表达式从左到右线性评估:如果第一个表达式匹配,则评估下一个表达式,依此类推。如果所有表达式都匹配,则执行该规则的语句。每个语句执行一个操作,如设置 netfilter 标记、计数数据包、记录数据包或做出裁决(如接受、丢弃数据包或跳转到另一个链)。与表达式一样,多个语句也是从左到右线性评估的:单个规则可以通过使用多个语句来执行多个操作。但请注意,裁决语句会自然结束规则的执行。

没有内置的每链和每规则计数器

  • 在 iptables 中,计数器是内置的,用于跟踪每个链和规则的匹配次数。但在 nftables 中,计数器是可选的,可以根据需要启用它们。这种灵活性允许用户只在需要时跟踪特定规则或链的性能指标,从而节省系统资源。

更好的动态规则集更新支持

  • iptables 使用一个整体的数据块(monolithic blob)来存储其规则集,这意呀着在添加或删除规则时,可能需要重新加载整个规则集,这可能会影响系统的性能。而 nftables 的规则集在内部以链表的形式表示,这使得添加或删除规则时只影响相关的部分,而不会影响整个规则集的其余部分,从而简化了内部状态信息的维护。

简化的双栈 IPv4/IPv6 管理

  • nftables 的 inet 家族允许注册能够同时查看 IPv4 和 IPv6 流量的基础链。这意味着不再需要依赖脚本来复制你的规则集以同时支持 IPv4 和 IPv6,从而简化了配置和管理过程。

新的通用集合基础设施

  • nftables 引入了与核心紧密集成的新的通用集合基础设施,它允许高级配置,如映射(maps)、决策映射(verdict maps)和间隔(intervals),以实现面向性能的包分类。最重要的是,可以使用任何受支持的选择器来对流量进行分类,这为复杂的网络场景提供了更多的灵活性和控制力。

支持拼接

  • 自 Linux 内核 4.1 版本以来,nftables 支持将多个关键字拼接起来,并将它们与映射和裁决映射组合使用。

无需内核升级即可支持新协议

  • 在传统的防火墙配置中,支持新协议通常需要升级内核。而 nftables 采用了新的虚拟机方法,使得支持新协议通常不需要新的内核版本,而只需要相对简单的 nft 用户空间软件更新。这降低了维护成本,并提高了系统的灵活性和可扩展性。

nftables概念

表链的含义和我们前面所介绍的iptables是类似的,更多表与链相关的内容可以参考iptables基本概念

表(Tables):Nftables配置由表组成,表是规则的容器。有四种类型的表:filter、nat、mangle、和raw。

链(Chains):表包含多个链,链是规则的集合。Nftables中有五种默认链:input、output、forward、prerouting和postrouting。这些链用于不同的网络包处理阶段。

规则(Rules):规则是定义如何处理网络包的指令。规则由条件(匹配条件)和操作(对匹配的包执行的操作)组成。

集合(sets):集合是一种数据结构,用于存储IP地址、端口号等信息,以便在规则中引用。
当涉及到Nftables时,理解其基本概念和语法是非常重要的。

iptables表

表包含链,与 iptables 中的表不同,nftables 中没有内置表。表的数量及其名称由用户决定。不过,每个表只有一个地址族,并且仅适用于该族的数据包。

表可以指定五个族之一:

nftables 族iptables 实用程序
ipiptables
ip6ip6tables
inetiptables 和 ip6tables
arparptables
bridgeebtables

ip(即 IPv4)是默认族,如果未指定族,则将使用该族。

要创建同时适用于 IPv4 和 IPv6 的规则,请使用 inetinet 允许统一 ip 和 ip6 族,从而使同时定义两者的规则更加容易。

安装nftables

我目前使用的系统是debian 12,以下直接使用apt install nftables安装。

启动nftables

配置文件

nftables包附带了一个简单而安全的防火墙配置,存储在 /etc/nftables.conf 文件中。

nftables.service 将在启动或启用时从该文件加载规则。

-f选项即-f/--file 文件名,表示要从该文件读取输入配置信息

保存配置

查看当前的 nftables 配置规则:

nft list ruleset

将输出重定向到 /etc/nftables.conf 文件中:

nft list ruleset > /etc/nftables.conf

重新加载配置文件

nft -f /etc/nftables.conf

systemctl restart nftables//也可通过该命令重启nftables

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/773887.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【matlab】智能优化算法——求解目标函数

智能优化算法在求解目标函数方面发挥着重要作用,它通过迭代、筛选等方法来寻找目标函数的最优值(极值)。以下是关于智能优化算法求解目标函数的详细介绍: 一、智能优化算法概述 智能优化算法是一种搜索算法,旨在通过…

0/1背包问题总结

文章目录 🍇什么是0/1背包问题?🍈例题🍉1.分割等和子集🍉2.目标和🍉3.最后一块石头的重量Ⅱ 🍊总结 博客主页:lyyyyrics 🍇什么是0/1背包问题? 0/1背包问题是…

《简历宝典》02 - 如果你是HR,你会优先打开哪份简历?

现在的求职环境不必多说,其实我们大家都还是很清楚的。所以,在这个环境下,写一份优秀的简历,目的与作用也不必多说。那么,这一小节呢,我们先从简历这份文档的文档名开始说起。 目录 1 你觉得HR们刷简历的时…

【SVN的使用-源代码管理工具-命令行的使用 Objective-C语言】

一、接下来,我们来说一个终端的命令行的使用, 1.我们说,你的电脑里边呢,有终端, 在Mac里边,你想新建一个txt,应该怎么写,对,打开文本编辑, 打开这个东西,写点儿东西,然后保存一下,保存的时候,你还要去选择格式, 现在,如果我们用命令行,可以更方便一些, 2.首…

企业用私户发工资算不算偷税?

一般来说,给员工发工资都是用企业的对公账户去发,但是,有的企业会用私户去发工资,早前就有蜜雪冰城股东用私户给员工发奖金被税局稽查,最终补缴个税近800万的新闻,可见,私户发工资是具有很大风险…

上海时尚新品发布会,可以邀请哪些媒体

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 在上海举办时尚新品发布会时,可以邀请的媒体类型多样,以下是一些建议的媒体类型及其特点: 一、平面媒体 报纸: 《文汇报》:上…

底层软件 | 十分详细,为了学习设备树,我写了5w字笔记!

0、设备树是什么?1、DTS 1.1 dts简介1.2 dts例子 2、DTC(Device Tree Compiler)3、DTB(Device Tree Blob)4、绑定(Binding)5、Bootloader compatible属性 7、 #address-cells和#size-cells属性8…

Qt源码解析之QObject

省去大部分virtual和public方法后,Qobject主要剩下以下成员: //qobject.h class Q_CORE_EXPORT Qobject{Q_OBJECTQ_PROPERTY(QString objectName READ objectName WRITE setObjectName NOTIFY objectNameChanged)Q_DECLARE_PRIVATE(QObject) public:Q_I…

印章谁在管、谁用了、用在哪?契约锁让您打开手机一看便知

“印章都交给谁在管”、“哪些人能用”、“都有哪些业务在用”…这些既是管理者最关心的印章问题也是影响印章安全的关键要素。但是公司旗下分子公司那么多,各类公章、法人章、财务章、合同章一大堆,想“问”明白很难。 契约锁电子签及印控平台推出“印章…

OpenLayers使用2

接着上一篇https://blog.csdn.net/weixin_51416826/article/details/140161160?spm1001.2014.3001.5502 本篇主要内容是基于高德API逆向地址解析获取城市中心点,并且设置了输入框,可以输入城市执行飞行,同时基于高德API获取城市天气信息&am…

【漏洞复现】万户协同办公平台——反序列化

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 万户协同办公平台ezEIP是一个综合信息基础应用平台,…

Leaflet【六】绘制交互图形、测量、经纬度展示

本文主要探讨了如何利用leaflet-draw插件在地图上绘制图形,以及通过leaflet-measure测量距离和面积,并将经纬度绘制到地图上。首先,我们使用leaflet-draw插件,该插件提供了一种简单而直观的方式来绘制各种形状(如点、线…

配置基于不同IP地址的虚拟主机

定义配置文件vhost.conf <directory /www> allowoverride none require all granted </directory> <virtualhost 192.168.209.136:80> documentroot /www servername 192.168.209.136 </virtualhost><virtualhost 192.168.209.138:80> document…

Restore Equipment

Restore Equipment 魔兽世界 - 盗号申请 - 恢复装备流程 魔兽和网易真的不行啊 1&#xff09;这个装备本来就是兑换的竟然可以卖NPC 2&#xff09;针对这个情况竟然无法挽回 3&#xff09;设计理念真的不得不吐槽一下 4&#xff09;策划真的不咋样&#xff0c;要是有机会我要自…

STM32F1+HAL库+FreeTOTS学习5——内核中断管理及中断控制函数

STM32F1HAL库FreeTOTS学习5——中断管理和临界段代码保护 中断简介中断优先级寄存器拓展FreeRTOS中PendSV和Systick中断优先级配置三个中断屏蔽寄存器FreeRTOS中断管理函数代码验证 上一期我们学习了FreeRTOS中任务挂起与恢复&#xff0c;在中断服务程序中恢复任务过程中&#…

Fish Speech: 开源文本转语音技术(TTS)的新里程碑

简介 Fish Speech 是一个全新的文本转语音(TTS)解决方案&#xff0c;该项目由fishaudio开发。当前模型使用约十五万小时三语数据训练&#xff0c;对中文支持非常的完美。 能够熟练处理和生成中文、日语和英语的语音&#xff0c;语言处理能力接近人类水平&#xff0c;并且声音…

狂赚三个亿,百亿医用耗材上市公司重金押注老人轮椅

布局海外市场&#xff0c;轮椅销量翻两番 作者 | 艾米莉 排版 | 张思琪 抛砖引玉 1.年销售60万台轮椅&#xff0c;英科医疗如何做到&#xff1f; 2.老年人轮椅是出海&#xff0c;还是深耕国内市场&#xff1f; 3.2022年全球轮椅市场规模为48亿美元&#xff0c;谁在喝汤&…

Android仿天眼查人物关系图

效果图预览 绘制思路 这里使用了中学解析几何知识 XPoint OPointX OPointXcosθ&#xff1b; YPoint OPointY OPointYsinθ&#xff1b; canvas.drawText(lists.get(i).getName(), XPoint (float) Math.cos(pere * i 5) * radius[i % radius.length] - 30, YPoint (fl…

【笔试记录】腾讯音乐 | 20230903 | cpp (更新ing)

1 完美数 1.1 题目描述 小红定义一个数为“完美数”&#xff0c;当且仅当该数仅有一个非零数字。例如 5000, 4, 1, 10, 200 都是完美数。 小红拿到了一个大小为 n&#xff08;2 < n < 2000&#xff09;的数组 a&#xff0c;她希望选择数组中的两个元素&#xff08;1 …

CVE-2023-30212(xss漏洞)

简介 OURPHP版本<7.2.0存在XSS漏洞&#xff0c;攻击路径为/client/manage/ourphp_out.php。 过程 打开靶场 访问攻击路径/client/manage/ourphp_out.php 得到flag{354c7c41-cc23-4de5-be73-79cbbf384aba}