最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux 网络防火墙进阶:如何用 nftables 替代 iptables
时间:2026-07-07 09:32:46 编辑:袖梨 来源:一聚教程网
nftables是iptables的全面升级而非简单命令替换,它以统一语法管理双栈及多表功能,Ubuntu 22.04+默认启用其后端,iptables仅作为兼容层运行;其核心由表、链、规则三层构成,支持inet协议族、原子操作与集合语法,6行即可实现最小安全策略,规则量减少40%且语义更清晰。
nftables 不是 iptables 的简单“命令替换”,而是整套规则模型的升级。它用统一语法管理 IPv4/IPv6、filter/NAT/mangle,规则更少、语义更直、执行更快。Ubuntu 22.04+ 默认已启用其后端,iptables 命令实际走的是兼容层(iptables-nft),所以迁移不是可选项,而是系统推荐路径。
理解表、链、规则三层结构
nftables 围绕三个基础元素组织:
-
表(Table):仅作命名空间,不绑定功能。常用协议族有
inet(IPv4+IPv6 同时生效,推荐)、ip(仅 IPv4)、ip6(仅 IPv6) -
链(Chain):分基础链(如
input、forward,挂载在内核 hook 点)和普通链(用于模块化跳转)。创建时需指定hook和priority(数字越小越先执行) -
规则(Rule):匹配条件与动作写在同一行。支持集合
{22, 80, 443}、端口范围80-8080、状态直写ct state established,无需-m conntrack等额外模块加载
快速部署最小安全策略
6 行命令即可构建白名单式防护框架:
nft add table inet filternft add chain inet filter input { type filter hook input priority 0 ; policy drop ; }nft add rule inet filter input iifname "lo" acceptnft add rule inet filter input ct state { established, related } acceptnft add rule inet filter input tcp dport { 22, 80, 443 } ct state new acceptnft add rule inet filter input icmp type echo-request accept
这套配置默认拒绝所有入站流量,只放行回环通信、已建立连接、SSH/HTTP/HTTPS 及 ping 请求,规则量比 iptables 减少约 40%,逻辑清晰无歧义。
处理 Docker 等容器场景
Docker 默认操作 iptables 链,易与手动规则冲突。nftables 下有两种稳妥方案:
- 禁用 Docker 自动管理:启动
dockerd时加--iptables=false,再显式将容器网桥流量纳入 nftables,例如:nft add rule inet filter forward iifname "docker0" oifname "eth0" ct state new accept - 隔离规则空间:为容器 NAT 单独建
inet nat表,或定期运行nft list ruleset检查是否出现意外插入的规则
确保规则重启后依然生效
nft 命令默认只影响运行时,需持久化保存:
- 导出当前规则到配置文件:
sudo nft list ruleset > /etc/nftables.conf - 启用服务自动加载:
sudo systemctl enable nftables - 加载配置立即生效:
sudo nft -f /etc/nftables.conf - (可选)禁用旧 iptables 服务避免干扰:
sudo systemctl disable --now iptables ip6tables
不复杂但容易忽略。
相关文章
- 高德地图路线规划显示异常怎么办 07-09
- 漫蛙漫画官方版正版ios如何安装 07-09
- 胖东来官网地址-胖东来官方网站入口地址 07-09
- investopedia官网中文版入口-investopedia国内能用的官方网页版入口地址 07-09
- 一点文学txt小说网站入口-一点文学小说官网入口地址2026最新 07-09
- 易校园怎么绑定微信 07-09