如何在 Linux 上重启后使 iptables 保持永久不变

Linux 系统上的 iptables 防火墙是一个非常有用的功能,它允许系统管理员精确地控制系统允许或拒绝哪些网络流量。

经验丰富的 Linux 管理员可能知道系统重新启动完全清除系统的 iptables 规则所带来的挫败感和痛苦。这是因为默认情况下 iptables 规则在重新启动后不会保留。配置系统的 iptables 规则后,您必须执行一个更重要的步骤,以确保规则在重新启动后仍然存在。

在本教程中,您将了解如何在所有主要 Linux 发行版(包括基于 DEB 和 RPM 的系统)上重新启动后使 iptables 规则保持不变。

在本教程中您将学习:

  • 如何在 DEB 发行版上安装 iptables-persistent 包

  • 如何在 RPM 发行版上安装 iptables-services 包

  • 如何使用 iptables-save 命令使规则在重启后仍然保留

  • 如何删除已保存的规则

如何在 Linux 上重启后使 iptables 规则保持不变 分步说明

你知道吗?
一些 iptables 前端,例如基于 Red Hat 的系统的 firewalld 和基于 Ubuntu 的系统的 ufw,将自动为您保存您的规则,即使重新启动后它们也会保留。

在继续之前,请确保您已在系统上配置了一些规则。特别是,本教程假设您已使用 iptables 配置规则,而不是使用 firewalld 或 ufw 等前端防火墙应用程序。

要查看系统上的规则,您可以使用以下 iptables 命令。

$ sudo iptables -L

根据您使用的 Linux 发行版,请按照下面的正确部分操作以保存您配置的 iptables 规则。

注意
基于 DEB 的系统是 Debian、Ubuntu、Linux Mint 和其他衍生版本等发行版。 基于 RPM 的系统包括 Red Hat、Fedora、CentOS、AlmaLinux、Rocky Linux 和其他基于 Red Hat 的发行版。这也包括 openSUSE。

在基于 DEB 的系统上保存 iptables 规则

  1. 为了使您的 iptables 规则在重新启动后保持不变,请使用 apt 软件包管理器安装 iptables-persistent 软件包:

    $ sudo apt install iptables-persistent
    

    当前建立的任何 iptables 规则都将保存到以下相应的 IPv4 和 IPv6 文件中:

    /etc/iptables/rules.v4
    /etc/iptables/rules.v6
    
  2. 要使用新规则更新持久 iptables,只需使用 iptables 命令将新规则包含到您的系统中。要使更改在重新启动后永久生效,请运行 iptables-save 命令:

    $ sudo iptables-save > /etc/iptables/rules.v4
    OR
    $ sudo ip6tables-save > /etc/iptables/rules.v6
    
  3. 要删除持久性 iptables 规则,只需打开相关的 /etc/iptables/rules.v* 文件并删除包含所有不需要的规则的行。

在基于 RPM 的系统上保存 iptables 规则

  1. 为了使您的 iptables 规则在重新启动后保持不变,请使用 dnf 包管理器安装 iptables-services 包:

    $ sudo dnf install iptables-services
    

    当前建立的任何 iptables 规则都将保存到以下相应的 IPv4 和 IPv6 文件中:

    /etc/sysconfig/iptables
    /etc/sysconfig/ip6tables
    
  2. 确保禁用 firewalld 并启用 systemd 中的 iptables 服务。

    $ sudo systemctl stop firewalld
    $ sudo systemctl disable firewalld
    $ sudo systemctl start iptables
    $ sudo systemctl enable iptables
    

    然后,您可以使用以下命令确保该服务正在运行:

    $ sudo systemctl status iptables
    
  3. 要使用新规则更新持久 iptables,只需使用 iptables 命令将新规则包含到您的系统中。要使更改在重新启动后永久生效,请运行 iptables-save 命令:

    $ sudo iptables-save > /etc/sysconfig/iptables
    OR
    $ sudo ip6tables-save > /etc/sysconfig/ip6tables
    
  4. 要删除持久性 iptables 规则,只需打开相关的 /etc/sysconfig/iptables 或 /etc/sysconfig/ip6tables 文件并删除包含所有不需要的规则的行。

计算机