在Linux系统中,防火墙是保障服务器安全的重要组件,重启防火墙是常见的管理操作,通常用于应用新规则、解决服务异常或临时关闭/开启防火墙,不同Linux发行版使用的防火墙工具不同,以下是主流场景下的重启命令及注意事项。

基于systemd的防火墙服务(CentOS 7+/RHEL 7+/Fedora等)
这些系统默认使用firewalld作为防火墙管理工具,可通过systemctl控制服务状态,重启命令需分两步:先停止旧服务,再启动新服务,确保规则完全重新加载,具体操作为:
sudo systemctl stop firewalld # 停止防火墙服务 sudo systemctl start firewalld # 启动防火墙服务
或使用restart命令合并执行(部分版本可能因服务依赖导致重启不完全,推荐分步操作):
sudo systemctl restart firewalld
重启后,可通过firewall-cmd --state检查状态,或sudo firewall-cmd --list-all查看当前规则,若需开机自启,需确保sudo systemctl enable firewalld已执行。
基于iptables的服务(CentOS 6/Debian 7及更早版本)
旧版系统多使用iptables,其服务通常由iptables-service包提供,重启命令为:

sudo service iptables restart
或通过systemctl(若已升级systemd):
sudo systemctl restart iptables
重启后,使用sudo iptables -L -n验证规则是否生效,注意:iptables规则默认不保存,需手动执行sudo service iptables save(CentOS)或iptables-save | sudo tee /etc/iptables/rules.v4(Debian)持久化配置。
nftables(Ubuntu 20.04+/Debian 10+)
新版Ubuntu和Debian默认使用nftables替代iptables,服务名为nftables,重启命令:
sudo systemctl restart nftables
规则可通过sudo nft list ruleset查看,配置文件位于/etc/nftables.conf,修改后需重启或执行sudo nft -f /etc/nftables.conf重新加载。

通用注意事项
- 权限要求:所有命令需root权限或通过
sudo执行。 - 规则备份:重启前建议备份当前规则,例如
sudo iptables-save > backup.iptables或sudo firewall-cmd --list-all > firewall_backup.txt,避免误操作导致服务中断。 - 服务依赖:若防火墙依赖其他服务(如Docker、NetworkManager),需确保相关服务正常运行,否则可能重启失败。
- 临时关闭:若需临时关闭防火墙(如调试),使用
sudo systemctl stop firewalld或sudo service iptables stop,完成后务必及时重启恢复安全策略。
不同防火墙工具重启命令对比
| 防火墙工具 | 适用系统 | 重启命令 | 检查状态命令 |
|---|---|---|---|
| firewalld | CentOS 7+/RHEL 7+ | sudo systemctl restart firewalld |
firewall-cmd --state |
| iptables | CentOS 6/旧版Debian | sudo service iptables restart |
sudo iptables -L -n |
| nftables | Ubuntu 20.04+/Debian 10+ | sudo systemctl restart nftables |
sudo nft list ruleset |
相关问答FAQs
Q1: 重启防火墙会导致已建立的连接断开吗?
A1: 通常不会,防火墙重启主要影响新连接的规则匹配,已建立的连接(ESTABLISHED状态)在iptables/firewalld中默认会被保留,但若规则中明确终止相关连接(如--state ESTABLISHED被删除),则可能受影响,建议生产环境操作前测试。
Q2: 为什么执行firewalld restart后规则未生效?
A2: 可能原因包括:① 未使用sudo权限;② 规则未永久化(仅临时规则在重启后丢失);③ 服务未完全启动(可通过sudo systemctl status firewalld检查日志),解决方法:确保规则通过--permanent参数添加,并执行sudo firewall-cmd --reload(软重载)或重启服务。
