nftables 包過濾器版本 1.0.1

封包過濾器 nftables 1.0.1 版本已發布,統一了 IPv4、IPv6、ARP 和橋接器的封包過濾介面(旨在取代 iptables、ip6table、a​​rptables 和 ebtables)。 Linux 核心 1.0.1-rc5.16 中包含 nftables 1 版本正常運作所需的變更。

nftables 軟體包包括在用戶空間中運行的資料包過濾器元件,而核心級工作由 nf_tables 子系統提供,該子系統自 3.13 版本以來一直是 Linux 核心的一部分。 核心層僅提供通用的與協定無關的接口,提供從資料包中提取資料、執行資料操作和流量控制的基本功能。

過濾規則本身和特定於協議的處理程序被編譯成用戶空間字節碼,之後使用 Netlink 接口將該字節碼加載到內核中,並在類似於 BPF(伯克利數據包過濾器)的特殊虛擬機中的內核中執行。 這種方法可以顯著減少在內核級別運行的過濾代碼的大小,並將所有解析規則的功能和處理協議的邏輯移至用戶空間。

主要創新:

  • 減少載入大型集合和地圖列表時的記憶體消耗。
  • 場景和地圖清單的重新載入速度已加快。
  • 大型規則集中選定表和鏈的輸出已加速。 例如,「nft list Ruleset」指令顯示一組100萬行的規則的執行時間為3.049秒,而當僅輸出nat和filter表時(「nft list table nat」、「nft list table filter」) 」)減少到1.969 和0.697 秒。
  • 當處理具有大型集合和映射清單的規則時,使用「--terse」選項執行查詢的速度得到了加快。
  • 可以過濾來自「egress」鏈的流量,該流量在與 netdev 鏈(egress hook)中的 egress 處理程序相同的層級進行處理,即在驅動程式從核心網路堆疊接收資料包的階段。 表 netdev 過濾器 { 鏈出口 { 類型過濾器鉤子出口設備 = { eth0, eth1 } 優先權 0; 元優先權設定 ip Saddr 映射 { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • 允許在給定偏移處匹配和修改包頭中的位元組和封包的內容。 # nft 新增規則 xy @ih,32,32 0x14000000 計數器 # nft 新增規則 xy @ih,32,32 設定 0x14000000 計數器

來源: opennet.ru

添加評論