CentOS7 也就是 linux7 系统默认防火墙服务名称是 firewalld,不再使用旧版本 iptables 作为默认防火墙服务,关闭防火墙分为临时关闭和永久关闭两种方式,临时关闭只是本次运行生效,系统重启之后防火墙会自动重新开启,永久关闭是把 firewalld 服务设置成开机不启动,重启之后依然保持关闭状态,很多运维新手只做临时关闭,重启之后发现防火墙又自动起来,业务端口依旧不通,这个是最常见踩坑点,执行命令必须使用 root 权限,普通用户要加 sudo 或者切换 root 账号,不然会提示权限不足,同时要清楚关闭防火墙会降低系统安全防护,生产环境一般不建议直接全部关闭,优先选择放行指定端口,只有测试环境才会直接关闭防火墙。
核心命令对照表
| 操作类型 | 命令 | 说明 |
|---|---|---|
| 临时关闭防火墙 | systemctl stop firewalld | 当前立刻停止,重启失效 |
| 永久关闭防火墙 | systemctl disable firewalld | 禁止开机自启 |
| 查看防火墙状态 | systemctl status firewalld | 查看当前是否运行 |
| 临时开启防火墙 | systemctl start firewalld | 重新启动防火墙服务 |
| 永久开启防火墙 | systemctl enable firewalld | 设置开机自启 |
完整操作步骤
第一步切换 root 账号,或者在命令前面添加 sudo 获取管理员权限
第二步执行临时关闭命令 systemctl stop firewalld
第三步执行永久关闭命令 systemctl disable firewalld
第四步执行状态查询命令 systemctl status firewalld,确认显示 inactive 也就是未运行,并且没有开机自启标记
第五步如果需要重启系统验证,重启之后再次执行状态查询,确认防火墙没有自动启动
深度补充说明
CentOS7 的 firewalld 底层依然调用 iptables 规则,只是上层增加了管理框架,很多老运维习惯使用 iptables 命令,但是默认 firewalld 服务接管规则,单纯操作 iptables 之后,firewalld 重启会覆盖原有规则,所以关闭防火墙优先操作 firewalld 服务本身。
如果不想完全关闭防火墙,推荐替代方案,使用 firewall-cmd 命令放行端口,例如放行 80 端口,执行 firewall-cmd add port 80 tcp permanent,然后 reload 重载规则,这种方式保留防火墙安全能力,只开放业务端口,比直接关闭防火墙更加安全。
注意事项
关闭防火墙之后,系统所有端口对外暴露,容易遭受扫描攻击,公网服务器不推荐直接关闭,内网测试环境可以临时关闭,做完测试建议重新开启防火墙。
【常见问题】
问题 1 linux7 中怎么关闭防火墙只执行 stop 为什么重启又打开
回答 1 linux7 中怎么关闭防火墙,systemctl stop 只是临时关闭,没有关闭开机自启,重启之后 firewalld 会自动启动,必须额外执行 disable 命令永久关闭。
问题 2 linux7 中怎么关闭防火墙是不是直接操作 iptables 就可以
回答 2 linux7 中怎么关闭防火墙默认是 firewalld 服务,单纯操作 iptables 不能彻底关闭,firewalld 重启会重置规则,正确方式是停止 firewalld 服务。
问题 3 linux7 中怎么关闭防火墙之后怎么恢复开启
回答 3 linux7 中怎么关闭防火墙之后想要恢复,执行 systemctl start firewalld 临时开启,再执行 systemctl enable firewalld 设置开机自启。
【免责申明】
本内容基于 CentOS7 firewalld 标准操作讲解,关闭防火墙存在安全风险,生产环境请谨慎操作,具体以系统官方文档为准,内容仅供运维学习参考。


