当前位置:首页 > 服务器技术 > 正文

掌握现代Linux防火墙(nftables入门与实战指南)

在现代Linux系统中,nftables 已经逐渐取代了传统的 iptables,成为新一代的包过滤框架。如果你是刚接触Linux网络管理的新手,本文将带你从零开始了解并使用 nft 命令来配置防火墙规则。无论你是系统管理员、开发者还是网络安全爱好者,这篇教程都能让你快速上手。

掌握现代Linux防火墙(nftables入门与实战指南) nftables  Linux防火墙 网络安全 nft命令教程 第1张

什么是 nftables?

nftables 是 Linux 内核自 3.13 版本起引入的新一代数据包过滤框架,由 Netfilter 项目开发。它旨在替代老旧的 iptables、ip6tables、arptables 和 ebtables,提供更简洁、高效和统一的语法。使用 nft 命令,你可以轻松管理 IPv4、IPv6、ARP 等多种协议的规则。

为什么选择 nftables?

  • 语法更简洁,规则更易读写
  • 支持原子性规则更新,避免规则中断
  • 性能更高,内核处理更高效
  • 统一管理多种协议(IPv4/IPv6/ARP等)

安装 nftables

大多数现代 Linux 发行版(如 Ubuntu 20.04+、CentOS 8+、Debian 10+)默认已预装 nftables。如果没有,可以使用以下命令安装:

# Ubuntu/Debiansudo apt updatesudo apt install nftables# CentOS/RHEL/Fedorasudo dnf install nftables# 或sudo yum install nftables

基本概念:表、链、规则

在 nftables 中,有三个核心概念:

  • 表(Table):用于组织链,按地址族(如 inet、ip、ip6)分类。
  • 链(Chain):包含规则的容器,分为基础链(hook 链)和普通链。
  • 规则(Rule):定义匹配条件和动作(如 accept、drop)。

常用 nft 命令示例

1. 查看当前规则

sudo nft list ruleset

2. 创建一个新表

sudo nft add table inet myfirewall

这里 inet 表示同时支持 IPv4 和 IPv6。

3. 添加一个输入链

sudo nft add chain inet myfirewall input { type filter hook input priority 0 \; }

这条命令创建了一个名为 input 的链,并将其挂载到 netfilter 的 input hook 上,用于处理进入本机的数据包。

4. 添加允许 SSH 的规则

sudo nft add rule inet myfirewall input tcp dport 22 accept

这条规则允许目标端口为 22(SSH)的 TCP 流量通过。

5. 默认拒绝其他流量

sudo nft add rule inet myfirewall input drop

保存与恢复规则

nftables 的规则默认不会在重启后保留。要持久化规则,请执行:

# 保存当前规则sudo nft list ruleset > /etc/nftables.conf# 启用 nftables 服务(以 systemd 为例)sudo systemctl enable nftablessudo systemctl start nftables

小贴士:调试与排错

  • 使用 nft list ruleset -a 可显示规则句柄(handle),便于删除特定规则。
  • 删除规则示例:sudo nft delete rule inet myfirewall input handle 3
  • 清空所有规则:sudo nft flush ruleset

结语

通过本教程,你应该已经掌握了 nftables 的基本用法。作为现代 Linux 系统中的标准防火墙工具,学习 nft 命令不仅能提升你的 网络安全 能力,还能让你更高效地管理服务器流量。建议你在测试环境中多加练习,逐步构建适合你需求的防火墙策略。

记住,良好的防火墙配置是保障系统安全的第一道防线。希望这篇 nft命令教程 能帮助你迈出 Linux 网络安全的第一步!