nftables 是什么
nftables 是什么
nftables 是 Linux 内核的一个子系统,用于网络包的过滤、分类和处理。它是 Netfilter 项目的一部分,主要用于实现防火墙规则、NAT(网络地址转换)和其他包处理功能。 nftables 自 Linux 内核 3.13 版本起可用,并逐渐取代了传统的 iptables、ip6tables、arptables 和 ebtables 等工具。
背景与发展
- 起源:nftables 由 Netfilter 项目开发,旨在提供一个更灵活、高效的框架来处理网络流量。 它于 2013 年引入内核,并已成为大多数现代 Linux 发行版的默认防火墙工具(如 Red Hat Enterprise Linux 8、Arch Linux、Debian 等)。
- 取代 iptables:与 iptables 不同,nftables 使用单一的 nft 命令行工具来管理所有协议(IPv4、IPv6、ARP、桥接等),简化了配置并提高了性能。
主要功能
- 包过滤:根据源/目标 IP、端口、协议等规则过滤流量,支持状态跟踪(stateful inspection)。
- NAT 和重定向:支持源 NAT(SNAT)、目标 NAT(DNAT)和端口转发。
- 高级特性:内置映射(maps)和集合(sets)用于高效规则存储,支持动态更新规则而不中断流量。
- 性能优势:使用更少的内核代码和用户空间工具,减少上下文切换,提高吞吐量。
与 iptables 的比较
特性 | nftables | iptables |
---|---|---|
命令工具 | nft(单一工具) | iptables、ip6tables 等(多工具) |
语法 | 基于表(tables)、链(chains)和规则(rules)的层次结构 | 基于链和规则的线性结构 |
灵活性 | 支持变量、集合、原子规则更新 | 需外部工具如 ipset 扩展 |
兼容性 | 向后兼容 iptables(通过 nftables-compat) | 旧版标准,但逐渐被弃用 |
nftables 的配置更简洁,例如一个基本规则:
nft add table inet filter
nft add chain inet filter input { type filter hook input priority 0 \; policy accept \; }
nft add rule inet filter input tcp dport 22 accept
如何开始使用
- 安装:大多数发行版已预装 nft(Debian/Ubuntu:
apt install nftables
;CentOS/RHEL:yum install nftables
)。 - 查看规则:
nft list ruleset
。 - 编辑配置文件:规则通常存储在
/etc/nftables.conf
,用systemctl enable nftables
启用服务。 - 文档资源:参考官方 wiki(nftables.org)或发行版手册。