UFW 与 nftables 对比
nftables 正取代 iptables 成为内核默认包过滤框架,UFW 的位置在哪?本文对比两者的架构、规则写法、性能与持久化,给出新旧栈并存的务实路线。
直接回答:nftables 是 iptables 官方继任者——同一团队开发,修掉性能与架构老问题,直接对话内核因而强大也晦涩;UFW 是对 netfilter 的友好封装,UFW 通常使用 iptables 工具链,是否经 iptables-nft 兼容层生成 nftables 规则取决于发行版。日常服务器防护用 UFW,复杂策略(集合、映射、多协议族统一)直接写 nftables。
架构对比
- UFW:人话命令生成底层规则,面向"把常见事做对"
- nftables:统一框架取代 iptables/ip6tables/arptables/ebtables 四套工具——一个规则集管所有协议族,原子提交、集合(set)与映射(map)让大规模规则性能质变
远程变更安全
修改默认策略、启停管理器或重载前,备份当前规则并记录实际 SSH 端口和管理来源,保留当前会话并确认带外/云控制台可用。先放行管理连接、回环与已建立连接,再从第二个终端新建 SSH 会话验证,成功后才收紧旧规则。准备经验证的限时回退,不要远程清空规则或盲目 reset。IPv4、IPv6、安全组及 Docker 转发路径需分别验证,告警不能替代防锁定措施。
变更时记下规则版本与生效时间,再从业务实际访问的节点发起请求。例如通过观测云 HTTP 拨测观察接口响应是否变化,能补充一次性的连通测试;拒绝规则仍需从应被禁止的来源验证,SSH 和带外恢复路径也要独立保留。
规则写法
# UFW
ufw allow from 203.0.113.0/24 to any port 443 proto tcp
# nftables
nft add rule inet filter input ip saddr 203.0.113.0/24 tcp dport 443 accept
示例要求 inet filter 表和挂入 input hook 的链已存在,并非完整防火墙。inet 支持两个地址族,但本例 ip saddr 仅匹配 IPv4;IPv6 来源需用 ip6 saddr。
高级能力与性能
nftables 的集合匹配(数万个 IP 一个 set)比 iptables 逐条线性匹配可能减少匹配开销,实际收益需按规则结构与流量验证;原子替换整个规则集,杜绝"改到一半"的中间态——这正是它取代 iptables 的硬理由。
务实路线
- 单机常规防护:UFW(先检查实际 legacy/nft 兼容后端)
- 大规则集/复杂策略/性能敏感:nftables 原生(或 firewalld 这类 zone 抽象)
- 学习投资:nftables 是 Linux 防火墙的未来标准,值得运维逐步掌握
常见问题(FAQ)
Q:现在学 iptables 还有必要吗?
A:存量系统维护需要读得懂;新系统直接学 nftables。两者概念同源(表/链/规则),迁移不难。
Q:UFW 底层换成 nftables 后有什么变化?
A:命令行体验无变化;使用 iptables-nft 时通常可在 nft list ruleset 看到兼容规则;仍应由 UFW 管理,勿跨工具修改。
Q:nftables 配置文件怎么管理?
A:规则路径依发行版而异,常为 /etc/nftables.conf;先 nft -c -f 校验,再在有带外控制台与回退的窗口加载,检查 flush ruleset 是否会清除其他管理器的规则;纳入版本控制,变更走 review——比散落的 iptables 命令健壮得多。
官方参考
本文依据官方文档整理,示例未在本文中进行运行验证。生产部署需按所用版本、权限和实际负载验证。