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.confsystemctl restart nftables//也可通过该命令重启nftables

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

没有网络安全就没有信息的未来!

👇👇👇 如果你也想学习:黑客&网络安全的零基础攻防教程 今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。 在这里领取: 这个是我花了几天几夜自整理的最新最全…

CFS三层内网渗透——外网打点(一)

目录 外网打点 先爆破一下看看有没有啥可进攻路径 尝试那个可疑的路径发现是thinkphp这个框架,同时也知道了版本,那就nday打吧 写入php ​编辑写入php成功,简简单单nday拿下​编辑 蚁剑rce尝试链接 打点成功 外网打点 先爆破一下看看有…

Windows 上帝模式是什么?开启之后有什么用处?

Windows 上帝模式是什么 什么是上帝模式?Windows 上帝模式(God Mode)是一个隐藏的文件夹,通过启用它,用户可以在一个界面中访问操作系统的所有管理工具和设置选项。这个功能最早出现在 Windows Vista 中,并…

七月开刷|50天吃透660+880‼️

现在只刷一本题集根本不够 去做做24年的考研真题卷就什么都明白了,24年的卷子就是典型的知识点多,杂,计算量大。 而现在市面上的任何一本题集,都无法做到包含所有的知识点,毕竟版面有限! 所以&#xff0…

HY Lisp 读取宏(reader macro)学习

在学习HY lisp语言的时候HY编程快速入门实践课第三章 HY宏入门-CSDN博客,学习到了读取宏(reader macro),尝试将其概念弄明白。 首先,读取宏是Lisp语言中都有的一种概念,所以可以通过任意一种Lisp语言的文档…

完全理解C语言函数

文章目录 1.函数是什么2.C语言中的函数分类2.1 库函数2.1.1 如何使用库函数 2.2自定义函数 3.函数的参数3.1 实际参数(实参)3.2 形式参数(形参) 4.函数调用4.1传值调用4.2 传址调用4.3 练习 5.函数的嵌套调用和链式访问5.1 嵌套调…

【总线】AXI4第八课时:介绍AXI的 “原子访问“ :独占访问(Exclusive Access)和锁定访问(Locked Access)

大家好,欢迎来到今天的总线学习时间!如果你对电子设计、特别是FPGA和SoC设计感兴趣,那你绝对不能错过我们今天的主角——AXI4总线。作为ARM公司AMBA总线家族中的佼佼者,AXI4以其高性能和高度可扩展性,成为了现代电子系统中不可或缺的通信桥梁…

spring mvc学习

第四章 Spring MVC 第一节 Spring MVC 简介 1. Spring MVC SpringMVC是一个Java 开源框架, 是Spring Framework生态中的一个独立模块,它基于 Spring 实现了Web MVC(数据、业务与展现)设计模式的请求驱动类型的轻量级Web框架&am…

T100-XG查询报表的开发

制作XG报表 1、注册程序 azzi900 首先现将程序注册一下,在内部构建基础代码档。 2、注册作业 azzi910 也是直接新增一个,作业跟程序绑定一下。 3、T100签出规格程序 这个时候应该是没签出的,首先将规格迁出。 4、T100画面产生器 规格迁出之后,这个时候还需要生成一个画…

小型气象站在现代农业中的应用与前景

随着科技的飞速发展,智慧农业已成为现代农业发展的重要趋势。在这一背景下,小型气象站作为智慧农业的重要组成部分,正逐渐展现出其独特的价值和广阔的应用前景。本文将从小型气象站的定义、功能、应用案例以及未来展望等方面,探讨…

数据库数据修改和删除操作详解

目录 🎃摘要 1. 数据库数据修改概述 2. 数据更新操作 2.1MySQL数据更新示例 3. 数据删除概述 4.使用DELETE进行数据删除 4.1 DELETE的基本语法 4.2 DELETE的使用场景 4.3 DELETE示例 5. 使用TRUNCATE进行数据删除 5.1 TRUNCATE的基本语法 5.2 TRUNCATE的…

谷粒商城学习-11-docker安装redis

文章目录 一,拉取Redis镜像1,搜索Redis的Docker镜像2,拉取Redis镜像3,查看已经拉取的镜像 二,创建、启动Redis容器1,创建redis配置文件2,创建及运行Redis容器3,使用docker ps查看运行…

docker-compose构建运行管理容器

win10安装docker并用docker-compose构建运行容器较为简单,只需要在程序和功能中开启Hyper-V虚拟功能,然后安装docker desktop即可。 创建文件目录及配置文件 在D盘新增app文件夹,创建dockerfile、docker-compose.yml、logs dockerfile # …

Elasticsearch实战教程:如何使用集群索引数据来进行统计多个数据?

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 Elasticsearch聚合查询是一种强大的工具,允许我们对索引中的数据进行复杂的统计分析和计算。本文将详细解释一…

九、SSM整合介绍-Eclipse整合(2)

🌻🌻目录 一、SSM 整合二、SSM整合入门三、整合的实现3.1、创建数据库以及表3.2、创建项目3.3、依赖3.4、项目配置3.5、项目测试 一、SSM 整合 1、整合:将多种框架合并到一起,完成项目需求 2、SSM整合:Springmvc Spri…

竞赛选题 协同过滤电影推荐系统

文章目录 1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

介绍一款Java开发的商业开源MES系统

介绍一款Java开发的开源MES系统,万界星空科技开源的MES系统。该系统基于Java开发,具有广泛的适用性和高度的可定制性,能够满足不同行业、不同规模企业的智能制造需求。 一、系统概述 万界星空科技开源的MES系统是一款面向制造企业车间执行层…

代码随想录算法训练营第71天:路径算法[1]

代码随想录算法训练营第71天:路径算法 ‍ Bellman_ford 算法精讲 卡码网:94. 城市间货物运输 I(opens new window) 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络…

笔记本休眠后自动关闭所有程序

关于主动进入休眠后,笔记本过一晚第二天会关闭所有程序,开始还以为,笔记本没电了,或者公司停电了导致笔记本没电关机,排查后发现不是。。。 原因是笔记本电脑默认设置休眠20分钟后自动关闭硬盘。 解决方案&#xff1a…

抖音短视频矩阵系统源代码开发-oem搭建

抖音矩阵号管理系统是一个综合性平台,旨在为企业、机构和个人提供全面的抖音账号管理服务。系统具备以下核心功能: 1. 用户管理:本系统支持多用户操作,允许管理员为每个用户分配专属的抖音矩阵号,实现个性化管理。 2.…