nftables(1)基本原理

簡介

nftables?是 Linux 內核中用于數據包分類的現代框架,用來替代舊的?iptables(包括?ip6tables,?arptables,?ebtables?等,統稱為 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.pswp.cn/web/40023.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40023.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40023.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【java計算機畢設】辦公用品管理系統MySQL ssm JSP maven項目設計代碼源碼+文檔 前后端一體

1項目功能 【java計算機畢設】辦公用品管理系統MySQL ssm JSP maven項目設計代碼源碼文檔 前后端一體 2項目介紹 系統功能: 辦公用品管理系統包括管理員、用戶倆種角色。 管理員功能包括個人中心模塊用于修改個人信息和密碼、用戶管理、用品分類管理、用品信息管理…

springcloud+vue項目,controller層接口返回json數據,前端可以接收到數據,但瀏覽器“F12-->網絡-->響應“顯示為空的問題處理

1.顯示為空的場景 SharetekR(access_tokeneyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJsb2dpblR5cGUiOiJsb2dpbiIsImxvZ2luSWQiOiJQQzoxODA1ODA4ODc1MjUwMTIyNzUyIiwicm5TdHIiOiJrZEoxV05CV3NBSUdYb05TbktSU3kzOGNuSnk3c3FRTSIsInVzZXJJZCI6MTgwNTgwODg3NTI1MDEyMjc1MiwidXNlck5h…

grpc-go客戶端接口添加

【1】 proto相關文件同服務端,如已經生成,可以直接使用服務端的文件(包) 【2】新建一個目錄“WHG_CLIENT”,目錄下新建一個main.go文件 package mainimport ("context""log""grpc-go-maste…

Kafka系列之SpringBoot集成Kafka

本文介紹如何在springboot項目中集成kafka收發message。 pom依賴 springboot相關的依賴我們就不提了&#xff0c;和kafka相關的只依賴一個spring-kafka集成包 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka<…

STM32F1+HAL庫+FreeTOTS學習5——內核中斷管理及中斷控制函數

STM32F1HAL庫FreeTOTS學習5——中斷管理和臨界段代碼保護 中斷簡介中斷優先級寄存器拓展FreeRTOS中PendSV和Systick中斷優先級配置三個中斷屏蔽寄存器FreeRTOS中斷管理函數代碼驗證 上一期我們學習了FreeRTOS中任務掛起與恢復&#xff0c;在中斷服務程序中恢復任務過程中&#…

[Redis]哨兵機制

哨兵機制概念 在傳統主從復制機制中&#xff0c;會存在一些問題&#xff1a; 1. 主節點發生故障時&#xff0c;進行主備切換的過程是復雜的&#xff0c;需要人工參與&#xff0c;導致故障恢復時間無法保障。 2. 主節點可以將讀壓力分散出去&#xff0c;但寫壓力/存儲壓力是無法…

印章誰在管、誰用了、用在哪?契約鎖讓您打開手機一看便知

“印章都交給誰在管”、“哪些人能用”、“都有哪些業務在用”…這些既是管理者最關心的印章問題也是影響印章安全的關鍵要素。但是公司旗下分子公司那么多&#xff0c;各類公章、法人章、財務章、合同章一大堆&#xff0c;想“問”明白很難。 契約鎖電子簽及印控平臺推出“印章…

14-11 2024 年的 13 個 AI 趨勢

2024 年的 13 個 AI 趨勢 人工智能對環境的影響和平人工智能人工智能支持的問題解決和決策針對人工智能公司的訴訟2024 年美國總統大選與人工智能威脅人工智能、網絡犯罪和社會工程威脅人工智能治療孤獨與對人工智能的情感依賴人工智能影響者中國爭奪人工智能霸主地位人工智能…

一句話回答的前端面試題

該篇文章為一句話的答案&#xff0c;想看更詳細的面試題請看這篇>《前端面試題》 原型鏈&#xff1a; 實例與原型的鏈條&#xff0c;原型是prototype&#xff0c;鏈是__proto__&#xff0c;每個函數有一個原型對象&#xff0c;函數在創建時有一個默認屬性 prototype&#x…

YOLOv10全網最新創新點改進系列:融合GSConv+Slim Neck,雙改進、雙增強,替換特征融合層實現, 輕量化漲點改進策略,有效漲點神器!

YOLOv10全網最新創新點改進系列&#xff1a;融合GSConvSlim Neck&#xff0c;雙改進、雙增強&#xff0c;替換特征融合層實現&#xff0c; 輕量化漲點改進策略&#xff0c;有效漲點神器&#xff01; 所有改進代碼均經過實驗測試跑通&#xff01;截止發稿時YOLOv10已改進40&…

【數據結構】06.棧隊列

一、棧 1.1棧的概念及結構 棧&#xff1a;一種特殊的線性表&#xff0c;其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂&#xff0c;另一端稱為棧底。棧中的數據元素遵守后進先出LIFO&#xff08;Last In First Out)的原則。 壓棧&#…

FPGA就業方向以及主要工作

FPGA&#xff08;Field-Programmable Gate Array&#xff09;作為可編程邏輯器件&#xff0c;在多個行業和領域中都有廣泛的應用。具備FPGA技能的專業人士可以在多個方向上找到就業機會&#xff0c;以下是FPGA主要的就業方向及其對應的主要工作職責&#xff1a; 通信行業 職位…

LangChain終極內幕指南,學會langchain就看它了

1.概述 在人工智能迅速演進的時代&#xff0c;諸如Open AI的ChatGPT和Google的Bard等大型語言模型(LLMs)正徹底改變我們與技術互動的方式。這些技術巨頭和SaaS公司正在競相利用LLMs的威力&#xff0c;創造更為智能和實用的應用程序。 然而&#xff0c;真正的變革并非僅僅停留…

低壓電工精選歷年真題附答案

1.當電壓為5V時&#xff0c;導體的電阻值為5歐&#xff0c;那么當電阻兩端電壓為2V時&#xff0c;導體的電阻值為()歐。[單選題] A 、10B、5(正確答案) C、2 2.當電氣火災發生時&#xff0c;應首先切斷電源再滅火&#xff0c;但當電源無法切斷時&#xff0c;只能帶電滅火&…

Finding and exploting an unused API endpoint

Using 0$ account buy a piece of lether priced at $133 1、嘗試訪問api接口 大概率可能訪問不到,但是可以嘗試訪問下 /api/swagger/v1 /openapi.json 2、頁面功能點尋找 api send to Repeter 3、Find Supported HTTP請求 POST方法測試 通過測試得知支持GET方法和PATC…

C語言實現的人員管理系統(順序表版)

該系統具有以下主要功能&#xff1a; 添加人員信息&#xff1a;在有空間的前提下&#xff0c;用戶輸入人員的工號、姓名、性別、聯系電話和 QQ 號等信息&#xff0c;系統會自動檢查編號的唯一性&#xff0c;確保不重復。查找人員信息&#xff1a;提供按工號和姓名兩種查找方式…

av_read_frame 代碼研究

------------------------------------------------------------ author: hjjdebug date: 2024年 07月 05日 星期五 11:02:51 CST av_read_frame 代碼研究 ------------------------------------------------------------ 有人只標注一層,標注一層太膚淺了.不能了解底層之精妙…

Lianwei 安全周報|2024.07.01

新的一周又開始了&#xff0c;以下是本周「Lianwei周報」&#xff0c;我們總結推薦了本周的政策/標準/指南最新動態、熱點資訊和安全事件&#xff0c;保證大家不錯過本周的每一個重點&#xff01; 政策/標準/指南最新動態 01 出于安全考慮&#xff0c;拜登下令禁用卡巴斯基殺毒…

【康復學習--LeetCode每日一題】3115. 質數的最大距離

題目&#xff1a; 給你一個整數數組 nums。 返回兩個&#xff08;不一定不同的&#xff09;質數在 nums 中 下標 的 最大距離。 示例 1&#xff1a; 輸入&#xff1a; nums [4,2,9,5,3] 輸出&#xff1a; 3 解釋&#xff1a; nums[1]、nums[3] 和 nums[4] 是質數。因此答案是…

SpringBoot各類數量限制及超出后拋出的異常

前言 在使用SpringBoot開發接口時&#xff0c;動不動的就發生各種超過默認值的限制&#xff0c;這里總結了下SpringBoot默認限制的設置以及可能會發生的異常&#xff0c;便于問題的排查和快速修改默認值。 配置項配置項說明默認值超過大小后拋出的異常spring.servlet.multipa…