iptables 之后:用 nftables 重写防火墙规则

运维2025-08-23 · 阅读 10 分钟

服务器上的 iptables 规则是前任留下的,七十多行,里面一半是注释,一半是绕路写法。每次想改都要先查半天文档,时间一长就没人敢动了。借着一次迁移,我把它重写成了 nftables。

语法上最大的变化

iptables 的规则是“链”堆出来的,先看 INPUT,再看 FORWARD,一层层匹配。nftables 是“表 + 链 + 规则”,结构更像配置文件,可以整体替换。改一处不用再把整条链倒背一遍。

一条规则能顶过去好几条

比如只放行特定网段访问 SSH,iptables 要拆成两条;nftables 可以直接在一条规则里写 ip saddr != 10.0.0.0/8 drop。规则变短之后,逻辑反而更容易看明白。

迁移时踩的坑

第一个坑是默认策略。nftables 的链默认策略是 accept,而 iptables 是 drop,迁移时如果忘了显式设置,等于把门全开了。第二个坑是 nft 命令的提交语义,规则写进去要显式 commit 才生效,调试时很容易以为没写进去。

迁移前务必备份:iptables-save 和 nft list ruleset 各存一份,出问题能立刻回滚。

最后

重写之后规则从七十多行降到三十行左右,而且我能一眼看懂每条在干什么。回头看,之前一直不敢动,不是因为它难,是因为它“看不懂”。可读性本身就是安全性的一部分。

← 返回首页