插件窝 干货文章 什么是 nftables ? 它与 iptables 的区别是什么?

什么是 nftables ? 它与 iptables 的区别是什么?

iptables nftables 规则 使用 508    来源:    2025-04-20

nftables 是 Linux 内核中的新一代数据包过滤框架,旨在替代传统的 iptablesip6tablesarptablesebtables。它提供了更简洁的语法、更高的性能以及更统一的管理方式。以下是它与 iptables 的主要区别和关键特性:


1. 架构设计

  • nftables
    • 基于统一的 Netfilter 子框架,使用单一的核心引擎(nft)管理所有协议(IPv4/IPv6/ARP/桥接等)。
    • 规则通过 表达式(expressions) 组合,灵活性更高。
  • iptables
    • 由多个独立工具组成(iptablesip6tablesarptablesebtables),每个工具针对不同协议。
    • 规则基于 链(chains)表(tables) 的固定结构。

2. 语法与易用性

  • nftables
    • 使用更简洁的类脚本语法,支持变量和集合(set/map),规则可读性更强。
    • 示例: bash nft add table ip filter nft add chain ip filter input { type filter hook input priority 0 \; } nft add rule ip filter input tcp dport 22 accept
  • iptables
    • 语法冗长,不同协议需使用不同命令。
    • 示例: bash iptables -A INPUT -p tcp --dport 22 -j ACCEPT

3. 性能

  • nftables
    • 规则通过 nftables 虚拟机执行,减少了内核-用户空间切换,性能更高。
    • 支持 规则集原子化更新(所有规则一次性加载,避免临时不一致)。
  • iptables
    • 每条规则单独添加/删除,频繁操作时效率较低。

4. 功能扩展

  • nftables
    • 原生支持 集合(set)和映射(map),可实现动态规则(如动态封禁IP)。
    • 支持 级联(concatenation),将多个条件(如IP+端口)组合为高效匹配。
    • 更强大的日志(log)和跟踪(trace)功能。
  • iptables
    • 依赖扩展模块(如 ipset)实现类似功能,配置更复杂。

5. 兼容性

  • nftables
    • 提供 iptables-nft 兼容层,可直接运行 iptables 命令(实际转换为 nft 规则)。
    • 但部分高级扩展(如 connlimit)可能不完全兼容。
  • iptables
    • 传统工具,已被许多旧脚本和工具依赖。

6. 状态与发展

  • nftables
    • 自 Linux 内核 3.13(2014年)引入,是 Netfilter 项目的未来方向。
    • 主流发行版(如 RHEL 8+、Debian 10+)默认使用 nftables
  • iptables
    • 处于维护模式,新功能开发已停止。

何时选择?

  • 使用 nftables:需要现代功能、更简洁的配置或高性能场景。
  • 使用 iptables:兼容旧系统或依赖特定 iptables 模块的脚本。

迁移工具

  • iptables 迁移到 nftablesbash iptables-save > iptables.rules iptables-restore-translate -f iptables.rules > nftables.rules nft -f nftables.rules

通过 nft list ruleset 可查看当前规则。建议逐步迁移并测试规则等效性。