Linux防火墙firewalld规则配置从入门到实战

准备:检查firewalld服务状态和区域

在开始配置firewalld规则之前,先确认你的系统是否已经安装并运行了firewalld。
大多数CentOS 7/8和RHEL系统默认都带有这个防火墙服务。
打开终端(可以直接用SSH连接服务器控制台),依次执行以下命令:

systemctl status firewalld

如果看到 active (running) 的绿色字样,说明服务已启动。
如果显示 inactive 或 dead,需要先启动服务并设置开机自启:

systemctl start firewalld
systemctl enable firewalld

下面查看当前默认区域(zone)。
firewalld 通过区域管理不同的网络接口,常用区域有 public、internal、trusted 等。
默认区域通常是 public,我们大部分规则都加在这个区域:

firewall-cmd --get-default-zone

记住当前默认区域名称,后面添加规则时如果不指定区域,就会加到默认区域。

操作:添加、删除与查看firewalld规则的核心命令

1. 开放某个端口(例如开放Web服务8080端口)

firewall-cmd --zone=public --add-port=8080/tcp --permanent

参数说明:

  • --zone=public 指定区域,如果默认区域就是public可以省略。
  • --add-port=8080/tcp 表示开放TCP协议的8080端口。UDP协议则写 /udp
  • --permanent 表示永久生效,不加这条参数规则只会临时生效,重启后丢失。

添加完后必须重载防火墙才能让规则生效:

firewall-cmd --reload

2. 开放服务(如http、https、ssh)

firewalld 内置了很多常见服务的定义文件,用服务名比端口号更直观:

firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload

3. 查看已开放的规则

查看某个区域的所有开放端口和服务:

firewall-cmd --zone=public --list-all

输出中可以看到 ports 和 services 列表。
也可以只查看端口:

firewall-cmd --zone=public --list-ports

4. 移除一个规则

假如误开放了一个端口,可以这样删除:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

对于服务也是类似,将 --add-service 换成 --remove-service

避坑:注意防火墙规则被其他安全软件或服务覆盖

很多新手配置完firewalld规则后依然无法访问端口,可能踩了这几种坑:

  • 系统还有iptables服务:如果同时运行iptables和firewalld,规则可能冲突。建议只保留一个防火墙管理工具,停止iptables:systemctl stop iptables && systemctl disable iptables
  • 云平台安全组:阿里云、腾讯云等云服务器除了系统防火墙,还在控制台有“安全组”规则。如果安全组没放通对应端口,即使firewalld放通也访问不了。需要去云平台控制台检查入站/出站规则。
  • SELinux干扰:某些端口或服务被SELinux限制,可以用 ausearch -m avc -ts recent 查看是否有SELinux拒绝日志,临时关闭测试:setenforce 0。如果确认是SELinux问题,再调整策略。
  • 忘记reload:加了 --permanent 后必须执行 firewall-cmd --reload,或者重启服务才能生效。如果只是临时测试不加 --permanent 可以立即生效,但重启失效。

验证:测试配置是否生效

在服务器本地测试端口是否监听

netstat -tlnp | grep 8080

或者用 ss 命令:

ss -tlnp | grep 8080

看到 LISTEN 表示服务在监听。

从外部访问测试

在另一台电脑(或相同服务器的另一个终端)通过 telnet 或 curl 测试:

telnet 你的服务器IP 8080

或者用 curl:

curl http://你的服务器IP:8080

如果连接成功或返回页面内容,说明firewalld规则配置正确。
如果连接超时或拒绝,请回头检查云平台安全组和SELinux状态。

遇到问题时,可以查看防火墙日志帮助定位:

journalctl -u firewalld -f

实时显示firewalld日志,能看到被拒绝的连接记录。

总结

只要按照本文步骤检查服务状态、用正确的命令添加规则并重载、排查常见干扰因素,零基础用户也能顺利完成Linux防火墙firewalld规则配置。
如果后续需要更复杂的策略(比如限制来源IP、端口转发等),可以继续研究 --add-rich-rule 参数,不过日常开放服务端口已经足够。
建议将常用命令保存成脚本,方便快速部署新服务器。

分享到:
上一篇
Linux网络配置静态IP设置方法,详细步骤与避坑指南
下一篇
Linux定时任务Crontab高级用法
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意