五折优惠 所有套餐限时优惠,起价 $2.48/mo
还剩14分钟
安全与网络

列出和删除 Linux Iptables 规则 - 初学者速查表

莉莉·卡内尔 By 莉莉·卡内尔 14 分钟阅读 更新于 2023 年 9 月 18 日
Iptables 规则的列出和删除指南

未授权访问和服务器黑客攻击是严重威胁,这就是为什么你需要将防火墙作为网络安全技术的一部分。掌握 Iptables 规则是降低 Linux 系统风险的关键技能之一。本教程将指导你了解基本的防火墙概念,如显示和删除 iptables 规则, Ubuntu帮助你通过简单命令来实现。在讨论如何列出或删除 iptables 规则之前,我们先了解一下什么是 iptables 规则以及为什么使用它们。

Iptables 是什么?

iptables 是一个命令行防火墙工具,可以允许或阻止流量通过 政策链。当系统上有连接尝试时,iptables 会在规则列表中查找匹配的规则,为你的网络安全提供有力保障。如果找不到匹配的规则,它会执行默认操作。

iptables 在几乎所有系统上都是预装的 Linux 发行版。您可以使用以下命令来更新或安装它:

sudo apt-get install iptables

为什么使用 Iptables?

作为 Linux 命令行防火墙,iptables 让系统管理员能够通过可配置的表规则处理入站和出站流量。Iptables 使用一组表,每个表包含内置规则或自定义规则的链。

如前所述,iptables 在大多数 Linux 系统的网络安全中起着关键作用。本文的其余部分主要介绍如何列出 iptables 规则,包括显示和删除 iptables 规则的方法。

具体来说,本文将讨论一些关键的 iptables 任务,向你展示如何列出规则、删除数据包和字节计数器、移除 Iptables 规则、清空链、删除所有链以及接受所有流量。

Ubuntu 中 Iptables 完全指南

查看 iptables 规则前,确保你使用的是 Linux 服务器且已安装 iptables 命令。除此之外,你需要有 sudo 权限。配置防火墙时要特别小心,不要误删规则导致自己无法访问服务器(SSH 流量,默认端口 22)。如果因防火墙设置失误而失去访问权限,你需要通过带外控制台连接来修复。

另请阅读: 如何修改 SSH 端口 | Linux 中 SSH 端口的快速分步指南

按规范列出规则

你可以查看你的活跃 iptables 规则 以表格形式 或作为 规则说明列表。这两种方法基本上以不同的格式提供相同的信息。要列出活跃 iptables 的所有规则,你需要运行 iptables 命令并带上 -S选项:

sudo iptables -S

运行 iptables show rules 命令后,你会看到类似这样的输出:

运行 show list rules 的输出结果
运行 show list rules 的输出结果

列出特定链

如果你想限制 show iptables 的输出到特定的链,比如 INPUT、OUTPUT 或 TCP,你可以在 -S 选项后直接指定链名称。例如,以下 iptables 显示规则的命令可以帮你在 TCP 链中指定:

sudo iptables -S TCP

列出 TCP 链的输出
列出 TCP 链的输出

如前所述,还有另一种方式可以查看 iptables 规则:把 iptables 规则当作一个规则表来查看。下面我们来讲这个方法。

按表格列出规则

使用命令查看 iptables 表中的规则可以帮助你比较各种规则。你需要运行下面的 iptables 查看命令,并 -L 选项 以表格形式输出所有这些活跃规则:

sudo iptables -L

该命令会显示所有当前规则,按链分组排列。你可以限制输出仅显示特定链的规则,比如 INPUT、OUTPUT、TCP 等。只需在 -L 选项后直接指定链名称即可。下面是限制 iptables 显示规则到 INPUT 链的示例:

sudo iptables -L INPUT

iptables 输出仅显示 INPUT 链的规则
iptables 输出仅显示 INPUT 链的规则

上面输出的第一行显示了链名称(本例中为 INPUT)及其默认策略(DROP)。接下来的一行包含表格中每列的标题和该链的规则。我们将逐一讲解,帮助你全面了解:

  • 目标:如果数据包匹配规则,目标决定了对该数据包的处理方式。你可以选择接受、丢弃、记录数据包,或将其发送到另一条链进行进一步的规则匹配。
  • prot: 协议(例如 TCP、udp、ICMP 或 all)
  • opt: 表示 IP 选项(不常使用)
  • source: 显示流量的源 IP 地址/子网 
  • destination: 呈现流量的目标 IP 地址/子网

无标签列展示了规则的选项,即规则中未在前面列中指明的任何部分。这些信息可以是任何内容,从源端口和目标端口到数据包的连接状态。

另请阅读: 在 VPS 上安装 OpenVPN - OpenVPN 客户端设置 🔑

如何显示数据包计数和聚合大小?

列出 iptables 规则时,我们可以显示匹配每条规则的数据包数量和这些数据包的总字节数。这对于了解哪些规则匹配了数据包很有帮助。你需要使用 -L选项一起使用来完成 这个。

下面是一个例子,我们将再次使用 INPUT 链,并加上 -v 选项:

sudo iptables -L INPUT -v

显示数据包计数和总大小
显示数据包计数和总大小的输出

注意我们的列表现在多了两列,分别命名为 pkts bytes我们已经学过了各种查看 iptables 规则的方法,现在是时候掌握如何重置数据包计数和聚合大小了。

如何重置数据包计数和聚合大小?

如果你需要清晰的或零化的数据包和字节计数器来追踪规则,必须使用 -Z 选项。重启后计数器也会重置,这对于检查服务器是否接收到与现有规则匹配的新流量很有用。

你可以使用以下方式清除所有链和规则的计数器 -Z选项 单独地:

sudo iptables -Z

要清除特定链中所有规则的计数器,必须使用 -Z 选项并指定该链。例如,以下命令用于清除 INPUT 链的计数器:

sudo iptables -Z INPUT

如果要清除特定规则的计数器,必须准确指定链名称和规则编号。例如,可以执行以下命令来将 INPUT 链中第一条规则的计数器清零:

sudo iptables -Z INPUT 1

除了掌握 iptables 显示所有规则的命令和重置数据包与字节计数器的方法,还需要了解如何删除 iptables 规则。

另请阅读: 如何在 VPS 上安装 PPTP VPN 服务器

如何删除 iptables 规则?

您可以使用多个命令来删除 Iptables 规则,甚至删除链中的所有规则。下面我们来讨论这些方法。

按规范删除规则

删除 iptables 规则的一种方法是通过规则规范来执行。它使您能够运行带有规则规范的 iptables 命令。 -D 选项 如果您想使用此技术删除规则,可以利用规则列表的输出 iptables -S 来获得帮助。

例如,要删除丢弃无效传入数据包的规则(-A INPUT -m conntrack –ctstate INVALID -j DROP),可以执行以下命令:

sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP

注意 -A 选项用于在创建时指示规则位置,在这里应该省略。

按链和编号删除规则

删除 iptables 规则的另一种方法是通过其链和行号。输入以下命令来选择规则的行号,以表格格式列出规则,并添加 –line-numbers 选项:

sudo iptables -L --line-numbers

按链和编号删除规则
按链和数字删除规则的输出

运行此命令后,所有 iptables 规则都有其行号,由 num 标题显示。

当您知道要删除的规则后,请记住其链和行号。您必须使用 iptables -D 命令,并指定链和规则号。例如,如果您想删除丢弃无效数据包的输入规则,您可以看到它是 INPUT 链的第 3 条规则。因此运行此命令:

sudo iptables -D INPUT 3

如何清空链?

有一种方法可以删除链中的所有 Iptables 规则,我们称之为 清空链。下面我们来介绍完成此操作的各种方法。在继续之前,请注意在刷新默认策略为 drop 或 deny 的链时,不要被 SSH 锁定在服务器外。因为如果您这样做,可能需要通过控制台连接来修复您的访问权限。

刷新单个链

要刷新特定链,或换句话说,删除链中的所有规则,您可以使用 -F 或等价物 --flush 选项 和所选链的名称。假设您要删除 INPUT 链中的所有规则,该怎么办?很简单,运行以下命令:

sudo iptables -F INPUT

刷新所有链

要删除所有链或刷新它们,可以单独使用 -F 选项或等效的 –flush 选项:

sudo iptables -F

如何清空所有规则、删除所有链并接受所有流量?

在这一点上,我们将描述如何刷新所有防火墙规则、表和链,并允许所有网络流量。请注意此过程将有效地禁用防火墙。因此,只有在您想从头开始配置防火墙时,才应该按照本部分进行操作。

首先,您需要将每个内置链的默认策略设置为 ACCEPT。我们这样做的主要原因是确保您不会被 SSH 锁定在服务器外:

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

然后,您需要刷新 nat 和 mangle 表,刷新所有链 (-F),并删除所有非默认链 (-X) 像这样:

sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

运行完前面的命令后,防火墙将允许所有网络流量。如果您现在要列出规则,您会看到没有规则;只有三个默认链(如 INPUT、FORWARD 和 OUTPUT 链)保持不变。

如何在 Ubuntu 中配置 iptables?

与任何基本防火墙行为一样,iptables 规则按照每个链上列出的顺序读取,这意味着您必须按正确的顺序设置规则。追加新规则后,它们将被添加到规则列表的末尾。您可以通过以下方式将新规则插入到特定列表位置: iptables -I <index> -command。<index> 是此命令中您希望插入规则的顺序号。您可以使用以下命令来了解要输入的索引号:

sudo iptables -L --line-numbers

每条规则行开头的数字表示该规则在链中的位置。如果要在某条现有规则上方添加新规则,需要使用该现有规则的索引号。例如,如果要在链的最顶部添加新规则,需要使用以下命令,索引号为 1:

sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

iptables 和 firewalld 有什么区别?

iptables 和 firewalld 都是在各种 Linux 系统上管理防火墙的实用工具,它们专门用于数据包过滤(静态过滤)。数据包过滤是一种防火墙策略,允许用户通过管理进出的数据包来控制对特定网络的访问。根据预设的防火墙规则(涉及源地址、目标地址、协议和端口以及 IP 地址),这些工具可以允许数据包通过或将其阻止。这些规则提供了高效的安全机制,使数据包过滤成为防御来自系统局域网(LAN)外部路由设备的有力防线。

需要注意的是,firewalld 最初是作为管理 iptables 的工具而引入的,目的是简化用户的操作体验。既然我们已经介绍了 firewalld 和 iptables,接下来就详细对比一下两者。

iptables 与 firewalld:系统配置对比

firewalld 和 iptables 使用不同的配置和默认存储方式。使用 iptables 时,每次修改都要清除所有旧规则并加载新规则,系统必须重启。而 firewalld 不会重新生成规则,它直接将差异和修改应用到现有规则上,让你可以在运行时立即看到效果。

iptables 和 firewalld:用户界面

Firewalld 提供图形界面 (GUI),而 iptables 使用命令行界面 (CLI)。对于某些人来说,用 iptables 访问 Linux 内核防火墙规则可能比较困难,这让 firewalld 成为更直接的选择。不过需要注意的是,iptables 因为使用短命令所以响应速度更快。两者各有所长,选择你更熟悉的工具即可。

最后总结:iptables 显示规则

Iptables 是专为 Linux 操作系统设计的高度灵活的防火墙工具。无论你是初学者还是专业系统管理员,iptables 规则都能为你提供帮助。本文介绍了这个防火墙工具的基本命令,包括查看和删除 iptables 规则,旨在简要展示 Linux 的防火墙功能。此外,你还可以使用我们的 Linux VPS 托管解决方案 充分发挥这个优秀操作系统的真正潜力。Cloudzy 提供多款基于 KVM 的 Linux VPS 方案,适用于网站托管、部署网络应用,以及搭建代码开发、测试和自动化环境等多种场景。

常见问题

如何按规范列出 Linux iptables 的所有规则?

如果你想列出所有当前活跃的 iptables 规则,可以用 iptables 命令后跟 -S 标志。请注意充分利用 sudo 在这种情况下的关键词:

sudo iptables -S

如何删除 iptables 规则?

要删除特定的链(这会删除该链中的所有规则),你需要 使用 -F 或 --flush 选项,后跟链名称。 假设我们要删除 OUTPUT 链中的所有规则,该怎么办?执行这条命令就行:

 sudo iptables -F OUTPUT

iptables 在 Ubuntu 中如何工作?

iptables 防火墙根据一组规则对网络流量进行检查。这些规则定义了数据包需要匹配的特征,以及匹配时应该采取的操作。当然,你可以灵活配置规则的匹配条件,以捕获特定的数据包。

iptables 规则是否立即生效?为什么?

是的,iptables 规则立即生效。因为你的脚本是在 INPUT 和 OUTPUT 链末尾追加规则,新规则被添加到这些链的最后。

分享

博客更新

继续阅读。

MikroTik L2TP VPN 指南的 Cloudzy 标题图像,展示笔记本电脑通过发光的蓝色和金色数字隧道连接到服务器机架,并配有盾牌图标。
安全与网络

MikroTik L2TP VPN 设置(含 IPsec):RouterOS 指南(2026)

在这个 MikroTik L2TP VPN 设置中,L2TP 处理隧道,IPsec 处理加密和完整性验证。将两者结合使用可以获得原生客户端兼容性,无需第三方工具。

瑞克莎塞勒斯瑞克莎塞勒斯 9分钟阅读
终端窗口显示 SSH 警告信息,提示远程主机标识已更改。深蓝绿色背景上显示修复指南标题和 Cloudzy 品牌标识。
安全与网络

警告:远程主机标识已更改及修复方法

SSH 是一种安全网络协议,可在系统之间创建加密隧道。在需要远程访问计算机但无需图形界面的开发者中仍然广泛使用。

瑞克莎塞勒斯瑞克莎塞勒斯 10 分钟阅读
DNS 服务器故障排查指南插图,深色背景上显示警告符号和蓝色服务器,用于 Linux 名称解析错误。
安全与网络

名称解析临时失败:含义和修复方法?

使用 Linux 时,在尝试访问网站、更新软件包或执行需要网络连接的任务时,可能会遇到名称解析临时失败错误。

瑞克莎塞勒斯瑞克莎塞勒斯 12 分钟阅读

准备好部署了吗? 从 $2.48/月 起

独立云服务,始于2008年。AMD EPYC、NVMe,40 Gbps。14天退款保障。