nftables 是由 Netfilter 项目开发的新一代 Linux 防火墙框架,用于替代 iptables、ip6tables、arptables 和 ebtables。它提供了一个统一的、简化的接口来定义、管理和查询防火墙规则,旨在提高性能和灵活性。
统一的命令行工具:
nft
的命令行工具,统一管理 IPv4、IPv6、防火墙、NAT 和桥接过滤。改进的规则表达能力:
高效的规则集管理:
内核空间和用户空间的分离:
表(table):
链(chain):
input
、output
和 forward
)或用户自定义的。规则(rule):
集合(set)和映射(map):
创建表:
nft add table ip filter
添加链:
nft add chain ip filter input { type filter hook input priority 0 \; }
添加规则:
nft add rule ip filter input ip saddr 192.168.1.0/24 counter accept
使用集合:
nft add set ip filter blacklist { type ipv4_addr \; }
nft add element ip filter blacklist { 192.168.1.100, 192.168.1.101 }
nft add rule ip filter input ip saddr @blacklist drop
从 iptables 迁移到 nftables 并不困难。可以使用 iptables-translate
工具将现有的 iptables 规则转换为 nftables 规则,例如:
iptables-translate -A INPUT -s 192.168.1.0/24 -j ACCEPT
会生成类似以下的 nftables 规则:
nft add rule ip filter input ip saddr 192.168.1.0/24 accept
动态更新规则:
扩展模块:
nft_set
, nft_ct
等,用于更高级的网络功能,如连接跟踪。nftables 提供了一种更现代化、更高效的防火墙管理方式。通过统一的命令行工具、灵活的规则表达能力和改进的性能,nftables 成为替代 iptables 的理想选择。对于需要管理复杂网络配置的管理员来说,学习和采用 nftables 是非常值得的。