firewalld通过区域管理防火墙规则,使用firewall-cmd配置服务端口与区域绑定,需加--permanent并reload生效。

在Linux系统中使用firewalld管理防火墙时,开放服务端口和配置区域是保障服务正常对外提供访问的关键步骤。firewalld通过“区域(zone)”的概念来管理不同网络环境下的规则,灵活且易于维护。
firewalld基本概念
firewalld将网络接口划分到不同的区域(zone)中,每个区域定义了允许的服务、端口和规则。常见区域包括:
- public:默认区域,适用于公共网络,仅开放少量服务
- internal:内部网络,信任度较高
- trusted:完全信任的网络,允许所有流量
- dmz:用于对外提供服务的隔离区
每个区域可绑定网络接口或作为默认区域使用。
查看当前区域和状态
确认firewalld是否运行:
systemctl status firewalld查看当前激活的区域和接口:
firewall-cmd --get-active-zonesfirewall-cmd --get-default-zone
列出当前区域的配置:
firewall-cmd --zone=public --list-all开放服务或端口
可以根据服务名或具体端口开放访问:
- 开放常用服务(如HTTP):
firewall-cmd --zone=public --add-service=http --permanent - 开放自定义端口(如8080/tcp):
firewall-cmd --zone=public --add-port=8080/tcp --permanent - 开放端口范围(如10000-10100/udp):
firewall-cmd --zone=public --add-port=10000-10100/udp --permanent
--permanent 参数确保规则在重启后仍有效。添加后需重载防火墙:
firewall-cmd --reload为特定接口配置区域
若希望某网络接口使用特定安全策略,可将其绑定到指定区域:
- 将网卡enp1s0分配给dmz区域:
firewall-cmd --zone=dmz --change-interface=enp1s0 --permanent - 设置默认区域(新连接的默认策略):
firewall-cmd --set-default-zone=internal
配置后执行 reload 使变更生效。
验证端口是否开放
检查已开放的服务和端口:
firewall-cmd --zone=public --list-servicesfirewall-cmd --zone=public --list-ports
也可使用 netstat 或 ss 查看服务监听状态:
ss -tuln | grep :8080基本上就这些。合理使用区域和端口规则,既能保证服务可用,又能控制安全边界。配置时注意永久选项和重载操作,避免规则丢失。










