nftables(2)表、链、规则查询和管理(新增、插入、修改、删除)

简介

在上篇文章中,我们介绍了nftables基本原理以及与iptables的区别,nftables安装和配置保存的操作。这篇文章主要介绍nftables的基本操作,表、链、规则的新增、插入、修改、删除等操作。

注意:在进行nftables实验时和iptables一样,请务必在个人的测试机上进行,不要在有任何业务的机器上进行测试。

在进行测试前,为保障我们环境的纯粹性,我们需要将nftables清空,以便进行后续的各项实验测试。

nft flush ruleset  #清除 nftables 中的所有规则nft list ruleset
此时我的nftables没有任何规则

nftables 中的表是一个包含链、规则、集合和其他对象集合的名字空间。

每个表都必须分配一个地址系列。地址系列定义此表处理的数据包类型。在创建表时,可以设置以下地址系列之一:

  • ip:仅匹配 IPv4 数据包。如果没有指定地址系列,这是默认设置。
  • ip6 :仅匹配 IPv6 数据包.
  • inet:匹配 IPv4 和 IPv6 数据包。
  • arp:匹配 IPv4 地址解析协议(ARP)数据包。
  • bridge:匹配通过网桥设备的数据包。
  • netdev:匹配来自 ingress 的数据包。

添加表

nft add table <table_address_family> <table_name>nft list tables  #列出所有表
nft list table <table_name> #列出指定表的规则nft list table <table_address_family> <table_name> #列出对应族中对应对应表的所有规则
不指定地址族默认就是ip,通过list tables查看创建的表

 删除表

nft delete table <table_address_family> <table_name>
通过delete删除表

刷新表

当我们需要清除一个表中的所有规则但是不需要删除我们表的结构和配置的时候可以通过以下命令实现:

nft flush table <table_address_family> <table_name>

链的用途是包含规则,与 iptables 中的链不同,nftables 中没有内置链。这意味着,如果没有任何类型或钩子使用链,nftables 将不会触及流经这些链的数据包,因为它们没有定义任何规则来处理这些数据包。

表由链组成,链又是规则的容器。存在以下两种规则类型:

基本链 :可以使用基本链作为来自网络堆栈的数据包的入口点。

常规链 :可以将常规链用作 jump 目标来更好地组织规则。

基本链

nft add chain <table_address_family> <table_name> <chain_name> { type <type> hook <hook> priority <priority> \; policy <policy> \; }

链类型

类型地址系列钩子描述

filter

all

all

标准链类型

nat

ip,ip6,inet

preroutinginputoutputpostrouting

这个类型的链根据连接跟踪条目执行原生地址转换。只有第一个数据包会遍历此链类型。

route

ip,ip6

output

如果 IP 头的相关部分已更改,则接受的遍历此链类型的数据包会导致新的路由查找。

链优先级

priority 参数指定数据包遍历具有相同 hook 值的链的顺序。可以将此参数设为整数值,或使用标准优先级名称。数字较低的链首先被处理,并且可以是负数。

文本值数字值地址系列钩子

raw

-300

ip,ip6,inet

all

mangle

-150

ip,ip6,inet

all

dstnat

-100

ip,ip6,inet

prerouting

-300

bridge

prerouting

filter

0

ip,ip6,inet,arp,netdev

all

-200

bridge

all

security

50

ip,ip6,inet

all

srcnat

100

ip,ip6,inet

postrouting

300

bridge

postrouting

out

100

bridge

output

链策略

如果此链中的规则没有指定任何操作,则链策略定义 nftables 是否应该接受或丢弃数据包。可以在链中设置以下策略之一:

  • accept (默认)
  • drop

常规链

nft add chain <table_address_family> <table_name> <chain_name>

查看链

nft list chains #列出所有链信息
nft list chain 族类型 表名 链名

编辑链

想要编辑链,只需按其名称调用它并定义要更改的规则

nft chain <table_address_family> <table_name> <chain_name> { type <type> hook <hook> priority <priority> \; policy <policy> \; }

删除链

和删除表一样通过delete参数

 nft delete chain 族类型 表名 链名

刷新来自链的规则

清空指定表中特定链的所有规则,但保留该链的结构和配置

nft flush chain 族类型 表名 链名

举例

定义一个表为filter-table,定义一个链为input-chain,设置类型为filter,hook为input,优先级为-10

如上图所示,我们通过add chain命令添加了链,没有指定任何policy参数,此时默认的参数为accept

此时需要将该链默认动作指定为drop,应该怎么做呢?

通过如下方式可以实现,但是该命令的后果将会直接拒绝所有input的数据包,切记不可随意配置。该动作就相当于我们iptables中默认的filter链中INPUT表的默认动作。

nft chain ip filter-table input-chain '{ type filter hook input priority -10 ; policy drop ; }'

规则

规则定义对通过包含此规则的链的数据包执行的操作。规则由表达式或语句构成,并包含在链中。如果规则还包含匹配表达式,则 nftables 仅在所有之前的表达式都应用时才执行操作。

添加规则

nft add rule <table_address_family> <table_name> <chain_name> <rule>
此命令在链的末尾附加新规则。
如果要在链的开头添加一条规则,请使用 nft insert 命令而不是 nft add

指定位置添加规则

在iptables中我们可以通过在rule前面添加序号来删除增加规则和设置匹配顺序,在nftables中同样也可以通过该方式实现,那么就是handle参数

nft add rule <table_address_family> <table_name> <chain_name> <handle> <rule> 
如果未指定handle值,则默认在最后添加规则
如果要在指定位置插入规则,则需要使用如下命令
nft insert rule <table_address_family> <table_name> <chain_name> <handle> <rule> 
此时如果未指定handle值,则在链开头添加规则

查看规则

nft list chain 族类型 表名 链名nft --handle list chain 族类型 表名 链名
nft -a list chain 族类型 表名 链名
通过-a/--handle参数可以查看携带handle值的规则信息

删除规则

单个规则只能通过handle删除。

 nft delete rule <table_address_family> <table_name> <chain_name> handle x
通过对应的handle值删除对应的规则

刷新规则

# nft flush table 表名
# nft flush chain 族类型 表名 链名

举例

环境和前面的iptables/firewalld是一样的,本机内网ip地址192.168.140.250

拒绝192.168.140.248访问本机80端口

通过tcp dport 80 drop拒绝目的端口是80的流量,没有指定任何handle值,因为是add rule所以会在末尾添加规则。通过nft -a参数可以查看handle值,此时值为3

测试访问

此时已经无法访问无法访问

规则顺序测试

如上图所示直接通过insert    handle 3插入一个tcp 50-80端口的accept规则,那么此时能否正常访问呢?

此时已经可以通过140.248正常访问250的80端口了
直接通过add添加一个规则,阻止tcp50-100端口,那么该条规则就会被插入到末尾,此时,我们80可以正常访问, 注意:真实匹配规则的时候不是按照handle这个数值来匹配的,而是按照规则的前后顺序来匹配的。
当没有保存nftables规则的时候,通过flush命令就可以清空该条链的规则

总结

上面所介绍的就是nftables基本的表、链、规则的创建和管理,如果熟悉iptables的配置方式的话,那么nftables的配置逻辑理解起来还是相对比较容易的。大家可以多做实验理解表、链、规则的相关性和其互相的关系,如果不是非常清楚,可以参考iptables部分相关的文章。

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

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

相关文章

AI自动生成PPT怎么用?看完这篇文章你就知道啦

小暑&#xff0c;作为夏季的第五个节气&#xff0c;标志着炎炎夏日的正式到来。在这个时节&#xff0c;阳光明媚&#xff0c;万物生长&#xff0c;人们的心情也随着气温的升高而变得热烈。 然而&#xff0c;对于许多职场人士来说&#xff0c;小暑的到来也意味着需要准备各种汇报…

spark shuffle写操作——SortShuffleWriter

写入的简单流程&#xff1a; 1.生成ExternalSorter对象 2.将消息都是插入ExternalSorter对象中 3.获取到mapOutputWriter&#xff0c;将中间产生的临时文件合并到一个临时文件 4.生成最后的data文件和index文件 可以看到写入的重点类是ExternalSorter对象 ExternalSorter 基…

包装类的128陷阱

我们先看一段代码 Integer num1100; Integer num2100; System.out.println(num1 num2); //trueInteger num3128; Integer num4128; System.out.println(num3 num4); //false 在执行之后&#xff0c;我们会发现num1num2是true&#xff0c;而num3num4却是false&#xff0c;…

Thingsboard 系列之通过 ESP8266+MQTT 模拟设备上报数据到平台

前置工作 Thingsboard平台ESP 8266 NodeMCU 开发板IDE&#xff1a; Arduino 或 VScode 均可 服务端具体对接流程 系统管理员账号通过 Thingsboard 控制面板创建租户等信息并以租户账号登录 实体 —> 设备维护具体设备信息 创建完成后通过管理凭据修改或直接复制访问令牌…

实力上榜!Coremail连续5年入选中国网络安全市场全景图

7月4日&#xff0c;网络安全行业研究机构数说安全正式发布《2024年中国网络安全市场全景图》&#xff08;以下简称“全景图”&#xff09;&#xff0c;这是自2018年开始&#xff0c;数说安全发布的第七版全景图。 作为国内头部电子邮件产品与解决方案提供商&#xff0c;Coremai…

Linux基础: 二. Linux的目录和文件

文章目录 二. Linux的目录和文件1.1 目录概要1.2 目录详细说明 二. Linux的目录和文件 1.1 目录概要 command&#xff1a;ls / Linux的文件系统像一棵树一样&#xff0c;树干是根目录&#xff08;/&#xff09;&#xff0c;树枝是子目录&#xff0c;树叶是文件&#xff1b; …

Qt 网络编程实战

一.获取主机的网络信息 需要添加network模块 QT core gui network主要涉及的类分析 QHostInfo类 QHostInfo::localHostName() 获取本地的主机名QHostInfo::fromName(const QString &) 获取指定主机的主机信息 addresses接口 QNetworkInterface类 QNetworkInterfac…

AI绘画Stable Diffusion:超强InstantID插件—面部特征一致性风格保持与迁移,轻松搞定私人写真摄影,SDWebUI使用指南

大家好&#xff0c;我是设计师阿威 最近经常有同学问到AI绘画Stable Diffusion 关于风格迁移IPA、Instant ID等安装和使用方法&#xff0c;内容虽基础但也属常用工具。因此&#xff0c;本文将核心介绍Instant ID 使用和墨幽人造人XL体验&#xff08;这是一款可出图商用的写实摄…

uniapp微信小程序端实现微信登录

从网上看了一些&#xff0c;好像说是要先调用uni.getUserProfile 或者uni.getUserInfo获取用户信息后&#xff0c;然后再调用uni.login才行&#xff0c;但是我看着uni.getUserProfile和uni.getUserInfo 返回的都是一些匿名信息&#xff08;nickName: "微信用户", 头像…

经济寒冬:竞品凶猛,你的产品如何求生?

那些年曾被竞品干掉的产品 1997年到2010年左右是国内互联网行业的快速发展和多元化发展的时期&#xff0c;这一时期涌现出来一大批优秀的产品&#xff0c;市场竞争越来越激烈。苹果 在20 世纪 80 年代&#xff0c;乔布斯的苹果电脑&#xff0c;在当时可是PC行业的老大&#xf…

tessy 单元测试:小白入门指导手册

目录 1,创建单元测试工程目录 2,导入单元测试源文件 一:创建测试文件夹(最好和代码目录一一对应,方便查找) 二:选择测试环境 三:添加源文件 四:分析源文件 3,编写单元测试用例 一:设置函数参数的传输方向 二:添加单元测试用例 三:编辑单元测试用例数据 …

Kafka抛弃Zookeeper后如何启动?

Kafaka如何下载 官网地址 目前Kafka最新的版本就是3.7.1 我们可以看到下面这两个版本信息&#xff1f;什么意思呢&#xff1f; Scala 2.12 - kafka_2.12-3.7.1.tgz (asc, sha512)Scala 2.13 - kafka_2.13-3.7.1.tgz (asc, sha512) 我们应该知道&#xff0c;一个完整的Kafka实…

互联网十万个为什么之什么是数据备份?

数据备份是按照一定的备份频率创建数据副本的过程&#xff0c;将重要的数据复制到其它位置或者存储介质&#xff0c;并对生成的副本保留一定的时长。备份通常储存在不同的物理介质或云端&#xff0c;以确保数据的连续性和完整性。有效的备份策略至关重要&#xff0c;以防止数据…

c#类型转换和常见集合类型

目录 1. 整数转换&#xff0c;整数和字符串&#xff0c;字符串和整数之间的转换怎么实现&#xff1f; 2. 日期转换&#xff0c;获取当前日期&#xff0c;字符串转日期&#xff0c;日期转字符串怎么实现&#xff1f; 3. 举例一维、二维、三维数组 4. 需求&#xff1a;有个88…

07浅谈大语言模型可调节参数tempreture

浅谈temperature 什么是temperature&#xff1f; temperature是大预言模型生成文本时常用的两个重要参数。它的作用体现在控制模型输出的确定性和多样性&#xff1a; 控制确定性&#xff1a; temperature参数可以控制模型生成文本的确定性&#xff0c;大部分模型中temperatur…

《C++20设计模式》命令模式思考

文章目录 一、前言二、分析 拆解1、经典命令模式2、撤销操作3、关于Invoker类 三、实现 一、前言 哎&#xff01;只要是书上写的和经典设计模式不同&#xff0c;我就会很伤脑筋。&#x1f629; 命令模式到底是干什么的&#xff1f; 答&#xff1a;命令的发送者和接收者完全解…

SQLServer的系统数据库用别的服务器上的系统数据库替换后做跨服务器连接时出现凭证、非对称金钥或私密金钥的资料无效

出错作业背景&#xff1a; 公司的某个sqlserver服务器要做迁移&#xff0c;由于该sqlserver服务器上数据库很多&#xff0c;并且做了很多的job和维护计划&#xff0c;重新安装的sqlserver这些都是空的&#xff0c;于是就想到了把系统4个系统数据库进行替换&#xff0c;然后也把…

应用在灯带Type-C接口上的PD SINK协议芯片ECP5701/ECP5702获取充电器的5V、9V、12V、15V、20V供电

方案背景 近日&#xff0c;欧盟就统一充电器接口的提案达成了一项政治协议&#xff0c;其中规定了在欧盟地区销售的所有手机或其他便携式中小型电子设备必须采用统一的USB Type-C接口。这项决定意味着未来将会有更多的产品强制性地使用TYPE-C充电接口。 在这个背景下&#xf…

算法设计与分析 实验5 并查集法求图论桥问题

目录 一、实验目的 二、问题描述 三、实验要求 四、实验内容 &#xff08;一&#xff09;基准算法 &#xff08;二&#xff09;高效算法 五、实验结论 一、实验目的 1. 掌握图的连通性。 2. 掌握并查集的基本原理和应用。 二、问题描述 在图论中&#xff0c;一条边被称…

剑指西门子ABB施耐德,中国自动化公司杀入全球市场,业绩增长90%

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》 更多的海量【智能制造】相关资料&#xff0c;请到智能制造online知识星球自行下载。 一提到工业自动化领域&#xff0c;西门子、施耐德、ABB这些…