nftables 数据包过滤器 1.0.2 发布

数据包过滤器 nftables 1.0.2 版本已发布,统一了 IPv4、IPv6、ARP 和网桥的数据包​​过滤接口(旨在取代 iptables、ip6table、a​​rptables 和 ebtables)。 nftables 1.0.2 版本正常工作所需的更改包含在 Linux 内核 5.17-rc 中。

nftables 软件包包括在用户空间中运行的数据包过滤器组件,而内核级工作由 nf_tables 子系统提供,该子系统自 3.13 版本以来一直是 Linux 内核的一部分。 内核层仅提供通用的与协议无关的接口,提供从数据包中提取数据、执行数据操作和流量控制的基本功能。

过滤规则和特定于协议的处理程序在用户空间中编译为字节码,然后使用 Netlink 接口将该字节码加载到内核中,并在内核中的特殊虚拟机(类似于 BPF(伯克利数据包过滤器))中执行。 这种方法允许您显着减少在内核级别运行的过滤代码的大小,并将用于处理协议的解析规则和逻辑的所有功能移至用户空间。

主要创新:

  • 添加了规则优化模式,使用新的“-o”(“--optimize”)选项启用,该选项可以与“--check”选项结合使用来检查和优化规则集文件的更改,而无需实际加载它。 优化允许您组合类似的规则,例如规则:meta iifname eth1 ip Saddr 1.1.1.1 ip baddr 2.2.2.3 Accept meta iifname eth1 ip Saddr 1.1.1.2 ip baddr 2.2.2.5 Accept ip Saddr 1.1.1.1 ip baddr 2.2.2.2 .2.2.2.2 接受 ip baddr 3.3.3.3 ip baddr XNUMX 丢弃

    将被组合成元 iifname 。 ip Saddr。 ip 爸爸 { eth1 . 1.1.1.1. 2.2.2.3、eth1。 1.1.1.2。 2.2.2.5 } 接受 ip Saddr 。 ip baddr vmap { 1.1.1.1 . 2.2.2.2:接受,2.2.2.2。 3.3.3.3:删除}

    用法示例: # nft -c -o -fruleset.test 合并:ruleset.nft:16:3-37: ip baddr 192.168.0.1 counter Acceptruleset.nft:17:3-37: ip baddr 192.168.0.2 counter Accept ruleset.nft:18:3-37: ip baddr 192.168.0.3 counter 接受为: ip baddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } counter 数据包 0 字节 0 接受

  • set 列表实现指定 ip 和 tcp 选项以及 sctp 块的功能: set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } 链 c5 { ip 选项 ra 值 @s5 接受 } 链 c7 { sctp chunk init num-inbound-streams @s7 接受 }
  • 添加了对 TCP 选项 fastopen、md5sig 和 mptcp 的支持。
  • 添加了对在映射中使用 mp-tcp 子类型的支持:tcp option mptcp subtype 1
  • 改进了内核端过滤代码。
  • Flowtable 现在完全支持 JSON 格式。
  • 提供了在以太网帧匹配操作中使用“拒绝”操作的能力。 ether Saddr aa:bb:cc:dd:ee:ff ip baddr 192.168.0.1 拒绝

来源: opennet.ru

添加评论