Linux新一代防火墙nftables详解:配置指南与优势对比

Linux新一代防火墙nftables详解:配置指南与优势对比
作为替代 iptables 的现代 Linux 防火墙工具,nftables 以更直观的语法、高效的规则管理和强大的扩展能力重塑了网络安全配置方式。本文从基本概念、实操配置到优势对比,全面解读 nftables 的核心逻辑与使用方法,帮助管理员快速掌握这一新一代防火墙工具,提升网络防护效率。

一、nftables 的核心概念

nftables 通过 “表 - 链 - 规则” 三层结构实现网络流量管控,核心概念如下:

1. 表(tables):规则的集合

表按功能分类,常见类型及作用:
  • filter:过滤网络流量,包含 input(入站)、output(出站)、forward(转发)等链;
  • nat:实现网络地址转换(NAT),包含 prerouting(路由前)、postrouting(路由后)等链;
  • route:用于流量重路由,替代 iptablesmangle 链的 output 钩子功能。

2. 链(chains):规则的容器

链定义流量处理的时机与场景,核心类型:

 

  • input:处理进入本机的数据包;
  • output:处理本机发出的数据包;
  • forward:处理转发至其他目的地的数据包;
  • prerouting:数据包刚进入,尚未确定路由时触发;
  • postrouting:数据包即将离开本机时触发(常用于 SNAT)。

3. 规则(rules):流量处理的核心

每条规则由 “匹配条件” 和 “动作” 组成:

 

  • 匹配条件:指定数据包特征(如接口、端口、协议等);
  • 动作:定义匹配后处理方式,常见动作包括accept(允许)、drop(丢弃,无回应)、reject(拒绝,发回应)、dnat(目的地址转换)、snat(源地址转换)。

二、nftables 实操配置指南

1. 基础配置步骤

(1)创建表和链

# 创建名为firewall的inet类型表(同时支持IPv4/IPv6)  
sudo nft add table inet firewall  

# 在表中创建链并设置默认策略  
sudo nft add chain inet firewall input { type filter hook input priority 0; policy drop; }  # 入站默认丢弃  
sudo nft add chain inet firewall output { type filter hook output priority 0; policy accept; }  # 出站默认允许  
sudo nft add chain inet firewall forward { type filter hook forward priority 0; policy drop; }  # 转发默认丢弃  

(2)添加核心规则

# 允许本地回环接口(lo)流量  
sudo nft add rule inet firewall input iifname "lo" accept  

# 允许已建立/相关连接  
sudo nft add rule inet firewall input ct state established,related accept  

# 开放常用端口(SSH/HTTP/HTTPS)  
sudo nft add rule inet firewall input tcp dport 22 accept  # SSH  
sudo nft add rule inet firewall input tcp dport 80 accept  # HTTP  
sudo nft add rule inet firewall input tcp dport 443 accept  # HTTPS  

# 允许ICMP/ICMPv6 ping请求  
sudo nft add rule inet firewall input ip protocol icmp icmp type echo-request accept  # IPv4 ping  
sudo nft add rule inet firewall input ip6 nexthdr icmpv6 icmpv6 type echo-request accept  # IPv6 ping  

(3)规则管理与应用

  • 查看规则sudo nft list ruleset
  • 保存规则到文件sudo nft list ruleset > /etc/nftables.conf
  • 加载规则sudo nft -f /etc/nftables.conf
  • 备份与恢复:备份用nft list ruleset > 备份文件,恢复用nft -f 备份文件

(4)删除规则与链

  • 删规则:sudo nft delete rule inet firewall input tcp dport 22 accept
  • 删链(需先清空):sudo nft flush chain inet firewall input && sudo nft delete chain inet firewall input

三、nftables vs iptables:核心优势

相比传统 iptables,nftables 的核心优势体现在:

 

  1. 性能更优:减少内核与用户空间交互,大量规则场景下处理效率更高。
  2. 语法简化:更贴近自然语言的规则定义,降低配置错误率(如统一用 “tcp dport” 替代 iptables 的 “--dport”)。
  3. 扩展性更强:支持更复杂的匹配条件和动作,适配现代网络拓扑(如虚拟化、容器环境)。
  4. 集成度高:可与 tc(流量控制)等子系统无缝集成,实现 “防火墙 + 流量管理” 一体化。
  5. 安全防护升级:更灵活的日志监控、网络隔离策略,适配服务器、企业内网等场景的安全需求。

四、从 iptables 迁移的注意事项

  1. 学习曲线:需熟悉 “表 - 链 - 规则” 新逻辑,建议通过实操案例逐步掌握语法。
  2. 兼容性检查:确认 Linux 发行版支持 nftables(主流发行版如 Ubuntu 20.04+、CentOS 8 + 已默认支持)。
  3. 安全原则:迁移后遵循 “最小权限”,仅开放必要端口,默认策略优先设为 “drop”。

结语

nftables 以简洁语法、高效性能和强大扩展能力,成为 Linux 防火墙的未来主流。无论是服务器防护、企业内网隔离还是虚拟化环境网络管理,掌握其配置逻辑都能显著提升网络安全管控效率。对于系统管理员而言,从 iptables 迁移至 nftables 不仅是技术升级,更是适应现代网络架构的必然选择。
阅读剩余