菜鸟科技网

iptables重启命令是什么?

操作目标 主要命令 (推荐, 适用于现代系统) 传统/备用命令
保存规则 sudo netfilter-persistent save sudo service iptables-persistent save (Debian/Ubuntu)
sudo /sbin/iptables-save > /etc/sysconfig/iptables (CentOS/RHEL 6)
重启服务 sudo systemctl restart iptables sudo service iptables restart
启用开机自启 sudo systemctl enable iptables sudo chkconfig iptables on (旧版)

详细说明和最佳实践

重启 iptables 服务

重启服务意味着让 iptables 守护进程重新加载当前内存中的规则,但不会改变已保存的规则文件

iptables重启命令是什么?-图1
(图片来源网络,侵删)

对于使用 systemd 的新系统 (如 Ubuntu 16.04+, Debian 8+, CentOS 7+, RHEL 7+)

这是目前最主流的方式。iptables 服务通常由 iptablesnetfilter-persistent 包提供。

# 重启 iptables 服务
sudo systemctl restart iptables
# 如果使用 netfilter-persistent (常见于 Ubuntu/Debian)
sudo systemctl restart netfilter-persistent

对于使用 SysVinit 的旧系统 (如 CentOS 6, RHEL 6)

这些系统使用 service 命令来管理服务。

sudo service iptables restart

保存 iptables 规则

这一点至关重要! 在你对 iptables 规则进行任何修改(如添加、删除、修改)后,这些规则默认只存在于内存中,一旦系统重启,所有未保存的规则都会丢失。

在重启服务或系统之前,务必先保存你的规则

iptables重启命令是什么?-图2
(图片来源网络,侵删)

对于使用 iptables-persistentnetfilter-persistent 的系统 (Debian/Ubuntu)

这是最简单、最推荐的方式,安装 iptables-persistent 时会提示你保存当前的 IPv4 和 IPv6 规则。

# 安装时保存规则
sudo apt-get install iptables-persistent
# 手动保存规则 (推荐)
sudo netfilter-persistent save

对于使用 service 的系统 (CentOS/RHEL 6)

在 CentOS/RHEL 6 中,规则通常保存在 /etc/sysconfig/iptables 文件中。

# 保存规则
sudo service iptables save

这个命令会执行 iptables-save 并将输出重定向到 /etc/sysconfig/iptables 文件。

手动保存规则 (通用方法)

如果你不想依赖服务脚本,也可以手动保存和恢复。

iptables重启命令是什么?-图3
(图片来源网络,侵删)
# 保存当前规则到文件
sudo iptables-save > /etc/iptables/rules.v4  # 保存 IPv4 规则
sudo ip6tables-save > /etc/iptables/rules.v6  # 保存 IPv6 规则
# 从文件恢复规则
sudo iptables-restore < /etc/iptables/rules.v4
sudo ip6tables-restore < /etc/iptables/rules.v6

注意: /etc/iptables/rules.v4/etc/iptables/rules.v6iptables-persistent 默认使用的文件路径。


完整的工作流程示例

假设你刚刚修改了一条防火墙规则,现在需要让它永久生效并立即生效。

  1. 添加/修改规则

    # 示例:允许来自 192.168.1.100 的 SSH 访问
    sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
  2. 查看规则确认

    sudo iptables -L -n -v
  3. 保存规则 (这是最关键的一步!)

    • 在 Ubuntu/Debian 上:

      sudo netfilter-persistent save
    • 在 CentOS/RHEL 7+ 上:

      # 安装并启用服务
      sudo yum install iptables-services
      sudo systemctl enable iptables
      # 保存规则
      sudo service iptables save
    • 在 CentOS/RHEL 6 上:

      sudo service iptables save
  4. 重启服务 (确保新加载的规则是最新保存的)

    # 现代系统
    sudo systemctl restart iptables
    # 或旧系统
    sudo service iptables restart

常见问题

Q: 为什么我重启系统后,iptables 规则又没了? A: 因为你只修改了内存中的规则,但没有将它们保存到硬盘上,请务必在修改后执行 保存规则 的命令。

Q: sudo systemctl restart iptables 提示 "Failed to restart iptables.service: Unit iptables.service not found." 怎么办? A: 这说明你的系统上没有安装 iptables 服务包,在基于 Debian/Ubuntu 的系统上,可以安装 iptables-persistent;在基于 RHEL/CentOS 的系统上,可以安装 iptables-services

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install iptables-persistent
# CentOS/RHEL
sudo yum install iptables-services
sudo systemctl enable iptables

Q: iptablesfirewalld 有什么区别? A: 它们是 Linux 上两个不同的防火墙管理工具。

  • iptables 是传统的、功能强大的工具,直接操作内核中的 netfilter 框架,规则是静态的,修改后需要手动保存和加载。
  • firewalld (CentOS/RHEL 7+, Fedora, openSUSE) 是一个更动态的管理器,它支持“区域”(zones)和“运行时/永久”规则,无需重启即可应用大部分更改,更易于管理。

在 CentOS/RHEL 7+ 等系统上,默认是 firewalld,如果你习惯使用 iptables,可以先停用 firewalld

# 停用并禁用 firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 然后安装并启用 iptables
sudo yum install iptables-services
sudo systemctl enable iptables
sudo systemctl start iptables
分享:
扫描分享到社交APP
上一篇
下一篇