一、前置说明
- 基于 CentOS 7+/RHEL 7+ 系统(默认 firewalld,非 iptables)。
- 所有命令需 root 权限(前缀
sudo或切换 root)。 - 端口协议:
tcp(SSH/HTTP)或udp(DNS),按需指定。
二、核心操作命令
1. 查看防火墙状态
systemctl status firewalld
- 输出
active (running)已启动;inactive (dead)未启动。
2. 启动防火墙(未激活时)
systemctl start firewalld
- 可选:开机自启(避免重启失效)
systemctl enable firewalld
3. 查看已开放端口
-
临时开放(重启防火墙失效):
firewall-cmd –list-ports -
永久开放(重启仍有效):
firewall-cmd –list-ports –permanent
4. 开放端口
-
临时开放(示例:223/tcp):
firewall-cmd –add-port=223/tcp
-
永久开放(示例:223/tcp):
firewall-cmd –add-port=223/tcp –permanent
-
批量开放(示例:8000-8080/tcp):
firewall-cmd –add-port=8000-8080/tcp –permanent
5. 关闭端口
-
临时关闭(示例:80/tcp):
firewall-cmd –remove-port=80/tcp
-
永久关闭(示例:80/tcp):
firewall-cmd –remove-port=80/tcp –permanent
6. 生效配置(关键步骤)
firewall-cmd --reload # 重载规则
systemctl restart firewalld # 重启防火墙确保生效
三、常见问题与注意事项
- 命令修正:原
firewll-cmd拼写错误→正确firewall-cmd。 - 端口开放后无法访问:
- 确认协议正确(UDP 端口需指定
udp); - 云服务器需同步开放安全组(阿里云 / 腾讯云等双重配置)。
- 关闭防火墙(不推荐):
systemctl stop firewalld && systemctl disable firewalld - 验证端口状态:
firewall-cmd –query-port=223/tcp # yes=开放,no=未开放
(注:文档部分内容可能由 AI 生成)